电子时钟程序代码
#include
#define uchar unsigned char
#define uint unsigned int
uchar code weixuan[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //位选,控制哪个数码管亮。(从右到左)
uchar
code
duanxuan[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf, 0xff}; //0-9,'-','灭'
uchar data timedata[3]={0x00,0x00,0x00}; //时间缓冲区,分别为:秒、时、分。
uchar data datetime[8]={0xc0,0xc0,0xbf,0xc0,0xc0,0xbf,0xc0,0xc0}; //时间缓冲区,初始化显示00-00-00。
uchar tt1,tt2,tt,tt0,num=0;
uchar flag,flag1,flag2,flash;
sbit key1=P1^3;
sbit key2=P1^5;
sbit key3=P1^7;
//**************延时函数*********************************
void delay(uint del)
{
uchar i, j;
for(i=0; i for(j=0; j<=148; j++); } //********************调用显示************************ void display() { datetime[0]=timedata[0]%10; datetime[1]=timedata[0]/10; //秒 datetime[3]=timedata[1]%10; datetime[4]=timedata[1]/10; //分 datetime[6]=timedata[2]%10; datetime[7]=timedata[2]/10; //时 if(!flag) { P2=0X80; //秒显示 P0=duanxuan[datetime[0]]; delay(2); P2=0X40; P0=duanxuan[datetime[1]]; delay(2); } else { P2=0X80; //秒显示 P0=duanxuan[datetime[0]]|flash; delay(2); P2=0X40; P0=duanxuan[datetime[1]]|flash; delay(2); } P2=0X20; //显示'-' P0=duanxuan[10]; delay(2); if(!flag1) { P2=0X10; //分显示 P0=duanxuan[datetime[3]]; delay(2); P2=0X08; P0=duanxuan[datetime[4]]; delay(2); } else { P2=0X10; //分显示 P0=duanxuan[datetime[3]]|flash; delay(2); P2=0X08; P0=duanxuan[datetime[4]]|flash; delay(2); } P2=0X04; //显示'-' P0=duanxuan[10]; delay(2); if(!flag2) { P2=0X02; //小时 P0=duanxuan[datetime[6]]; delay(2); P2=0X01; P0=duanxuan[datetime[7]]; delay(2); } else { P2=0X02; //小时 P0=duanxuan[datetime[6]]|flash; delay(2); P2=0X01; P0=duanxuan[datetime[7]]|flash; delay(2); } } /******************按键调节时间*****************************/ void keyscan() { if(key1==0) { delay(10); if(key1==0) { num++; while(!key1); while(1) { if(num==1) { flag=1; flag1=0; flag2=0; if(key2==0) { delay(10); if(key2==0) { timedata[0]--; if(timedata[0]==-1) timedata[0]=60; while(!key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[0]++; if(timedata[0]==60) timedata[0]=0; while(!key3); } } } if(key1==0) { delay(10); if(key1==0) num++; while(!key1); } if(num==2) { flag=0; flag1=1; flag2=0; if(key2==0) { delay(10); if(key2==0) { timedata[1]--; if(timedata[1]==-1) timedata[1]=60; while(!key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[1]++; if(timedata[1]==60) timedata[1]=0; while(!key3); } } if(num==3) { flag=0; flag1=0; flag2=1; if(key2==0) { delay(10); if(key2==0) { timedata[2]--; if(timedata[2]==-1) timedata[2]=24; while(!key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[2]++; if(timedata[2]==25) timedata[2]=0; while(!key3); } } if(num==4) { num=0; flag=0; flag1=0; flag2=0; break; } } } } } //主函数 void main() { TMOD=0x01; ET0=1; TR0=1; TH0=0x40; TL0=0x00; EA=1; while(1) { keyscan(); } } //***************定时器函数*************************** void timer1() interrupt 1 { TH0=0x40; //50ms自加一次。 TL0=0x00; P3=100; display(); if((flag||flag1||flag2)) { tt0++; if(tt0==10) { flash=~flash; tt0=0; } } //P3=11 else { tt++; if(tt==20) { tt=0; timedata[0]++; //秒加1 if(timedata[0]==60) { timedata[0]=0; timedata[1]++; //分加1 if(timedata[1]==60) { timedata[1]=0; timedata[2]++; //时加1 if(timedata[2]==24) { timedata[2]=0 ; } } } } } } #include module clock(CLK,RST,EN,S1,S2,spk,HOURH,HOURL,MINH,MINL,SECH,SECL); input CLK,RST,EN,S1,S2; output spk; output[3:0] HOURH,HOURL,MINH,MINL,SECH,SECL; reg spk; reg[3:0] SECL,SECH,MINL,MINH,HOURL,HOURH; always @(posedge CLK or negedge RST) if(!RST) begin SECL<=0;SECH<=0;MINL<=0;MINH<=0;HOURL<=0;HOURH<=0; end //系统复位 else if(EN) //EN为低电平时时钟暂停 begin if(!S1) //调节小时 begin if(HOURL==9) begin HOURL<=0; HOURH<=HOURH+1; end else begin if(HOURH==2&&HOURL==3) begin HOURL<=0;HOURH<=0; end else HOURL<=HOURL+1; end end else if(!S2) //调节分钟 begin if(MINL==9) begin MINL<=0; if(MINH==5) MINH<=0; else MINH<=MINH+1; end else MINL<=MINL+1; end else if(SECL==9) //时钟正常跳动状态 begin SECL<=0; if(SECH==5) begin SECH<=0; if(MINL==9) begin MINL<=0; if(MINH==5) begin MINH<=0; #include #include /* * 演示数码管的动态扫描显示,用dpj8.dll仿真模块。* P0口接段,低电平亮,高电平灭。 * P2口接位,低电平亮,高电平灭。 */ #include "regx52.h" #define uint8 unsigned char code uint8 LED[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e}; unsigned char riqi[8]; static uint8 keyReleas; uint8 disptmp; uint8 pos; uint8 buffer[8]; code uint8 BIT[8] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; uint8 flag2ms; // uint8 t2msCnt; // uint8 halfSecCnt; // uint8 IsTimerRun; // 控制时钟是否运转 uint8 mode; // date or clock unsigned char KeyScan(); void GlobalvarInit(); void T0Init(); void TimeRun(); unsigned char KeyScan(); void Command(); void T0IntSvr() interrupt 1 using 1 { // 1, 4ms定时初值 TL0 = (65536-2000)%256; TH0 = (65536-2000)/256; switch(mode) { case 0: disptmp=LED[buffer[pos]]; //**单片机stc89c52, 8位共阴数码管12M晶振 //*******P0 位选,P2 段选❖******// #include 〃reg52・ h〃 #define uchar unsigned char #define uint unsigned int uchar code tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, Oxff}; uchar n; uchar hh, mm, ss; uchar nhh, nmm, nss; uint year; uchar day, mon, week; uchar hhs, hhg, mms, mmg, sss, ssg; uchar days,dayg, mons, mong; uchar nhhs, nhhg, nmms, nmmg, nsss, nssg; uchar setl=l, set2=l; sbit dula=P3 3; sbit fm=P3 2; sbit kl二P3"4; sbit k2二P3"5; sbit k3二P3飞; sbit k4二P3"7; uchar tablel[] = {31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 〃闰年uchar table2[] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //非闰年void jishi (); void baoshi (); void alarm(); void set_time(); void set_alarm(); void set_mdw(); void key_change(): void key_set (); void delay (int m) 〃延时程序,延时m*0. 5ms uint i; uint j; for (i=0;i 电子钟(程序设计) CONTROL EQU 0C003H ;8253控制口 COUNT0 EQU 0C000H COUNT1 EQU 0C001H COUNT2 EQU 0C002H MD8255 EQU 82H ;8255控制字 PA8255 EQU 8000H CTL8255 EQU 8003H OUTBIT EQU 08002H ;位控制口 OUTSEG EQU 08004H ;段控制口 ICW1 EQU 00010011B ;8259,上升沿中断,要写ICW4 ICW2 EQU 00100000B ;中断号为20H ICW4 EQU 00000001B ;工作在8086/88方式 OCW1 EQU 11111110B ;只响应INT0中断 CS8259A EQU 0D000H ;8259地址 CS8259B EQU 0D001H DATA SEGMENT CNT DB 0 LEDBUF DB 6 DUP(?) ;显示缓冲 NUM DB 1 DUP(?) ;显示的数据 DELAYT DB 1 DUP(?) HOUR DB 0 MINUTE DB 0 SECOND DB 0 LEDMAP: ;八段管显示码 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA DELAY PROC NEAR ;延时子程序 PUSH AX PUSH CX MOV AL,0 MOV CX,AX LOOP $ POP CX POP AX RET DELAY ENDP DISPLAYLED PROC NEAR MOV BX,OFFSET LEDBUF 源程序代码 XTAL2 18 XTAL1 19 ALE 30EA 31 PSEN 29RST 9 P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51 D 714 D 613D 512D 411D 310D 29D 18D 07 E 6 R W 5R S 4V S S 1V D D 2V E E 3 LCD1 LM016L R11k R21k R31k R41k R51k R61k R71k R8 1k R9 1k Q1 2N5088 R10 100 LS1 SPEAKER R11 1k K1K2 X1 CRYSTAL C1 220p C2 220p 电气04-404010104赵化正 /******************************************************************************* * ;按K1键,依次进入闹钟功能,闹钟时间,年,月,日和时,分,秒模式,直致退出设置状态* ;按K2键,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字* ;闹钟响时,按K2 即可停止闹钟的声响* ;K2和K1需要配合使用 ;设置状态,LCD 上排最前面显示"P",下排最前面设置闹钟时显示"alarm:",其他显示"time:" * ;闹钟启用时,在LCD 下排中间显示一小喇叭,闹钟禁用时,无此小喇叭* ;年代变化2000--2099,星期自动转换* ;**************变量的定义***************** RS BIT P2.0 ;LCD 数据/命令选择端(H/L) RW BIT P2.1 ;LCD读/写选择端(H/L) EP BIT P2.2 ;LCD 使能控制 PRE BIT P1.7 ;调整键(K1) ADJ BIT P1.6 ;调整键(K2) SPK BIT P3.7 ;闹钟声音输出口 YEAR DATA 18H ;年,月,日变量 MONTH DATA 19H DATE DATA 1AH WEEK DATA 1BH HOUR DATA 1CH ;时,分,秒,百分之一秒变量 MIN DATA 1DH SEC DATA 1EH SEC100 DATA 1FH HOUR_ARM DA TA 20H ;闹钟时,分,秒,变量 MIN_ARM DA TA 21H SEC_ARM DATA 22H STA TE DATA 23H ALARM BIT STA TE.0 ;闹钟是否启用标志1--启用,0--禁止 LEAP BIT STATE.1 ;是否闰年标志1--闰年,0--平年 KEY_S DATA 24H ;当前扫描键值 KEY_V DATA 25H ;上次扫描键值 DIS_BUF_U0 DATA 26H ;LCD 上排显示缓冲区 DIS_BUF_U1 DATA 27H DIS_BUF_U2 DATA 28H DIS_BUF_U3 DATA 29H DIS_BUF_U4 DATA 2AH DIS_BUF_U5 DATA 2BH DIS_BUF_U6 DATA 2CH DIS_BUF_U7 DATA 2DH DIS_BUF_U8 DATA 2EH DIS_BUF_U9 DATA 2FH DIS_BUF_U10 DA TA 30H DIS_BUF_U11 DA TA 31H 单片机时钟程序设计代码 好的,由于你没有给出具体的单片机型号,下面是一个基于 51 单片机的时钟程序设计示例: ```c #include if(time==20) { time=0; s++; if(s==60) { s=0; m++; if(m==60) { m=0; h++; } } } // 将时间数据转换为字符串 sprintf(str," %02d:%02d:%02d",h,m,s); // 输出时间字符串 for(i=0;i<16;i++) { P0=str[i]; delay(1000); } } void main() { // 初始化定时器 0 为 16 位定时器模式,计数初值为 50000 TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; 电子时钟工具的程序设计及代码示例为满足现代生活的需求,电子时钟成为人们生活中的常见工具。除 了具备实时显示时间的功能外,电子时钟还可以根据用户需求进行各 种定制,如显示日期、倒计时、闹钟等功能。本文将探讨电子时钟的 程序设计方法,并提供一个简单的代码示例。 一、程序设计方法 在进行电子时钟的程序设计前,我们需要确定以下几个关键因素: 1. 使用的编程语言:根据实际情况选择合适的编程语言,如C++、Java、Python等。 2. GUI框架:确定使用什么图形界面框架,如Qt、Tkinter等。 3. 实时更新:确定时间的实时更新方式,可以利用计时器、循环等 方式进行时间更新。 4. 用户交互:考虑用户是否需要与电子时钟进行交互,如设置闹钟、选择日期等。 二、代码示例 以下是一个基于Python和Tkinter的电子时钟代码示例,代码注释 中详细说明了每个函数的功能和实现方法: ```python import tkinter as tk from datetime import datetime def update_time(): # 获取当前时间 current_time = datetime.now().strftime("%H:%M:%S") # 更新时间标签 time_label.config(text=current_time) # 每隔1秒更新一次时间 time_label.after(1000, update_time) # 创建窗口 window = https://www.360docs.net/doc/0e19491817.html,() window.title("电子时钟") # 创建时间标签 time_label = https://www.360docs.net/doc/0e19491817.html,bel(window, font=("Arial", 100), bg="white") time_label.pack(pady=50) # 更新时间 update_time() # 运行窗口主循环 window.mainloop() LED数字显示电子时钟源程序代码 程序:(注已完全经过调试,达到预期目的) #include P0=tab[hour/10%10]; P2=0xfe; delay(1); P0=tab[hour%10]; P2=0xfd; delay(1); P0=tab[fen/10%10]; P2=0xfb; delay(1); P0=tab[fen%10]; P2=0xf7; delay(1); P0=tab[miao/10%10]; P2=0xef; delay(1); P0=tab[miao%10]; P2=0xdf; delay(1); } void main() //主函数 { init(); LED=0; while(1) { display(); } } void T0_int() interrupt 1 //定时器0函数{ TH0=(65536-25000)/256; TL0=(65536-25000)%256; count++; if(count==20) { count=0; miao= miao +1; LED=~LED; if(sec==60) { miao=0; fen= fen +1; 数字时钟代码 1. 介绍 数字时钟是一种常见的显示时间的装置,它通过数字显示屏显示当前的小时和分钟。本文档将介绍如何编写一个简单的数字时钟代码。 2. 代码实现 以下是一个基本的数字时钟代码实现示例: import time while True: current_time = time.localtime() hour = str(current_time.tm_hour).zfill(2) minute = str(current_time.tm_min).zfill(2) second = str(current_time.tm_sec).zfill(2) clock_display = f"{hour}:{minute}:{second}" print(clock_display, end="\r") time.sleep(1) 代码说明: - `time.localtime()` 函数返回当前时间的结构化对象,包括小时、分钟和秒等信息。 - `str(current_time.tm_hour).zfill(2)` 将小时转换为字符串,并使 用 `zfill()` 方法填充到两位数。 - `str(current_time.tm_min).zfill(2)` 和 `str(current_time.tm_sec).zfill(2)` 同理处理分钟和秒。 - 使用 f-string 格式化字符串 `clock_display`,将小时、分钟和 秒显示为 `` 的形式。 - `print(clock_display, end="\r")` 使用 `\r` 实现覆盖打印,使得 时钟在同一行连续显示。 - `time.sleep(1)` 让程序每隔一秒更新一次时间。 请注意,上述代码需要在支持 Python 的环境中运行。 3. 结束语 stm32单片机小时计时程序代码 stm32单片机小时计时程序是一种基于stm32单片机的软件程序,用于实现小时计时的功能。在本文中,我们将详细介绍如何编写这样一个程序,以及程序的实现原理和使用方法。 我们需要了解stm32单片机的基本知识。stm32单片机是一种高性能、低功耗的嵌入式微控制器,具有丰富的外设和强大的计算能力。它广泛应用于各种电子设备中,包括计时器、时钟、计步器等。 在编写小时计时程序之前,我们需要先了解stm32单片机的时钟模块。时钟模块是单片机中非常重要的一个模块,它提供了系统时钟和外设时钟,控制单片机的时序和节拍。在小时计时程序中,我们需要使用时钟模块来计算时间的流逝。 接下来,我们开始编写小时计时程序。首先,我们需要初始化时钟模块。在stm32单片机中,时钟模块的初始化包括设置系统时钟源、设置时钟分频器等。我们可以根据实际需求选择适合的时钟源和分频系数。 初始化完时钟模块后,我们需要设置计时器。在小时计时程序中,我们可以使用定时器模块来实现计时功能。定时器模块可以通过配置计数器的初值和计数器的溢出时间来实现定时功能。我们可以根据实际需求选择适合的定时器模块和计数器参数。 在设置计时器后,我们需要编写中断服务函数。中断服务函数是在 计数器溢出时自动调用的函数,用于处理计时器溢出事件。在小时计时程序中,我们可以在中断服务函数中将计数器的值加1,以实现计时功能。 编写完中断服务函数后,我们需要设置中断优先级和使能中断。在stm32单片机中,每个中断都有一个优先级,用于确定中断的响应顺序。我们可以根据实际需求设置中断优先级,并使能中断,以保证中断能够正常工作。 我们可以在主函数中调用计时器模块,并通过串口或LCD等外设输出计时结果。在小时计时程序中,我们可以使用串口模块将计时结果输出到电脑上进行显示,也可以使用LCD模块将计时结果显示在液晶屏上。 stm32单片机小时计时程序是一种基于stm32单片机的软件程序,用于实现小时计时的功能。通过对时钟模块、定时器模块和中断服务函数的设置,我们可以实现精确的小时计时功能。同时,通过外设的输出,我们可以方便地查看计时结果。这样的程序在各种电子设备中都有广泛的应用,例如计时器、时钟和计步器等。希望本文的介绍能够帮助读者更好地理解和应用stm32单片机小时计时程序。 Keil软件电子钟按键控制时间源代码 作者:我的风车/*数码管显示 按K4时钟加1,按K2分钟加1,按K1秒加1,按K3时钟停止*/ #include Ds1302Init(); while(1) { if(SetState==0) { Ds1302ReadTime(); } else { if(K1==0) //检测按键K1是否按下 { Delay1ms(90); //消除抖动 if(K1==0) { for(j=0;j<1;j++) { TIME[SetPlace]++; } if((TIME[SetPlace]&0x0f)>9) //换成BCD码。 { TIME[SetPlace]=TIME[SetPlace]+6; } if(TIME[SetPlace]>=0x60) //秒只能到59 { TIME[SetPlace]=0; } while((i<50)&&(K1==0)) //检测按键是否松开 { Delay1ms(1); i++; } } i=0; } if(K2==0) //检测按键K2是否按下 { Delay1ms(90); //消除抖动 if(K2==0) { for(j=0;j<1;j++) { TIME[1]++; } 基于JavaScript的电子时钟效果实现 一、 HTML结构 我们需要创建一个基本的HTML结构,用来容纳电子时钟的显示内容。 ```html ``` 在上面的代码中,我们定义了一个id为“clock”的div元素,用来显示电子时钟的内容。我们还引入了一个名为“clock.js”的JavaScript文件,用来编写电子时钟的相关逻辑代码。 二、 JavaScript代码实现 接下来,我们将编写JavaScript代码来实现电子时钟的效果。 ```javascript function updateClock() { var now = new Date(); var hours = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds(); var timeString = addZeroBefore(hours) + ':' + addZeroBefore(minutes) + ':' + addZeroBefore(seconds); document.getElementById('clock').textContent = timeString; } function addZeroBefore(number) { if (number < 10) { return '0' + number; } else { return number; } } setInterval(updateClock, 1000); ``` 验收标准: 1可按键调整当前时间(年月日时分秒) 2设定闹钟时间闹钟时间到led闪烁时间不超过10秒可以按键停止闹钟3具有秒表功能,可暂停,开始,及复位秒表。 4通过按键实现不同的界面的切换 5其他 #include 2.源程序ORG 0000H LJMP START ORG 000BH LJMP TIME ;********初始化********* START: MOV SP, #50H MOV 20H,#00H ;定义秒 MOV 21H,#00H ;定义分 MOV 22H,#00H ;定义时 MOV 23H,#01H ;定义闹钟分钟 MOV 24H,#01H ;定义闹钟小时 MOV 25H,#00H MOV 26H,#01H MOV 30H,#00H ;定义秒BCD MOV 31H,#00H MOV 32H,#00H ;定义分BCD MOV 33H,#00H MOV 34H,#00H ;定义小时BCD MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H MOV 50H,#00H ;按键次数 MOV TMOD,#01H ;16位计数器MOV TH0, #03CH ;赋初值 MOV TL0, #0B0H MOV IE, #87H ;中断允许 SETB TR0 ;启动T0 MOV R2,#14H MOV P2,#0FFH ;*********主程序********** MAIN: JB P1.4,GB LCALL TIMEPRO ;调用闹钟判断 GB: LCALL DISPLAY1 ;调用时间显示 JB P1.3,M1 ;P1.3=1时转移 S4没有按下 LCALL SETTIME ;调用SETTIME调时子程序 LJMP MAIN M1: JB P1.2,M2 ;P1 g.2=1时转移S3 LCALL SETATIME ;调用SETATIME子程序 LJMP MAIN M2: JB P1.0,M4 ;P1.0=1时转移 S1 LCALL LOOKATIME ;调用LOOKATIME显示闹钟子程序M4: LJMP MAIN ;*********延时子程序******** DELAY: MOV R4,#030H DL00: MOV R5,#0FFH DL11: MOV R6,#9H DL12: DJNZ R6,DL12 DJNZ R5,DL11 DJNZ R4,DL00 单片机电子时钟参考程序 ;60H--67H:显示缓冲区 ;T0用于产生秒信号,定时器溢出20次为1秒,溢出次数存放单元:53H ;5DH单元存放功能键按键次数,(0--2)(K1键) ;5CH单元存放时间或日期修改位置的按键次数(K2键) ;40H--45H单元存放秒、分、时、日、月、年 ;5EH单元存放按键键码 ORG 0000h LJMP START ORG 000BH LJMP ITT0 ORG 0013H LJMP KEY ORG 001BH LJMP T1TIM ORG 0030H START: MOV SP,#30H ;设置堆栈首地址 MOV DPTR,#0E001H ;8279命令口地址 MOV A,#0DCH ;清显示RAM MOVX @DPTR,A LCALL DELAY100MS MOV A,#34H ;设置8279分频系数 MOVX @DPTR,A MOV A,#10H ;设置按键及显示方式 MOVX @DPTR,A MOV A,#90H ;允许写显示RAM MOVX @DPTR,A MOV A,#40H MOVX @DPTR,A LCALL CHECK1 ;调自检程序 LCALL ORANGE ;调初始化程序,有时间的初值、按键计数器的初值 ;年月日的初值,显示时间的初值 LCALL DISP ;调显示子程序 MOV TMOD,#11H ;设置T0定时器工作方式及初值 MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 ;开T0、T1、8279按键中断,启动定时器T0 SETB TR0 SETB EX1 SETB T1 SETB ET1 SETB EA LOOP: LCALL ABC SJMP LOOP ; ABC: MOV A,5DH CJNE A,#0,ABC1 ;如果K1键标志为非0,则可以修改日期和时间 SETB TR0 ;如果K1键标志为0,则不能修改日期和时间 SETB ET0 ;开启定时器T0 LCALL FLASH ;正常显示时间 LJMP ABC4 ABC1: CJNE A,#1,ABC2 ;若K1键标志为1,允许修改时间 MOV A,5CH CJNE A,#0,ABC11 ;若K2键标志为0,则小时位闪动,且允许修改 MOV 60H,#0FFH ;修改“小时”位并闪动 MOV 61H,#0FFH LCALL DISP LCALL M1S MOV A,42H LCALL BCD8 MOV 60H,3DH MOV 61H,3EH LCALL DISP LJMP ABC3 ABC11: CJNE A,#1,ABC12 ;若K2键标志为1,则月闪动,且允许修改MOV 63H,#0FFH ;修改“分”位并闪动 MOV 64H,#0FFH LCALL DISP LCALL M1S MOV A,41H LCALL BCD8 MOV 63H,3DH MOV 64H,3EH LCALL DISP LJMP ABC3电子时钟程序代码
数字时钟正确代码
单片机电子显示时钟原理图及程序
c51电子时钟
51单片机多功能智能电子钟程序代码
51单片机数码管电子时钟C程序
数字时钟的汇编程序(1).
LCD电子钟万年历程序代码
单片机时钟程序设计代码
电子时钟工具的程序设计及代码示例
LED数字显示电子时钟源程序代码
数字时钟代码
stm32单片机小时计时程序代码
Keil软件电子钟按键控制时间源代码
基于JavaScript的电子时钟效果实现
电子钟c程序
时分秒数字钟程序代码
单片机电子时钟程序