求一个单片机做的电子时钟的程序

用汇编写的 用的芯片是89C2051 要是调试通过了 还加分

我的博客上有一个比较好的程序,你可以去参考一下.
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-11-07
自己把按键接口改一下,加一个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表示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 求编写程序
define uchar unsigned char 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...

at89c51单片机实现电子时钟,不带闹铃。显示时分秒。求图求程序
uchar tmpread(void) \/\/read a byte date 读一个字节 { uchar i,j,dat;dat=0;for(i=1;i<=8;i++){ j=tmpreadbit();dat=(j<<7)|(dat>>1); \/\/读出的数据最低位在最前面,这样刚好\/\/一个字节在DAT里 } return(dat); \/\/将一个字节数据返回 } void tmpwritebyte(uchar dat) ...

利用单片机的定时器和数码管,设计一个电子时钟
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_...

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

求一个以单片机为核心,组成一个电子时钟系统的程序
2018-07-10 求写个单片机代码。以单片机为核心设计一个电子钟。单片机频率设... 2015-06-04 以51单片机为核心器件,组成一个电子时钟系统。 2016-12-23 小白求个c语言,以单片机为核心设计一个电子时钟,单片机频率设... 2018-01-08 . 设计要求 以AT89C51单片机为核心,制作一个LCD显... 2016-07-10 设计一个...

求单片机AT89C52电子时钟程序 汇编跟C斗可以 必定追加100 邮箱3953604...
2、按键可以调节定时时间 3、定时时间到继电器吸合 8位数码管显示 时间格式格式 12-08-00 标示12点08分00秒 S1 用于小时 加1操作 S2 用于小时减1操作 S3 用于分钟 加1操作 S4 用于分钟减1操作 \/ \/*--- 名称:普通时钟 -*\/ include<reg52.h> \/\/包含头文件,一般情况不需要改动,头文件...

...帮帮我啊!用单片机编辑一个数字钟的程序啊,要求如下:
用单片机编辑一个数字钟的程序啊,要求如下: 使用KEIL编辑出数字钟完整程序;数字钟有八个按键,八个按键功能分别为:1、按键一:用来修改时间和闹钟;每按一下小时上加一;2、按键二:用来修改时间和闹钟;每按一下小时上减一;... 使用KEIL编辑出数字钟完整程序;数字钟有八个按键,八个按键功能分别为:1、按键一:...

单片机课程设计8位数码管电子钟at89c52代码怎么写?
仿真步骤包括开启仿真工程,选择单片机并导入 hex 文件,开始仿真。在显示时间的状态下,按下设置键进入模式切换,时钟、分钟、秒钟逐级闪烁,实现设置。同时,按下功能切换按键显示闹钟时间,并同样通过设置键进入闹钟时间的调整。当闹钟时间到达时,蜂鸣器会发出响铃,每秒一次,持续6秒,且可通过按键停止闹钟...

求用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...

相似回答
大家正在搜