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

2019-04-15 15:29发布

问题描述:

若系统时钟频率为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; }