📄 test.asm
字号:
AD_DA bit P2.3 ;ADC的数据线
AD_CS bit P2.4 ;ADC的/CS线
AD_CLock bit P2.5 ;ADC的时钟线
AD_Staly bit 08h ;标志位
?PR?_AD_Read?_AD_Read SEGMENT CODE
?PR?AD_temp?_AD_Read SEGMENT DATA
PUBLIC AD_Data,AD_Data_h,AD_Data_l,AD_Comp
RSEG ?PR?AD_temp?_AD_Read
AD_Data: DS 1 ;AD转换的结果存放在此
AD_Comp: DS 1
AD_Data_h: DS 1 ;扫描管子得到的数据,并发往主控CPU显示以调试
AD_Data_l: DS 1 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~低8位
PUBLIC AD_Read
public _DData_To
public _DIV16
RSEG ?PR?_AD_Read?_AD_Read
AD_Read:
PUSH acc
push psw
mov r1,#08h
mov a,#00h
clr AD_Clock
clr AD_CS
call Delay01 ;;;延时可以再短一些
AD_Read1:
rl a
setb AD_Clock
nop
jb AD_DA,AD_Read_h
sjmp AD_Read_Next
AD_Read_h:
setb acc.0
AD_Read_Next:
clr AD_Clock
djnz r1,AD_Read1
mov AD_Data,a
mov r1,#02h
AD_Read3:
setb AD_Clock
nop
nop
clr AD_Clock
djnz r1,AD_Read3
setb AD_CS
clr AD_Clock
pop psw
POP acc
RET
; public Delay01
;;//========================================================================================//
;;//Program:延时程序
;;//2004年2月2日 小丑于哈工程 Robot实验室
;;//========================================================================================//
Delay01:
PUSH acc
mov acc,r1
PUSH acc
mov r1,#0afh
Delay02:
djnz r1,Delay02
POP acc
mov r1,acc
POP acc
ret
;;//========================================================================================//
;;//Program:阵列传感器位处理
;;//InPut:第一个参数(数组的指针)放在r7中,第二个参数(对比数值)放在r5中
;;//Output:AD_Data_l,AD_Data_h
;;//2004年2月2日 小丑于哈工程 Robot实验室 V1。0
;;//04年2月25日做第一次修改 调整16位的数据 V1。1
;;//========================================================================================//
_DData_To:
push acc
push psw
mov a,r7
mov r0,a
mov r1,#16;
DData_Loop:
clr c
mov a,AD_Data_l
rlc a
mov AD_Data_l,a
mov a,AD_Data_h
rlc a
mov AD_Data_h,a
mov a,@r0
cjne a,AD_Comp,Led_001 ;;;;;;;;;??????????#08h暂时用来作为AD转换后黑白线界限值
sjmp Led_000
Led_001:
jnc Led_high
Led_000:
mov a,AD_Data_l
clr acc.0
sjmp Led_Next
Led_high:
mov a,AD_Data_l
setb acc.0
Led_Next:
mov AD_Data_l,a
inc r0
djnz r1,DData_Loop
pop psw
pop acc
ret
;;十六位除八位子程序 C语言中调用,r7保存结果,r6存放余数
DIV16:
_DIV16: mov b,#8
div161: clr c
xch a,r7
rlc a
xch a,r7
xch a,r6
rlc a
xch a,r6
jc div163
mov a,r6
subb a,r5
mov r6,a
jnc div162
mov a,r6
add a,r5
mov r6,a
djnz b,div161
ret
div163:clr c
mov a,r6
subb a,r5
mov r6,a
div162:inc r7
djnz b,div161
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -