如何利用单片机的定时溢出中断实现准确延时。使单片机的P1端口连接到一个数码管,使其指定的时间间隔内依次显示0~9。的汇编语言 拜托高手了~感激不尽··
定时器0控制数码管显示单片机的汇编程序?
- 提问者网友:我一贱你就笑
- 2021-07-30 19:07
- 五星知识达人网友:老鼠爱大米
- 2021-07-30 19:28
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0
ORG 4100H
MAIN: MOV DPTR, #TAB
MOV R7, #0
MOV R0, #0
MOV TMOD, #00000001B
MOV TH0, #3CH
MOV TL0, #0B0H
SETB EA
SETB ET0
SETB TR0
LOOP: MOV A, R0
MOVC A, @A+DPTR
MOV P1, A
ACALL DELAY
AJMP LOOP
INT_T0: INC R7
CJNE R7, #10, RETURN
MOV R7, #0
INC R0
CJNE R0, #10, RETURN
MOV R0, #0
RETURN: MOV TH0, #3CH
MOV TL0, #0B0H
RETI
DELAY: MOV R2, 0FFH
DL: DJNZ R2, DL
RET
TAB: DB 40h, 4FH, 24H, 30H, 19H
DB 12H, 02H, 78H, 00H, 10H
END
- 1楼网友:刀戟声无边
- 2021-07-30 21:17
SEC EQU 30H ;用30h记录秒的存放地址
ORG 0000H
AJMP START
ORG 000BH ;定时子程序入口time
AJMP TIME
;--------
START:
MOV SEC,#00H
MOV TH0,#3CH
MOV TL0,#0B0H ;为计时器赋初值15536(即65536-5000)
MOV R0,#14 ;循环20次为1秒,(默认晶振为12MHZ)
MOV TOMD,#01H ;定时方式为方式1
SETB ITO
SETB EA
SETB ETO
SETB TR0 ;开定时
;--------
MAIN:
MOV DPTR,#TAB ;表的首地址给DPTR
MOV A,SEC
MOVC A,@A+DPTR ;查表得数字的显示编码
MOV P0,A ;P0口做输出口
CLR P2.0 ;P2.0口做公共的共阴极,当为低电平时亮。
ACALL DELAY ;2MS的延时
SETB P2.0
AJMP MAIN ;循环,等待中断
;-------
TIME: ;中断处理程序
PUSH Acc
MOV TH0,#3CH ;重新赋初值
MOV TL0,#0B0H
DJNZ R0,RETURN
MOV R0,#14 ;判断是否到1秒。
MOV A,SEC
INC A ;秒中存放的数据加1
MOV SEC,A
CJNE SEC,#09H,NEXT ;
MOV SEC,0
NEXT:
AJMP RETURN
;-------------------
DELAY: ;延时子程序2MS
MOV R1,#0AH
DELAY1:
MOV R2,#C8H
DELAY2:
DJNZ R2,$
DJNZ R1,DELAY
RET
;-----
RETURN:
POP Acc
RETI
;数字编码表
#TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
- 2楼网友:低血压的长颈鹿
- 2021-07-30 20:38
P1端口连接到一个数码管(共阴极):
SECOND EQU 30H
TCOUNT EQU 31H
ORG 00H
LJMP START
ORG 0BH
LJMP INT0X
START: MOV SECOND,#00H
MOV A,SECOND
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
MOV TCOUNT,#00H
MOV TMOD,#01H
MOV TH0,#(65536-50000) / 256
MOV TL0,#(65536-50000) MOD 256
SETB TR0
SETB ET0
SETB EA
SJMP $
INT0X:
MOV TH0,#(65536-50000) / 256
MOV TL0,#(65536-50000) MOD 256
INC TCOUNT
MOV A,TCOUNT
CJNE A,#20,NEXT
MOV TCOUNT,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,NEX
MOV SECOND,#00H
NEX:
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
NEXT: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END