- 1、本文档共65页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目5 定时器与脉冲计数器的设计
5.1.1.1 单片机定时/计数器的结构 main()函数中: TMOD=0x01;//设置定时器0为工作方式1 TH0=0xFE; //定时器0高8位给初值 TL0=0xC0; //定时器0低8位给初值 EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 中断服务程序中重新装入定时初值 void timer0() interrupt 1 { TH0=0xFE; //定时器0高8位给初值 TL0=0xC0; //定时器0低8位给初值 } 任务操作 (2)软件程序设计 #includeAT89X51.h void sTime ( ) //定时1s子程序 { unsigned int i; TMOD=0x00; //设定时器1为方式0 TH1=0x63; //置定时器初值 TL1=0x18; TR1=1; //启动T1 for(i=0; i=200 ; ) { if ( TF1 == 1) //查询计数溢出 { i++; TF1=0; TH1=0x63; //重新置定时器初值 TL1=0x18;} } return ; } //发光二极管定时1s闪烁主程序 void main() { for( ; ; ) { P1_0=!P1_0; //取反P1.0 使发光二极管闪烁 sTime (); //调用1s定时 } } 1.任务要求 本任务要求用AT89C51的定时器0方式1设计一只1 秒的定时器,使AT89C51的P0和P2端口控制的2组16只LED流水灯定时1秒滚动点亮。 (2) 软件程序设计 #includeAT89X51.h #includeintrins.h #define uchar unsigned char //流水灯定时1s滚动主程序 void main( ) { uchar T_Count = 0; //累加计数溢出发生的次数 P0 = 0xFE; //点亮D1灯 P2 = 0xFE; //点亮D16灯 TMOD = 0x01; //定时器0工作于方式1 TH0 =(65536-50000)/256; //50ms定时初值 TL0 =(65536-50000)%256; TR0 = 1; //启动定时器 while(1) { if(TF0 = = 1) //定时溢出标志位为1时表示计时溢出 { TF0 = 0; //软件清零 TH0 =(65536-50000)/256; //重置50ms定时 TL0 =(65536-50000)%256; if(++T_Count == 20) //50*20=1000ms后LED滚动一次 { P0 = _crol_(P0,1); P2 = _crol_(P2,1); T_Count = 0; } } } } 1.任务要求 本任务要求用AT89C51的定时器1方式2设计一只1 秒的定时器,用定时器的查询方式,使AT89C51控制
文档评论(0)