王宁08电子本49 第七章.docVIP

  • 5
  • 0
  • 约1.12千字
  • 约 2页
  • 2020-07-26 发布于河北
  • 举报
思考与习题7 7.1 8XX51单片机内部设有几个定时/计数器?它们有哪些专用寄存器组成的? 解:8XX51内部设有两个定时计数器。 它们分别为方式寄存器TMOD跟控制寄存器TCON组成。 定时/计数器用作定时时,其定时时间跟哪些因素有关?用作计数器时,对外界技术频率有何限制? 解:定时跟脉冲,即系统的机器周期有关。还跟计数的初值有关并且跟中断的标志位有关。 用作计数器时计数器 的最高频率脉冲不得超过f/24。 利用8XX51的T0计数,每十个脉冲P1.0变反一次,用查询和中断方式编程。 解: #includereg51.h #define uchar unsigned char Sbit P1._0=P1^0; Main() { TMOD=0x06; TH0=-10;TL0=-10; TR0=1; While(1) { Do{}while(TF0==0) TF0=0;p1_0=-P1_0; }} 已知8XX51单片机中,已知时钟频率为12MHz,编程使p1.0和p1.1分别输出周期为 2ms和50us 的方波。 解: #includereg51.h #define uchar unsigned char Int I,j; Void timer0() interrupt 1 {i++; If(i==40)p1.0=-p1.0; } Void timer1() interrupt 3 { P1.1=-P1.1; } Main() { TOMD=0x11;TH1=-50000/256;TL1=-50000%256; TH0=-50000/256;TL0=-50000%256; EA=1; TR1=1;TR0=1; } } 设系统时钟的频率为6MHz,实用定时器T0作为外部计数器,编程实现每记到1000个脉冲后,使T1定时两秒,然后T0又开始计数,这样反复循环。 解: T0计数1000个脉冲,采用方式1;T1定时2ms,计数初值=2ms/2us=1000。 #includereg51.h Counter() {} TH0=-1000/256;TL0=-1000%256;TR0=1;TR1=0; While(TF0!=1) { TF0=0; } Timer() { TH1=-1000/256;TL1=-1000%256;TR1=1;TR0=0; While(TF1!=0) { TF1=0; } } Main() { TMOD=0x15; For(;;) { } }

文档评论(0)

1亿VIP精品文档

相关文档