第89节:用单片机内部定时器做一个时钟
时间:11-22
来源:互联网
点击:
- 的时间需要200个定时中断
- #define const_timer_1s418//第二次校验后,最终选定大概1秒的时间需要418个定时中断。如果发现时间还是不准,可以在此基础上继续校验来调整此数据。
- void initial_myself(void);
- void initial_peripheral(void);
- void delay_short(unsigned int uiDelayShort);
- void delay_long(unsigned int uiDelaylong);
- //驱动数码管的74HC595
- void dig_hc595_drive(unsigned char ucDigStatusTemp16_09,unsigned char ucDigStatusTemp08_01);
- void display_drive(void); //显示数码管字模的驱动函数
- void display_service(void); //显示的窗口菜单服务程序
- //驱动LED的74HC595
- void hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);
- void T0_time(void);//定时中断函数
- void key_service(void); //按键服务的应用程序
- void key_scan(void);//按键扫描函数 放在定时中断里
- void timer_sampling(void); //定时器采样程序,内部每秒钟采集更新一次
- unsigned char get_date(unsigned char ucYearTemp,unsigned char ucMonthTemp);//获取当前月份的最大天数
- //日调整 每个月份的日最大取值不同,有的最大28日,有的最大29日,有的最大30,有的最大31
- unsigned char date_adjust(unsigned char ucYearTemp,unsigned char ucMonthTemp,unsigned char ucDateTemp); //日调整
- sbit key_sr1=P0^0; //对应朱兆祺学习板的S1键
- sbit key_sr2=P0^1; //对应朱兆祺学习板的S5键
- sbit key_sr3=P0^2; //对应朱兆祺学习板的S9键
- sbit key_sr4=P0^3; //对应朱兆祺学习板的S13键
- sbit key_gnd_dr=P0^4; //模拟独立按键的地GND,因此必须一直输出低电平
- sbit beep_dr=P2^7; //蜂鸣器的驱动IO口
- sbit dig_hc595_sh_dr=P2^0; //数码管的74HC595程序
- sbit dig_hc595_st_dr=P2^1;
- sbit dig_hc595_ds_dr=P2^2;
- sbit hc595_sh_dr=P2^3; //LED灯的74HC595程序
- sbit hc595_st_dr=P2^4;
- sbit hc595_ds_dr=P2^5;
- unsigned char ucKeySec=0; //被触发的按键编号
- unsigned intuiKeyTimeCnt1=0; //按键去抖动延时计数器
- unsigned char ucKeyLock1=0; //按键触发后自锁的变量标志
- unsigned intuiKeyTimeCnt2=0; //按键去抖动延时计数器
- unsigned char ucKeyLock2=0; //按键触发后自锁的变量标志
- unsigned intuiKeyTimeCnt3=0; //按键去抖动延时计数器
- unsigned char ucKeyLock3=0; //按键触发后自锁的变量标志
- unsigned int uiKey4Cnt1=0;//在软件滤波中,用到的变量
- unsigned int uiKey4Cnt2=0;
- unsigned char ucKey4Sr=1;//实时反映按键的电平状态
- unsigned char ucKey4SrRecord=0; //记录上一次按键的电平状态
- unsigned intuiVoiceCnt=0;//蜂鸣器鸣叫的持续时间计数器
- unsigned charucVoiceLock=0;//蜂鸣器鸣叫的原子锁
- unsigned char ucDigShow8;//第8位数码管要显示的内容
- unsigned char ucDigShow7;//第7位数码管要显示的内容
- unsigned char ucDigShow6;//第6位数码管要显示的内容
- unsigned char ucDigShow5;//第5位数码管要显示的内容
- unsigned char ucDigShow4;//第4位数码管要显示的内容
- unsigned char ucDigShow3;//第3位数码管要显示的内容
- unsigned char ucDigShow2;//第2位数码管要显示的内容
- unsigned char ucDigShow1;//第1位数码管要显示的内容
- unsigned char ucDigDot8;//数码管8的小数点是否显示的标志
- unsigned char ucDigDot7;//数码管7的小数点是否显示的标志
- unsigned char ucDigDot6;//数码管6的小数点是否显示的标志
- unsigned char ucDigDot5;//数码管5的小数点是否显示的标志
- unsigned char ucDigDot4;//数码管4的小数点是否显示的标志
- unsigned char ucDigDot3;//数码管3的小数点是否显示的标志
- unsigned char ucDigDot2;//数码管2的小数点是否显示的标志
- unsigned char ucDigDot1;//数码管1的小数点是否显示的标志
- unsigned char ucDigShowTemp=0; //临时中间变量
- unsigned char ucDisplayDriveStep=1;//动态扫描数码管的步骤变量
- unsigned char ucWd=2;//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
- unsigned char ucPart=0;//本程序的核心变量,局部显示变量。类似于二级菜单的变量。代表显示不同的局部。
- unsigned char ucWd1Update=0; //窗口1更新显示标志
- unsigned char ucWd2Update=1; //窗口2更新显示标志
- unsigned char ucWd1Part1Update=0;//在窗口1中,局部1的更新显示标志
- unsigned char ucWd1Part2Update=0; //在窗口1中,局部2的更新显示标志
- unsi
单片机内部定时器时 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)