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

来源:互联网 发布:杭州 大数据公司 编辑:程序博客网 时间:2024/06/06 00:33

问题描述:

若系统时钟频率为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 charuchar 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;}
原创粉丝点击