历史上的今天
今天是:2025年01月05日(星期日)
2021年01月05日 | 基于51单片机的数字时钟
2021-01-05 来源:51hei


#include #define uchar unsigned char #define uint unsigned int sbit qingling=P1^0; sbit tiaofen=P1^1; sbit tiaoshi=P1^2; sbit sounder=P1^3; uint a,b; uchar hour,minu,sec, hour0,minu0,sec0, hour1,minu1,sec1; h1,h2,m1,m2,s1,s2, k,s; uchar code select[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void keyscan(); void init(); void delay(int z); void display(uchar,uchar,uchar); void sounde(); void main() { init(); while(1) { while(TR1) { keyscan(); while(s==1) { keyscan(); display(hour1,minu1,sec1); } display(hour0,minu0,sec0); while(k) { display(hour,minu,sec); } } } } void init() { a=0; b=0; k=0; s=0; hour0=0; minu0=0; sec0=0; hour=0; minu=0; sec=0; hour1=0; minu1=0; sec1=0; TMOD=0x11; TH0=(65536-5000)/256; TL0=(65536-5000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; EX0=1; EX1=1; ET0=1; ET1=1; IT0=1; IT1=1; PX0=1; PX1=1; TR0=0; TR1=1; } void timer0_int() interrupt 1 { TH0=(65536-5000)/256; TL0=(65536-5000)%256; a++; if(a==2) { a=0; sec++; if(sec==100) { sec=0; minu++; if(minu==60) { minu=0; hour++; if(hour==60) { hour=0; } } } } } void ex0_int() interrupt 0 { k++; if(k==3) k=0; if(k==1) { TR0=~TR0; if(TR0==1) { hour=0; minu=0; sec=0; } } if(k==2) { TR0=~TR0; } } void ex1_int() interrupt 2 { s++; if(s==3) s=0; } void timer1_int() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; if(s==2) { if(hour1==hour0 && minu0==minu1) sounde(); } b++; if(b==20) { b=0; sec0++; if(sec0==60) { sec0=0; minu0++; if(minu0==60) { minu0=0; hour0++; if(hour0==24) hour0=0; }
史海拾趣
|
散分~系统启动速度提高一半了~俺用的是EP9315,64m的ram加32m的flash~,原来启动大概11秒,现在最多5秒~原因未明,待查找呵呵,心情不错,特来散分~… 查看全部问答> |
|
我刚开始上班,好多东西都不懂,经理把板子给我了.让我自己弄. 问其他同事,他们都说忙,好郁闷呀! 主机,ARM9开发板,ADS1.2集成开发环境,JTAG仿真器.都有了. 我下一步该做什么. 如果直接用Tornado 2.2 for pcPentium,然后和目标机这样连接可以吗? ...… 查看全部问答> |
|
请问自定义数组到底放到程序page0,还是1中,再问这句话,是否说:变量溢出 error: can\\\'t allocate .text (sz: 00002cc0 page: 0) in PRAMH0 (avail: 00000ffe) 我应该怎么修改,谢谢… 查看全部问答> |
|
RT.现在在做一个小模块.RTC生成时间作为日志的一部分保存在SD卡上.可是...中断好像冲突了.不能1s生成一个文件.1s中断不执行..咋办呢 具体如下: 主函数中 void InterruptConfig(void) { /* Deinitializes the NVIC */ &nb ...… 查看全部问答> |
|
我用msp430f149与PC机进行远程通信,用max487转换为485接口,单片机发送到PC机的数据,PC机能正确收到,但PC机发送到单片机的数据,单片机收不到,哪位大侠知道为什么?帮帮忙,我着急啊!… 查看全部问答> |




