数字钟的单片机课程设计 内核AT80C51,能显示 时 分 秒,用led数码管显示,自动清零,具有校验功能。急!

2024-12-17 01:16:18
推荐回答(3个)
回答1:

ORG 0000H
LJMP MAIN
ORG 0003H ;外部中断0的入口地址
LJMP L3
ORG 000BH
LJMP SHI
ORG 0013H ;外部中断1的入口地址
LJMP FEN
ORG 001BH
LJMP L1 ;先把堆栈设为5FH开始
MAIN: MOV SP,#5FH ;用定时器0的方式2来记数,定时器1的方式1来定时
MOV TMOD,#16H ;把T0的高八位和低八位分别都赋值为255
MOV TH0,#255
MOV TL0,#255 ;把T1的高八位赋值为3CH
MOV TH1,#3CH ;把低八位赋值为B0H
MOV TL1,#0B0H
MOV R4,#00H
MOV R5,#00H
MOV R6,#00H
SETB EA ;把中断允许总开关打开
CLR EX0 ;禁止外部中断0中断
CLR EX1 ;禁止外部中断1中断
SETB IT0 ;设外部中断0的触发方式为边沿触发方式
SETB IT1 ;设外部中断1的触发方式为边沿触发方式
CLR ET0 ;禁止T1中断
SETB TR0 ;启动定时计数器0工作
SETB TR1 ;启动定时计数器1工作
SETB ET1
MOV R7,#20

LOOP:
MOV A,R4
MOV B,#10
DIV AB
MOV DPTR,#0300H
MOVC A,@A+DPTR ; 查表指令
MOV P0,A
MOV P1,#01H
LCALL DELAY ;调用延时子程序
MOV P0,#0FFH
MOV A,B
MOVC A,@A+DPTR
MOV P1,#02H
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
MOV P2,#0FFH
JNB P2.0,INN0
MOV P1,#04H
MOV P0,#0F6H
LCALL DELAY
MOV P0,#0FFH
MOV A,R5
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,#08H
MOV P0,A
MOV P1,#08H
LCALL DELAY
MOV P0,#0FFH
MOV P2,#0FFH
JNB P2.0,INN0
MOV A,B
MOVC A,@A+DPTR
MOV P1,#10H
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
MOV P1,#20H
MOV P0,#0F6H
LCALL DELAY
MOV P0,#0FFH
MOV P2,#0FFH
JNB P2.0,INN0
MOV A,R6
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,#40H
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
MOV A,B
MOVC A,@A+DPTR
MOV P1,#80H
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
MOV P2,#0FFH
JNB P2.0,INN0
LJMP LOOP
INN0: CPL ET0
CPL ET1
CPL EX0
CPL EX1
LJMP LOOP
ORG 0100H
L1: PUSH A
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R7,LP
MOV R7,#20
INC R4
MOV A,R4
CJNE A,#60,LP
MOV R4,#00H
INC R5
MOV A,R5
CJNE A,#60,LP
MOV R5,#00H
INC R6
MOV A,R6
CJNE A,#12,LP
MOV R6,#00H
LP: POP A
RETI ;中断返回
DELAY: MOV R3,#10
L2: MOV R2,#100
DJNZ R2,$
DJNZ R3,L2 ;延时子程序返回
RET
ORG 0200H
L3: CLR EA
INC R4
MOV A,R4
CJNE A,#60,MIA
MOV R4,#00H
MIA: SETB EA
RETI
FEN: CLR EA
INC R5
MOV A,R5
CJNE A,#60,FE
MOV R5,#00H
FE: SETB EA
RETI
SHI: CLR EA
INC R6
MOV A,R6
CJNE A,#24,SH
MOV R6,#00H
SH: SETB EA
RETI
ORG 0300H
TAB: DB 0C0H,0F9H,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H ;共阳的
END

回答2:

太现实了,楼上

回答3:

已发,请采纳