定时/计数器的应用实验(T1 工作方式 1 , T0 工作方式 2 )

#include <REGX51.H>//HHY 2022/10/30
#define chuar unsigned char;
#define uint unsigned int ;
int cnt0 = 0;
int cnt1 = 0;
sbit LED0 = P1^7;
sbit LED1 = P1^0;

void Timer1_init() //定时器T1
{
 TMOD|=0x10; //定时器T1方式1   方式1 16位  需要软件重新装初始值
    
 EA=1;
 TR1=1;  //启动 T1    定时器
 ET1=1;  //打开 T1 中断
 
 TH1=(65536-50000)/256;  //为 T1 赋初值 ,定时 定时 50000us=50ms
 TL1=(65536-50000)%256;
}

void Timer0_init() //定时器T0
{
    TMOD|=0x02; //定时器T0方式2   方式2 8位  不需要软件重新装初始值

    EA=1;
    TR0=1;  //启动 T0    定时器
    ET0=1;  //打开 T0 中断

    TH0=256-250;  //为 T0 赋初值,定时 25us 6到256需要 250us
    TL0=256-250;    
}

void t1_int(void) interrupt 3   //定时器T1 工作方式1 1s
{
     TH1=(65536-50000)/256;  //为 T1 重装赋初值 ,定时 50000us=50ms
    TL1=(65536-50000)%256;
    cnt1++;
    if(cnt1==20)
    {
        cnt1=0;
        LED1=~LED1;
    }
}

void t0_int(void) interrupt 1  //定时器T0 工作方式2  0.5s
{
 cnt0++;
    if(cnt0==2000)
    {
        cnt0=0;
        LED0=~LED0;
    }
}

void main(void)
{
 Timer0_init();
 Timer1_init();
 while(1);
}

最后用仿真图验证,用示波器观察周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小何不会敲代码-H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值