mayiant1 发表于 2012-11-11 20:55:12

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

本帖最后由 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在转快时,有时不变化。请教各位帮忙看看

yklstudent 发表于 2012-11-11 21:24:13

好个非主流 不走寻常路

mayiant1 发表于 2012-11-11 21:57:55

不好意思刚入门bascom,能看懂一点VB,C怎么也入不了门。唉,悲催
页: [1]
查看完整版本: 请教一下BASCOM的旋转编码器的用法?