📄 toint.asm
字号:
START_T EQU 6BH
ORG 0000H
LJMP STRT0_TIM
org 0003h
CPL P1.7
LJMP INTORG
ORG 00BH
LJMP TO_STRT
ORG 100H
STRT0_TIM: MOV SP,#60H
MOV TMOD,#21H
MOV TL0,#0CBH
MOV TH0,#5EH
MOV 5EH,#08H
ORL IE,#82H
SETB EX0
SETB IT0
SETB TR0
mov a,#0FFh
CPL P1.4
WT_INTX:
CPL P3.3
lcall rec
mov a,040h
mov p1,a
SJMP WT_INTX
TO_STRT: CPL P1.5
DJNZ 5EH,COMP_T0
MOV TL0,#0CBH
MOV TH0,#5EH
MOV 5EH,#08H
LJMP TO_GOON2
COMP_T0: MOV TL0,#22H
MOV TH0,#11H
RETI
TO_GOON2: CPL P1.6
LCALL SEND
MOV TL0,#0CBH
MOV TH0,#5EH
MOV 5EH,#08H
SETB TR0
RETI
send:
MOV SCON,#50H;设置成串口1方式
MOV TMOD,#21H;波特率发生器T1工作在模式2上
MOV PCON,#80H;波特率翻倍为2400x2=4800BPS
MOV TH1,#0FAH;预置初值(按照波特率2400BPS预置初值)F3为2400 FA为4800 FD为9600
MOV TL1,#0FAH;预置初值(按照波特率2400BPS预置初值)
SETB TR1;启动定时器T1
;以上完成通讯初始化设置
MOV A,r0;将16进制的字符AF发送到串口去
MOV SBUF,A;将AF通过串口发送出去
MOV R0,#0FFH
cpl p1.7
RET
INTORG:
jnb p1.0,pp10
jnb p1.1,pp11
jnb p1.2,pp12
jnb p1.3,pp13
GOBACK:
;CLR A
;PUSH ACC
;PUSH ACC
reti
pp10:mov r0,#00h
lCALL DELAY10;延时10毫秒消触点抖动
JNB P1.0,$
LCALL SEND
LJMP GOBACK
pp11:
mov r0,#01h
lCALL DELAY10;延时10毫秒消触点抖动
JNB P1.1,$
LCALL SEND
LJMP GOBACK
pp12:
mov r0,#02h
ACALL DELAY10;延时10毫秒消触点抖动
JNB P1.2,$
LCALL SEND
LJMP GOBACK
pp13:
mov r0,#03h
ACALL DELAY10;延时10毫秒消触点抖动
SETB TR0
JNB P1.3,$
ACALL SEND
LJMP GOBACK
;10毫秒延时子程序
DELAY10:MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
REC:
MOV SCON,#50H;设置成串口1方式
MOV TMOD,#21H;波特率发生器T1工作在模式2上
MOV PCON,#80H;波特率翻倍为2400x2=4800BPS
MOV TH1,#0FAH;预置初值(按照波特率2400BPS预置初值)F3为2400 FA为4800 FD为9600
MOV TL1,#0FAH;预置初值(按照波特率2400BPS预置初值)
SETB TR1;启动定时器T1
;以上完成通讯初始化设置
MOV R0,#40H
MOV R7,#10H
RDS:
SETB REN
WAIT: JBC RI,REND
sjmp wait
REND: mov a,sbuf
MOV @R0,A
INC R0
DJNZ R7,RDS
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -