- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例6-16】设单片机的fosc=12MHz,要求在P1.0上产生周期为2ms的方波。 要在P1.0上产生周期为2ms的方波,定时器应产生1ms的周期性定时,定时到对P1.0取反。 要产生1ms的定时,应选择方式1,定时器方式。 TMOD的确定:选择定时器/计数器T0,定时器方式。方式1,GATE不起作用,高4位为0000,TMOD=01H。 TH、TL的确定:单片机的fosc=12MHz,则单片机的机器周期为1ms,1ms=1000ms,计数器的计数初值为65 536-1000,TH0=(65 536-1000)/256,TL0=(65 536-1000)%256。 * 【例6-17】设系统时钟频率为12MHz,编程实现从P1.1输出周期为1s的方波。 要输出周期为1s的方波,应产生500ms的周期性定时,定时到则对P1.1取反即可实现。 由于定时时间较长,一个定时器/计数器不能直接实现,一个定时器/计数器最长定时时间为65ms多一点,可以用以下两种方法实现。 * (1)方法一 用定时/计数器T0产生周期性为10ms的定时,然后用一个变量对10ms计数50次。系统时钟为12MHz,定时/计数器T0定时10ms,计数值N为10000,选方式1,方式控制字(01H),则初值X为X=65 536-10 000。 * (2)方法二 用定时/计数器T1计数实现,对10ms计数50次。定时/计数器T1工作于计数方式时,计数脉冲通过T1(P3.5)输入。设定时/计数器T0定时时间到对P1.0取反一次,则T1(P3.5)每10ms产生一个计数脉冲,那么定时500ms只需计数25次,设定时/计数器T1工作于方式2,初值X=256-25=231,TH1=TL1=231。因为定时/计数器T0工作于方式1,定时方式,则这时方式控制字(61H)。定时/计数器T0和T1都采用中断方式工作。 * 【例6-18】设系统时钟频率为12MHz,编程实现:P1.1引脚上输出周期为1s,占空比为20%的脉冲信号 根据输出要求,脉冲信号在一个周期内高电平占0.2s,低电平占0.8s,超出了定时器的最大定时间隔,因此利用定时器0产生一个基准定时配合软件计数来实现。取50ms作为基准定时,采用工作方式1,这样这个周期需要20个基准定时,其中高电平占4个基准定时。 * 【例6-21】利用定时器的门控位GATE测量正脉冲宽度,脉冲从(P3.3)引脚输入。门控位GATE=1,定时器/计数器T1的启动受到外中断1引脚的控制,当GATE=1,TR1=1时,只有引脚为高电平时,T1才被允许计数(定时器/计数器0具有同样特性),利用GATE的这个功能,可以测量引脚(P3.3)上正脉冲的宽度(机器周期数),其方法如图6-22所示。 * * 谢 谢! 放映结束 感谢各位批评指导! 让我们共同进步 【例6-5】定时器工作方式初始化 单片机外接晶振频率fosc=12MHz,定时器/计数器0工作于定时方式,且允许中断,定时时间为20ms,令其工作在模式1。用C语言进行初始化编程。 ①TMOD的确定 定时器/计数器0工作于定时方式,从而C/=0;门控位不起作用,则GATE=0。定时器0工作于模式1,所以M1M0=01。定时器1不用,TMOD01H。 * ②初值的确定 外部晶振频率fosc=12MHz,则MCS-51单片机机器周期为1。计数寄存器为16位,因此定时器的计数初值为:X=(65 536-20 000)/1。 计数寄存器初值分别为:TH0 = (65 536-20 000)/256,TL0 = (65 536-20 000)%256 或者计数寄存器初值分别为:TH0 =-20 000/256,TL0 = -20 000%256。 * ③初始化程序 TMOD=0x01;//设置定时器工作方式 TH0=(65536-20000)/256;//TH0赋初值 TL0=(65536-20000)%256;//TL0赋初值 TR0=1;//启动计数器 ET0=1;//开计数器中断 EA=1; * 6.4 定时器/计数器不同工作模式下的C51编程 6.6.1工作模式1的C51编程 6.6.2工作模式2的C51编程 6.6.3工作模式3的C51编程 * 6.6.1工作模式1的C51编程 【例6-6】 假定MCS-51单片机外接12MHz晶振,需要在P1.0上输出频率为50Hz的方波,即周期为20ms。此时可以采用定时器T1工作于模式1,使定时器产生10ms的定时,通过定时中断来产生P1.0端口的方波信号输出。 * * #include reg51.h //头文件 sbit Wave=P1^0; //位定义 void T1ISR
文档评论(0)