?? 讀光柵尺信號.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 + -