您的位置:首页 > 其它

外部中断与定时器中断——T2定时器

2017-10-19 14:53 471 查看

问题描述:

若系统时钟频率为12MHz,编写软件实现:按一下K键,产生一次外部中断1中断信号,启动T2定时,使P1.1输出周期为2秒的方波。


解决方案:

假设方波信号的占空比为50%,时钟频率为12MHZ,则机器周期为1us,那么选用T2定时,采用工作方式1,2^16=65536us<1s,


采取定时10ms,中断100次,形成1s时间。T2计算初值X=65536-10000=55536=D8F0。

采用T2定时器,应留意与T0和T1定时器的差别,再设置相应寄存器的位数和状态,即可解决。

C语言:

#include <reg52.h>
#define uchar unsigned char
uchar COUNT=0X64;               //软件记数
sbit P11=P1^1;
sfr T2MOD=0XC9;
sfr IPH=0XB7;

void main()
{
//设置相应寄存器的状态
SP=0X60;
T2MOD=0X00;
T2CON=0X00;
TH2=0XD8;
TR2=0;
TL2=0X0F0;
TH2=0XD8;
RCAP2H=0XD8;
RCAP2L=0X0F0;

IE=0XA4;
IP=0X04;
while(1)
{
}
}

void timer1int() interrupt  5
{
TF2=0;
switch(COUNT)
{
case 0:
{
P11=!P11;
COUNT=0X64;
break;
}

default:
COUNT--;
break;
}
}

void int1_int() interrupt   2
{
TR2=1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: