基于CH372的单片机波形采集程序
;***********判断输入端***********
TIM:CJNER2,#0F1H,TI1
AJMPWTT
TI1:CJNER2,#0F2H,TI2
AJMPUTT
TI2:CJNER2,#0F0H,AML
;***********数据采集1红外输入************
CT:JNBGET,QH_1
JBP3.7,CT
SETBTR0
THO:JNBP3.7,$
CLRTR0
MOVA,TH0
MOVR1,TL0
MOVTL0,#01H
MOVTH0,#00H
SETBTR0
MOV@R0,A
INCR0
MOVA,R1
MOV@R0,A
JBP3.7,$
CLRTR0
MOVA,TH0
MOVR1,TL0
MOVTL0,#01H
MOVTH0,#00H
SETBTR0
INCR0
MOV@R0,A
INCR0
MOVA,R1
MOV@R0,A
INCR0
DJNZR7,THO
CLRTR0
AJMPFZCX
QH_1:AJMPJSCS
;***********数据采集2无线输入************
WTT:JNBGET,QH_2
JBP3.6,WTT
SETBTR0
THA:JNBP3.6,$
CLRTR0
MOVA,TH0
MOVR1,TL0
MOVTL0,#01H
MOVTH0,#00H
SETBTR0
MOV@R0,A
INCR0
MOVA,R1
MOV@R0,A
JBP3.6,$
CLRTR0
MOVA,TH0
MOVR1,TL0
MOVTL0,#01H
MOVTH0,#00H
SETBTR0
INCR0
MOV@R0,A
INCR0
MOVA,R1
MOV@R0,A
INCR0
DJNZR7,THA
CLRTR0
AJMPFZCX
QH_2:AJMPJSCS
;************数据采集3外部输入************
UTT:JNBGET,QH_2
JBP3.5,UTT
SETBTR0
THB:JNBP3.5,$
CLRTR0
MOVA,TH0
MOVR1,TL0
MOVTL0,#01H
MOVTH0,#00H
SETBTR0
MOV@R0,A
INCR0
MOVA,R1
MOV@R0,A
JBP3.5,$
CLRTR0
MOVA,TH0
MOVR1,TL0
MOVTL0,#01H
MOVTH0,#00H
SETBTR0
INCR0
MOV@R0,A
INCR0
MOVA,R1
MOV@R0,A
INCR0
DJNZR7,THB
CLRTR0
;*************数据发送***********
FZCX:MOVR7,#122
MOVR0,#08H
ZDDS:MOVA,#2AH;CH372中断命令通知PC机
ACALLXML
NOP
NOP
MOVA,#02H;可输入8个字节
ACALLXSJ
MOVA,@R0;送入要上传的数据
ACALLXSJ
INCR0
MOVA,@R0;送入要上传的数据
ACALLXSJ
INCR0
ACALLFYL
MOVA,#22H;接受中断数据
ACALLXML
ACALLDSJ
ACALLFYL
ACALLINO
DJNZR7,ZDDS
MOVR0,#08H
MOVR7,#61
AJMPJSCS
;********CH372读出数据**********
OUT2:MOVA,#28H;读端口2的命令
ACALLXML
ACALLDSJ
NOP
ACALLDSJ
NOP
RET
;****************
OUT1:NOP
PEND:NOP
LEEP:NOP
AJMPAMIT
;******释放缓冲区子程序*****
INO:MOVA,#2BH;释放当前USB缓冲区
ACALLXML
NOP
NOP
RET
;*******写入数据子程序*******
XSJ:CLRA0;写入数据
NOP
NOP;延时2US,根据主频来确定NOP的值
MOVP2,A
NOP
NOP;50NS就可以
SETBDX
NOP
NOP;延时1.2US根据主频调整
RET
;*********延时子程序******
DYL:MOVR6,#100
D1:MOVR5,#50
DJNZR5,$
DJNZR6,D1
RET
FYL:MOVR6,#2
FD1:MOVR5,#68
DJNZR5,$
DJNZR6,FD1
RET
END本文引用地址:https://www.eepw.com.cn/article/201611/323821.htm
评论