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

本文介绍如何在12MHz系统时钟下,通过按键触发外部中断,使用定时器T2实现P1.1口输出周期为2秒、占空比50%的方波信号。具体步骤包括配置定时器工作方式、计算初值及编写中断服务程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

若系统时钟频率为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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值