历史上的今天
今天是:2025年03月16日(星期日)
2021年03月16日 | 51study实例-C51闹铃程序
2021-03-16 来源:eefocus
#include #include #define comdir P3_2 #define wirespeaker P1_3 #define wiret0 T0 #define wiret1 T1 #define adr_delay1s 0x1086 #define adr_print10ms 0x1000 #define adr_print80ms 0x101A #define adr_screen_black 0x10BA #define adr_screen_clear 0x10CD #define adr_key_search 0X10EB #define adr_sound500hz 0x109E #define max_timer 24*3 void (* pFunc)(void); //定义指向函数的指针 void (* Print80ms)(void); int CodeChange(int i); /*define a struct*/ struct time_str{ unsigned char hour; unsigned char min; unsigned char sec; }today; int depart=20; int t0int_flag=0; unsigned char data dispbuf[8] _at_ 0x30; unsigned char code Sound_Date[max_timer]={ 0x00 0 0 0 0 0 0 0 0 0 0 0 0x0b 0 0 0 0 0 0 0 0 0 0 0 0x0b 0 0 0 0 0 0 0 0 0 0 0 0x0b 0 0 0 0 0 0 0 0 0 0 0 0x0b 0 0 0 0 0 0 0 0 0 0 0 0x0b 0 0 0 0 0 0 0 0 0 0 0 }; /*TIMER0 INTERRUPT*/ void timer0(void) interrupt 1{ wiret1=!wiret1; TH0=0X3C; TL0=0XB0; depart-=1; if (depart%10==0){ t0int_flag=!t0int_flag; } if (depart==0){ depart=20; today.sec+=1; wiret0=!wiret0; if (today.sec==60){ today.sec=0; today.min+=1; if(today.min==60){ today.min=0; today.hour+=1; if(today.hour==24){ today.hour=0; } } } } } /*SERIAL PORT INTERRUPT*/ void serial(void) interrupt 4{ } main() { char *P; int j=0; int i=0; int k=0; P3_4=0; //T0=0 P3_4=1; //T0=1 P3_5=0; //T1=0 P3_5=1; //T1=1 pFunc=adr_screen_black; //screen black (*pFunc)(); pFunc=adr_screen_clear; //clrar screen ram (*pFunc)(); /*P=0X30; (*P)=0X79; P++; (*P)=0X71;*/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //SP=0XD0; TMOD=0X21; //TH1=0XF3; //TL1=0XF3; //PCON=0; //SCON=0X40; //TR1=1; ET1=0; //REN=1; TH0=0X3C; /* 50ms interrupt */ TL0=0XB0; TR0=1; ET0=1; EA=1; //TI=0; //SBUF=0XAA; //MON51 占用串口 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pFunc=adr_sound500hz; (*pFunc)(); /*发声音一秒*/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ today.hour=0; today.min=0; today.sec=0; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ for(;;) { pFunc=adr_print10ms; (*pFunc)(); /*screen out*/ j=CodeChange(today.hour/10); k=CodeChange(today.hour%10); k=k|0x80; P=0x30; (*P)=j; P++; (*P)=k; P++; j=CodeChange(today.min/10); k=CodeChange(today.min%10); (t0int_flag==1)?(k=k|0x80):(k=k&0x7f); (*P)=j; P++; (*P)=k; P++; j=CodeChange(today.sec/10); k=CodeChange(today.sec%10); (*P)=j; P++; (*P)=k; for(i=0;i pFunc=adr_sound500hz; (* pFunc)(); /*发声音一秒*/ } } pFunc=adr_key_search; (* pFunc)(); i=ACC; if (CY==1) { //while (CY==1){ /***等待放手***/ pFunc=adr_print80ms; (* pFunc)(); (* pFunc)(); (* pFunc)(); //pFunc=adr_key_search; //(* pFunc)(); //} switch(i){ case 7: today.hour+=1; if(today.hour>23){today.hour=0;} break; case 6: today.hour-=1; if(today.hour==255){today.hour=23;} break; case 5: today.min+=1; if(today.min>59){today.min=0;} break; case 4: today.min-=1; if(today.min==255){today.min=59;} break; case 3: today.sec+=1; if(today.sec>59){today.sec=0;} break; case 2: today.sec-=1; if(today.sec==255){today.sec=59;} break; } } } } //clock table:6:00:00 6:30:00 7:00 7:45:00 0:2:08 0:3:09 int CodeChange(int i){ // 3fh 6 5 4 66 6 7 7 7 67 { case 0: i=0X3F; break; case 1: i=0X6; break; case 2: i=0X5b; break; case 3: i=0X4F; break; case 4: i=0X66; break; case 5: i=0X6d; break; case 6: i=0X7d; break; case 7: i=0X7; break; case 8: i=0X7f; break; case 9: i=0X67; break; }; return i; }
下一篇:51单片机不断电下载程序
史海拾趣
|
我有一个多普达828的主板,系统是WM6.1 CPU是PXA272 ROM是128M RAM是64M,手机\\PDA功能都正常.这个主板有三个UART,其中一个STUART应该接红外端口用来进行红外数据传输.我把红外的驱动卸载了(也就是把驱动用的DLL改了名)然后,对这个RXD ...… 查看全部问答> |
|
跪求eeworld的朋友们给我一个步进电机的嵌入式驱动程序,或者给我一个可以学习和参考的内容.我的一个设计是关于步进电机的嵌入式驱动程序的.请赐教. 电子邮件:blueink_200451@hotmail.com qq:279697361 请写:步进电机 或 嵌入式驱动程序 和任何和 ...… 查看全部问答> |
|
各位达人,你们好!我是一名大三的学生,我的专业是电子信息工程,读大二的时候因为没有用心好好学数电,模电,特别是高频,现在我参加了单片机培训,对单片机比较感兴趣,想扎实学好单片机这门技术,学校也开了数字信号处理,老师说非常重要,因为 ...… 查看全部问答> |
|
各位大虾: 现在小弟急用关于单片机的英文资料,在网上找了半天没找到! 希望大家帮帮忙啊!能有对应的中文翻译更好!英文大概5000字符的,多了当然更好! 谢谢了!! 我的邮箱:s1029384756@163.com QQ:3052847 ...… 查看全部问答> |




