NTR0:INC R0 // 外部中断 0
RETI
DTIM: MOV TH0,#3CH // 定时中断 0
MOV TL0,#0B0H
DJNZ R7,EXIT
LCALL CHUL
RETI
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DELAY:MOV R6,#255 // 延时子程序
DJNZ R6,$
RET
附件源代码
- DBUF3 EQU 30H
- DBUF2 EQU 31H
- DBUF1 EQU 32H
- DBUF0 EQU 33H
- ORG 0000H
- AJMP MAIN
- ORG 0003H // 外部中断 0 入口地址
- AJMP INTR0
- ORG 000BH // 定时计数 0 入口地址 、
- AJMP DTIM
- AJMP DTIM
- ORG 0030H // 主程序入口地址
- MAIN: MOV IE,#83H
- MOV IP,#02H //T0 优先
- MOV TMOD,#01H // 定时器工作于方式 1
- MOV TH0,#3CH // 定时器初值设置, 50ms
- MOV TL0,#0B0H
- MOV DPTR,#TABLE
- MOV P2,#0FFH
- MOV P1,#00H
- MOV R7,#20 // 定时一秒, 50ms*20
- MOV R0,#0
- SETB TR0 // 启动定时计数器
- SETB IT0 // 下降沿触发
- SJMP [ DISCUZ_CODE_1 ]nbsp;
- CHUL: MOV A,R0 // 数值处理子程序
- MOV B,#100
- DIV AB
- MOV DBUF3,A
- MOV A,B
- MOV B,#10
- DIV AB
- MOV DBUF2,A
- MOV A,B
- MOV B,#1
- DIV AB
- MOV DBUF1,A
- MOV DBUF0,B
- LCALL DISP
- AJMP CHUL
- DISP:MOV A,DBUF3 // 显示子程序
- MOVC A,@A+DPTR
- CLR P2.0
- MOV P1,A
- ACALL DELAY
- SETB P2.0
- MOV A,DBUF2
- MOVC A,@A+DPTR
- CLR P2.1
- MOV P1,A
- ACALL DELAY
- SETB P2.1
- MOV A,DBUF1
- MOVC A,@A+DPTR
- CLR P2.2
- ADD A,#128
- MOV P1,A
- ACALL DELAY
- SETB P2.2
- MOV A,DBUF0
- MOVC A,@A+DPTR
- CLR P2.3
- MOV P1,A
- ACALL DELAY
- SETB P2.3
- RET
- INTR0:INC R0 // 外部中断 0
- RETI
- DTIM: MOV TH0,#3CH // 定时中断 0
- MOV TL0,#0B0H
- DJNZ R7,EXIT
- LCALL CHUL
- RETI
- TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
- DELAY:MOV R6,#255 // 延时子程序
- DJNZ R6,[ DISCUZ_CODE_1 ]nbsp;
- RET
- END
复制代码 |