单片机电子钟的程序设计
自己把按键接口改一下,加一个ROM,这是8051的程序只要改一下就可以用在8031 因为
它们的指令系统是一样的 你看着办吧。 要是悬赏分多的话 我可以帮你改。嘎嘎 HOUR EQU 40H ;存放时信息的单元 MINUTE EQU 41H ;存放分信息的单元 SECOND EQU 42H ;存放秒信息的单元 NUM EQU 43H ;存放T0溢出次数的单元 ORG 0000H ;程序入口
AJMP MAIN
ORG 0030H ;主程序入口
MAIN:MOV SP,#60H ;指定堆栈栈底 MOV HOUR,#00H
MOV MINUTE,#00H
MOV SECOND,#00H ;将时、分、秒分别清零 MOV NUM,#0
MOV TMOD,#01H ;设T0工作于方式1,用于定时
MOV TH0,#4CH ;设置T0的初始值 MOV TL0,#00H
MOV IE,#00H ;关中断
SETB TR0 ;开启定时器T0
LOOP:NOP
NOP
ACALL DISPLAY ;调用显示子程序 NOP
NOP
LOOP1:JB TF0,TIME ;等待定时溢出 LJMP LOOP1
TIME:CLR TR0 ;关闭定逼?
PUSH DPL ;保护现场
PUSH DPH
PUSH ACC
MOV TH0,#4CH ;重新设置T0的值 MOV TL0,#00H
SETB TR0 ;开启T0
MOV A,NUM
INC A ;溢出次数+1
MOV NUM,A
CJNE A,#0AH,TT1 ;检测键盘
MOV P1,#0FH ;设键盘初值
MOV R0,#04H ;延时消抖
LCALL DELAY
JNB P1.0,T0C1 ;为0
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示P1.0按下,转T0C1调整秒
JNB P1.1,T0C2 ;为0表示P1.1按下,转T0C2调整分
JNB P1.2,T0C3 ;为0表示P1.2按下,转T0C3调整时
TT1: CJNE A,#140,RR4
MOV NUM,#00H
T0C1:MOV A,SECOND
INC A ;秒单元内容加1
DA A ;调整为BCD码
MOV SECOND,A
CJNE A,#60H,RR4 ;不为60秒继续等待 setb flag:
clr flag
RR1: MOV SECOND,#00H ;为60秒将秒单元清零
T0C2:MOV A,MINUTE
INC A ;分单元内容加1
DA A ;调整为BCD码
MOV MINUTE,A
CJNE A,#60H,RR4 ;不为60分继续等待 RR2: MOV MINUTE,#00H ;为60分,分单元清零
T0C3:MOV P1,#0F0H ; 1小时闪一次 LCALL DELAY ;延时
MOV P1,#0FH
MOV A,HOUR
INC A ;时单元内容加1
DA A ;调整为BCD码
MOV HOUR,A
CJNE A,#24H,RR4 ;不为24小时继续等待 RR3: MOV HOUR,#00H ;为24小时,时单元清零
RR4: POP ACC ;恢复现场
POP DPH
POP DPL
LJMP LOOP
DELAY:MOV R1,#10H ;延时子程序 DELAY1:MOV R2,#20H
DJNZ R2,$
DJNZ R1,DELAY1
DJNZ R0,DELAY
RET
DISPLAY:MOV DPTR,#TAB ;送表头基地址 MOV A,HOUR
ANL A,#0FH ;屏蔽时高位
MOVC A,@A+DPTR ;查时高位 MOV P0,A
CLR P2.6 ;开显示
MOV R0,#1 ;延时消除鬼影
LCALL DELAY
SETB P2.6 ;关显示
MOV A,HOUR ANL A,#0F0H SWAP A
MOVC A,@A+DPTR MOV P0,A
CLR P2.7
MOV R0,#1
LCALL DELAY SETB P2.7
MOV A,MINUTE ANL A,#0FH MOVC A,@A+DPTR MOV P0,A
CLR P2.4
MOV R0,#1
LCALL DELAY SETB P2.4
MOV A,MINUTE ANL A,#0F0H SWAP A
MOVC A,@A+DPTR MOV P0,A
CLR P2.5
MOV R0,#1
LCALL DELAY SETB P2.5
MOV A,SECOND ANL A,#0FH MOVC A,@A+DPTR MOV P0,A
CLR P2.2
MOV R0,#1
LCALL DELAY SETB P2.2
MOV A,SECOND ANL A,#0F0H SWAP A
MOVC A,@A+DPTR MOV P0,A
CLR P2.3
MOV R0,#1
LCALL DELAY SETB P2.3
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END