📄 读光栅尺信号.asm
字号:
org 0000H
AJMP Mystart
ORG 0030H
Mystart:
mov r0,P1 ;首次读入光栅尺TTL电平信号,放入a,信号A接P1。0/2/4/,信号B接P1。1/3/5/.
mov 0x20,0x00 ;//定义0x20~0x23为尺1foot1的地址,0x20为低字节,0x23为高字节
mov 0x21,0x00
mov 0x22,0x00
mov 0x23,0x00
mov 0x24,0x00
mov 0x25,0x00
mov 0x26,0x00
mov 0x27,0x00
mov 0x28,0x00
mov 0x29,0x00
mov 0x2A,0x00
mov 0x2B,0x00
mov 0x2C,0x00
mov 0x2D,0x00
mov 0x2E,0x00
mov 0x2E,0x00
ChaiJi:
mov r1,P1 ;开始采集信号
mov a,r1
xrl a,r0
mov r2,a
anl a,#0x03
jz labfoot2 ;//A为0则跳labfoot2
labfoot1:
mov a,r0
rr a
xrl a,r1
anl a,#0x01
jnz foot1add ;//a=0>foot1=foot1+1
mov a,#0x01
addc a,0x20
mov 0x20,a
foot1add:
mov a,0x20
subb a,#0x01
mov 0x20,a
labfoot2:
mov a,r2
anl a,#0x0c
jz labfoot3 ;//A为0则跳labfoot3
mov a,r0
rr a
xrl a,r1
anl a,#0x04
jnz foot2add ;//a=0>foot2=foot2+1
mov a,#0x01
addc a,0x24
mov 0x24,a
foot2add:
mov a,0x24
subb a,#0x01
mov 0x24,a
labfoot3:
mov a,r2
anl a,#0x30
jz labfoot4 ;//A为0则跳labfoot4
mov a,r0
rr a
xrl a,r1
anl a,#0x10
jnz foot3add ;//a=0>foot3=foot3+1
mov a,#0x01
addc a,0x28
mov 0x28,a
foot3add:
mov a,0x28
subb a,#0x01
mov 0x28,a
labfoot4:
mov a,r2
anl a,#0xc0
jz Zhiold ;//A为0则跳Zhiold
mov a,r0
rr a
xrl a,r1
anl a,#0x40
jnz foot4add ;//a=0>foot4=foot4+1
mov a,#0x01
addc a,0x2C
mov 0x2C,a
foot4add:
mov a,0x2C
subb a,#0x01
mov 0x2C,a
Zhiold:
mov a,r1 ;现采信号作旧信号,待重新采集
mov r0,a
xian: ;//显示
;setb rs0 ;debug用
;clr rs0 ;debug用
;mov r5,a
;mov a,0x20
;mov a,r5
mov a,#0xC0
cjne a,0x30,zhi
mov p2,0x01 ;数码管使能
mov a,r0 ;保护r0到r3
mov r3,a
mov a,0x20
anl a,#0x0F
add a,#0x30
mov r0,a
mov a,@r0
mov p0,a
mov a,r3 ;恢复r0
mov r0,a
ljmp ChaiJi
zhi:
mov 0x30,#0xC0 ;//数码管定义
mov 0x31,#0xF9
mov 0x32,#0xA4
mov 0x33,#0xB0
mov 0x34,#0x99
mov 0x35,#0x92
mov 0x36,#0x82
mov 0x37,#0xF8
mov 0x38,#0x80
mov 0x39,#0x90
mov 0x3A,#0x88
mov 0x3B,#0x83
mov 0x3C,#0xC6
mov 0x3D,#0xA1
mov 0x3E,#0x86
mov 0x3F,#0x8E
ljmp ChaiJi
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -