当前位置: 首页 > news >正文

做网站加盟中国核工业第五建设有限公司中南分公司

做网站加盟,中国核工业第五建设有限公司中南分公司,化妆品网站模板,网页界面清空筛选下载17. 定时器 17.1. 定时器介绍#xff1a;51单片机的定时器属于单片机的内部资源#xff0c;其电路的连接和运转均在单片机内部完成#xff0c;无需占用CPU外围IO接口#xff1b; 定时器作用#xff1a; #xff08;1#xff09;用于计时系统#xff0c;可实现软件计时51单片机的定时器属于单片机的内部资源其电路的连接和运转均在单片机内部完成无需占用CPU外围IO接口 定时器作用 1用于计时系统可实现软件计时或者使程序每隔一固定时间完成一项操作 2替代长时间的Delay提高CPU的运行效率和处理速度因为delay程序占用CPU资源同时导致CPU无法处理外部诸如按键的操作 … 17.2. STC89C52 定时器相关扩展阅读STC89C52的介绍手册 官方链接地址 https://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC89C51RC-RD_GUIDE-CHINESE.pdf 17.3. STC89C52定时器资源 •定时器个数3个T0、T1、T2T0和T1与传统的51单片机兼容T2是此型号单片机增加的资源 •注意定时器的资源和单片机的型号是关联在一起的不同的型号可能会有不同的定时器个数和操作方式但一般来说T0和T1的操作方式是所有51单片机所共有的 17.4. 51单片机定时器内部工作原理 •定时器在单片机内部就像一个小闹钟一样根据时钟的输出信号每隔“一秒”计数单元的数值就增加一当计数单元数值增加到“设定的闹钟提醒时间”时计数单元就会向中断系统发出中断申请产生“响铃提醒”使程序跳转到中断服务函数中执行 17.5. 定时器工作模式 •STC89C52的T0和T1均有四种工作模式 模式013位定时器/计数器 模式116位定时器/计数器常用 模式28位自动重装模式 模式3两个8位计数器 •工作模式1框图 •SYSclk系统时钟即晶振周期本开发板上的晶振为12MHz 17.6. 中断系统 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求要求CPU暂停当前的工作转而去处理这个紧急事件处理完以后再回到原来被中断的地方继续原来的工作这样的过程称为中断。实现这种功能的部件称为中断系统请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源当几个中断源同时向CPU请求中断要求为它服务的时候这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队优先处理最紧急事件的中断请求源即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序)发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序转而去处理优先级更高的中断请求源处理完以后再回到原低级中断服务程序这样的过程称为中断嵌套。这样的中断系统称为多级中断系统没有中断嵌套功能的中断系统称为单级中断系统。 17.7. 中断程序流程 17.8. 中断资源 •中断源个数8个外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3 •中断优先级个数4个 •中断号 •注意中断的资源和单片机的型号是关联在一起的不同的型号可能会有不同的中断资源例如中断源个数不同、中断优先级个数不同等等 17.9. 定时器和中断系统 17.10. 定时器相关寄存器 18. 按键控制LED流水灯模式定时器时钟 18.1. 计时器子函数与中断子函数测试程序 #include REGX52.hvoid TimerR0_Init() //定时器初始化子函数 {//TMOD0x01; //0000 0001;如果同时使用T0与T1则此TMOD赋值方式有问题//TMODTMOD0xf0;//把TMOD低4位清0高4位不变与清0//TMODTMOD|0x01;//把TMOD最低位置1高4位不变或置1TMOD0xf0;//上述简写TMOD|0x01;//上述简写TF00;TR01;TH064535/256; //高8位数值,从64535到65535需要1000us超出65535后溢出TL064535%256; //低8位数值ET01;EA1;PT00; }void main() //主程序 {TimerR0_Init();while(1){}}unsigned int T0_Count; void TimerR0_Routine() interrupt 1 //中断子函数 {TH064535/256; //重新赋予初值防止从0开始计数TL064535%256; //重新赋予初值防止从0开始计数 T0_Count;if(T0_Count1000){T0_Count0;P2_0~P2_0;} }18.2. STC-ISP中定时器的相关配置 上述程序与STC-ISP中的示例定时器计算器中的程序有1us的差距同时需要注意STC-ISP中的软件的配置 此时的C代码为 void Timer0_Init(void) //1毫秒12.000MHz {//AUXR 0x7F; //定时器时钟12T模式新版本问题此语句删除TMOD 0xF0; //设置定时器模式TMOD | 0x01; //设置定时器模式TL0 0x18; //设置定时初始值 计算后与64535%25617不同TH0 0xFC; //设置定时初始值 计算后与64535/256相同 TF0 0; //清除TF0标志TR0 1; //定时器0开始计时 } 18.3. 示例18.1中的程序更新后如下 #include REGX52.hvoid TimerR0_Init() //定时器0初始化子函数 {TMOD0xf0;//上述简写TMOD|0x01;//上述简写TF00;TR01;TH00xfc; //高8位数值,从64535到65535需要1000us超出65535后溢出TL00x18; //低8位数值ET01;EA1;PT00; }void main() //主程序 {TimerR0_Init();while(1){}}unsigned int T0_Count; void TimerR0_Routine() interrupt 1 //中断子函数 {TH064535/256; //重新赋予初值防止从0开始计数TL064535%256; //重新赋予初值防止从0开始计数 T0_Count;if(T0_Count1000){T0_Count0;P2_0~P2_0;} }18.4. 定时器函数模块化模块化定时器的初始化程序TimeR0.c #include REGX52.H /*** brief 定时器初始化子函数1ms12MHz* param 无* retval 无*/void TimeR0_Init() //定时器初始化子函数 {//AUXR 0x7F; //定时器时钟12T模式TMOD 0xF0; //设置定时器模式TMOD | 0x01; //设置定时器模式TL0 0x18; //设置定时初始值TH0 0xFC; //设置定时初始值TF0 0; //清除TF0标志TR0 1; //定时器0开始计时ET01;EA1; //PT00; //中断优先级 }//以下程序全部注释方便后续调用定时器中断函数模板 // //void TimeR0_Routine() interrupt 1 //中断子函数 //{ // static unsigned int T0Count //设置静态子函数用T0Count防止T0Count丢失 // TL00x18; //设置定时初始值 // TH00xFC; //设置定时初始值 // T0Count; // if(T0Count1000) // { // T0Count0; // // } //}TimeR0.h #ifndef _TIMER0_H_ #define _TIMER0_H_ void TimeR0_Init();#endif18.5. 4个独立按键的模块化程序Four_Key.c #include REGX52.h #include delay_xms.h /*** brief 4个独立按键按下判断程序按键松手返回KeyNum* param 无* retval KeyNum 的返回值0~4无按键按下时返回值为0*/unsigned char Four_Key() {unsigned char KeyNum0;if(P3_10){delay_xms(20);while(P3_10);delay_xms(20);KeyNum1;}if(P3_00){delay_xms(20);while(P3_00);delay_xms(20);KeyNum2;}if(P3_20){delay_xms(20);while(P3_20);delay_xms(20);KeyNum3;}if(P3_30){delay_xms(20);while(P3_30);delay_xms(20);KeyNum4;}return KeyNum; } Four_Key.h #ifndef __H_ #define __H_ unsigned char Four_Key();#endif针对建立好的模块化程序进行简单测试按下相应按键P2的相应的LED灯亮起 #include REGX52.h #include TimeR0.h #include Four_Key.hunsigned char keynum; void main() //主程序 {TimeR0_Init();while(1){keynumFour_Key();if(keynum){if (keynum1){P2_0!P2_0;}if (keynum2){P2_1!P2_1;}if (keynum3){P2_2!P2_2;}if (keynum4){P2_3!P2_3;} }}}void TimerR0_Routine() interrupt 1 //中断子函数 {static unsigned int T0Count; //设置静态子函数用T0Count防止T0Count丢失TL00x18; //设置定时初始值TH00xFC; //设置定时初始值T0Count;if(T0Count1000){T0Count0;} }测试程序Proteus中测试没有问题按键按一下相应LED灯亮起再按一下熄灭同时测试了独立按键检测程序和中断函数模块程序没有问题。 18.6. LED流水灯控制的实现 通过包含 INTRINS.h的函数库中的_cror_与_crol_循环左移与循环右移函数来实现 #include REGX52.h #include TimeR0.h #include Four_Key.h #include INTRINS.hunsigned char keynum,LED_Mode; //增加LED_Mode变量控制LED灯模式void main() //主程序 {TimeR0_Init();P20xfe; //P2口LED灯赋予初始值保证至少1个LED灯亮起while(1){keynumFour_Key();if(keynum){if (keynum1) //当S1按下松开后{LED_Mode; //LED_Mode数值自动更新if (LED_Mode2) LED_Mode0;}}}}void TimerR0_Routine() interrupt 1 //中断子函数 {static unsigned int T0Count; //设置静态子函数用T0Count防止T0Count丢失TL00x18; //设置定时初始值TH00xFC; //设置定时初始值T0Count;if(T0Count500){T0Count0;if (LED_Mode0)P2_crol_(P2,1);//通过_crol_(P2,1)函数控制LED左移if (LED_Mode1)P2_cror_(P2,1);//通过_cror_(P2,1)函数控制LED右移} }18.7. 通过LCD1602来制作一个定时器时钟程序定时器时钟程序如下 #include REGX52.h #include LCD1602.h #include TimeR0.hunsigned char sec55,min59,hour23; void main() {TimeR0_Init();LCD_Init();LCD_ShowString(1,1,Clock:);//1行1列显示ClockLCD_ShowString(2,1, : :);//2行中需要显示的分割冒号while(1){LCD_ShowNum(2,7,sec,2);//秒显示LCD_ShowNum(2,4,min,2);//分钟显示LCD_ShowNum(2,1,hour,2);//小时显示}}void TimeR0_Routine() interrupt 1 //中断子函数 {static unsigned int T0Count; //设置静态子函数用T0Count防止T0Count丢失TL00x18; //设置定时初始值TH00xfc; //设置定时初始值T0Count;if(T0Count1000){T0Count0;sec;if(sec60){sec0;min;if(min60){min0;hour;if(hour24){hour0;}}}}}proteus测试结果没问题
http://www.w-s-a.com/news/644035/

