求一个单片机编的电子时钟程序..急急!!!!!

CPU是 AT89S51
要求:1 能够显示时,分,秒.
2 能够整点打铃
3 在硬件上能够调整时间

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表示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
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机控制多位数码管的电子时钟程序
30,31,30,31};\/\/每月对应的天数 uchar YMth[13]={0,2,9,2,1,2,1,2,2,1,2,1,2}; sbit dula=P2^0; sbit wela=P2^1; sbit KEY0=P3^2;\/\/选位 sbit KEY1=P3^1;\/\/加一 sbit KEY2=P3^0;\/\/设闹铃 sbit KEY3=P3^3; sbit beep=P2^2;\/\/响铃 void Delay(uint del);\/\/...

单片机电子时钟设置 要求12小时制,初始时间11.59.55 求编写程序
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9 unsigned char sec=55,min=59,hour=12,scanled;unsigned char key,mode,time;unsigned char disdat[8];sbit key1=P1^4;sbit key2=P1^5;void delay(unsigned int x){ unsigned int i,j;...

求一个用汇编语言编写一个8051单片机的时钟程序(急急急啊)
KEY_V: DS 1 DIS_DIGIT: DS 1 SEC: DS 1 DIS_INDEX: DS 1 HOUR: DS 1 MIN: DS 1 SEC100: DS 1 DIS_BUF: DS 8 BUF_HOUR_H EQU DIS_BUF ; 小时十位 BUF_HOUR_L EQU DIS_BUF+1 ; 小时个位 BUF_MIN_H EQU DIS_BUF+3 ;...

利用单片机的定时器和数码管,设计一个电子时钟
LED_DATA = value_tab1[value_feno % 10]; \/***分钟的个位数显示***\/ Delay_1ms(5);SHUG_04 = 0;\/***秒钟***\/ SHUG_05 = 1;LED_DATA = value_tab0[value_miao \/ 10]; \/***秒钟的十位数显示***\/ Delay_1ms(5);SHUG_05 = 0;SHUG_06 = 1;LED_DATA = value_...

求一个以单片机为核心,组成一个电子时钟系统的程序
2016-07-10 设计一个以单片机为核心的数字电子钟。 2 2018-06-08 以单片机为核心设计一个电子钟。要求单片机频率设为11. 05... 2013-11-01 求单片机电子时钟程序设计 2017-07-04 以AT89C51单片机为核心,制作一个LCD显示的智能电子钟 更多类似问题 > 为...

用单片机中断控制的电子时钟程序怎么写?
1.时钟肯定要由按键了,个数看个人设计,有了按键肯定要外部中断了~2.计时则会用到定时中断以确定最小精度单位 3.最小精度单位依次进位的换算微妙、秒、分、时、日、星期、月、年……的函数 4.结果要显示出来,显示函数必不可少,看个人用哪种硬件了 ...

求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图_百 ...
后读命令\/数据(寄存器多字节方式)调 用:W1302()入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B返 回 值:无***\/void Set1302(uchar *pClock) { uchar h; uchar ucAddr = 0x80; W1302(0x8e,0x...

at89c51单片机实现电子时钟,不带闹铃。显示时分秒。求图求程序
sbit shu1=P2^0;sbit shu2=P2^1;sbit shu3=P2^2;sbit shu4=P2^3;sbit shu5=P2^4;sbit shu6=P2^5;sbit DS=P2^6; \/\/define interface 定义DS18B20接口 sbit beep=P2^7;\/\/蜂鸣器报警(高电平有效)\/*---延时子程序---*\/ void delay(uint count) \/\/delay { uint i;while(count)...

...LED接数码管,用三极管驱动的电子时钟程序,大神求救啊!
程序名称:51单片机数码管电子钟汇编程序 简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒 显示格式:23-59-59(小时十位如果为0则不显示)P0口输出段选信号,P2口输出位选信号 P1.0为调时按钮,P1.1为调分按钮;晶振12M 编 写:JiangX.net \/ ORG 0000H ;程序入口地址 LJMP START ...

用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设...
tmp=tmp<<1;} void main( ){ unsigned char z,s=00,m=00,h=00;给时钟初始值 while(1){ for(z=0;z<100;z++){ tmp=0x01;P2=tab[h\/10];小时显示 disp();P2=tab[h%10];disp();P2=tab[m\/10];分钟显示 disp();P2=tab[m%10];disp();P2=tab[s\/10];秒显示 disp();P2=...

相似回答