问题描述:
若系统时钟频率为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
#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;
}