相关文章:

  • 住房和城乡建设网站 上海自己做网站还是公众号
  • 投票网站怎么制作电商网站模板html
  • 攀枝花移动网站建设抖音广告投放平台
  • 什么是网站设计第一装修网
  • 公司网站建设一条织梦门户网站源码
  • 网站改版中su域名注册
  • 做网站有没有前途济南产品网站建设外包
  • 网站备案咨询做静态网站多少钱
  • 软件开发和网站建设一样吗太原今天最新通知
  • 网站推广如何做的表白制作网站
  • 网站风格分析免费织梦网站源码
  • 大连手机自适应网站建设织梦做音乐网站
  • 烟台网站建设优化网页设计师证
  • 手机微网站建设多少钱个人网站 wordpress
  • 做外贸是不是必须有网站wordpress网络图片
  • 赣县企业网站建设用dw做网站的基本步骤
  • 辽源网站建设微信小程序公众平台
  • 多媒体网站设计开发是指什么常宁网站建设
  • 淄博网站推广优化17岁在线观看免费高清完整版
  • 企业形象网站开发业务范畴wordpress最好最全的教程
  • 企业网站的建立意义网站首页制作网站
  • 网站制作过程内容深圳最好的活动策划公司
  • 深圳网站关键词排名查询公司网站怎么做啊
  • 微网站 制作平台广州电商聚集地
  • 建设外国商城网站网站服务器 虚拟主机
  • 天河网站建设开发电子商务公司名字大全
  • 站长推荐为何用wdcp建立网站连不上ftp
  • 云南旅行社网站开发学编程多久可以写游戏辅助
  • 推广网站的步骤网站备案号中信息有变
  • 优秀企业建站织梦能不能做门户网站