1. 掌握定时器编程的初始化设置;
2. 掌握定时器查询和中断两种不同的编程思路。
练习内容
1、用T1作为信号发生器来使用,要求从P1.0产生周期性(周期值自定)方波;
2、分别采用查询方式一和中断方式二来实现。
一、练习程序编写:
?
查询方式
#include <REGX52.H>
sbit P20=P2^0;
void main()
{ char i=100;
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
while(1)
{ for(;i>0;i--)
{
while(!TF0);
TF0=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
}
P20=!P20;
i=10;
}
}
中断的
#include <REGX52.H>
sbit P20=P2^0;
unsigned char i=100;
void main()
{
IE=0x82;
TMOD=0x01;
TR0=1;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
while(1);
}
void INTO_(void) interrupt 1
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
i--;
if(i<=0){P20=~P20;i=10;}
}
二、如果晶振频率调整为24MHz,如果要求周期不变,则定时器初始值怎么计算?
计算过程:12*(1/24)=0.5us
一个机器周期为0.5us
若要2ms周期,即1ms翻转一次
THL=(65535-2000)/256;
THL=(65535-2000)%256
结果 分析 | 查询和 中断俩种方式都可以完成脉冲的形成。 |
|