搜索
bottom↓
回复: 2

请教一下BASCOM的旋转编码器的用法?

[复制链接]

出0入0汤圆

发表于 2012-11-11 20:55:12 | 显示全部楼层 |阅读模式
本帖最后由 mayiant1 于 2012-11-11 20:59 编辑







$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.0 , Rs = Portd.2
Config Lcd = 16 * 2
'定义LED是16字符,2行

'   / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
'--------------定义数据-----------------------
Dim U As Bit , V As Bit , X As Long , Y As Single , A As Bit
Dim K As Byte , I As Bit , S As String * 10 , X1 As Long
    ' , M As Byte
'---------------初始化------------------
X = 0 : Y = 0 : I = 0
U = 0 : V = 0
Ddrd.3 = 0                                                  '按键初始化
   Ddrd.4 = 0
Portd.3 = 1
   Portd.4 = 1
Cls
Lcd "**//Wang.xm@**"
Wait 2
K = 0
'Locate 1 , 2 : Lcd "X=" ; X
'Locate 1 , 12 : Lcd "u=" ; U
'Locate 2 , 2 : Lcd "Y=" ; Y
'Locate 2 , 12 : Lcd "v=" ; V
'Waitms 20
'-------------------
Config Int1 = Low Level
On Int1 Test_1
'Tcon = 0                                                    '定义边沿触发方式,非常关键!!!!!
Enable Interrupts
Enable Int1

'Priority Set Int1            '定义中断

'On Urxc Rec_isr                                             '中断服务子程序的标号

'Enable Urxc                                                 '允许接收中断

'Enable Interrupts                                           ' 开放全局中断                                        '定义中断
'*********标定及显示*****************
  Cursor Off Noblink
   S22:
  Cls
  If X1 < X Then Y = Y + 1
  If X1 > X Then Y = Y - 1
  S = Fusing(y , "####.#######")
  Locate 1 , 2 : Lcd "X=" ; X
  Locate 1 , 12 : Lcd "K=" ; K
  Locate 2 , 2 : Lcd "Y=" ; Y ; "MM"
    Locate 2 , 12 : Lcd "u=" ; U
I = 1
                                                          '显示完成恢复标志
X1 = X
                                                        '显示完成恢复标志
  '------------主程序-----------
Do
   ' K = X \ 2500
    Y = Y
    If I = 0 Then Goto S22
                                                     '根据标志判断更新显示
    'Waitms 20
    Print X ; "*" ; K ; "*" ; Y
    Waitms 20
  Loop
'*******************
Return
Test_1:                                                     '编码器中断服务子程序入口
I = 0


Waitms 1                                                   '设置标志 也有稳定信号的作用
If U = 1 And Pind.4 = 1 Then X = X + 1
'荼嗦肫魇涑龅?个正交信号来判断,方向和加减计数。正交信号从P1.2 脚、 P1.3脚输入。  01 或者10数据有效,01是一个方向 10是反方向
If U = 0 And Pind.4 = 0 Then X = X - 1
K = Pind.3
U = Pind.4

Return




'Rec_isr:                                                    '中断服务子程序入口

'X = Udr                                                     '读取串口接收到的数据
'Enable Udre
'I = 0
'Return                                                      '中断返回



用的M8测试,EC11编码器,测试Y在转快时,有时不变化。请教各位帮忙看看

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-11-11 21:24:13 | 显示全部楼层
好个非主流 不走寻常路

出0入0汤圆

 楼主| 发表于 2012-11-11 21:57:55 | 显示全部楼层
不好意思刚入门bascom,能看懂一点VB,C怎么也入不了门。唉,悲催
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表