c语言真的很难 2023-01-16 23:05 采纳率: 94.1%
浏览 19
已结题

51单片机定时器为什么不能定时2s,定时2s灯就一直不亮


#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;


sbit  LED1=P2^0;
sbit  LED2=P2^1;


void delay_10us(u16 ten_us)
{
            while(ten_us--);
}    

void delay_ms(u16 ms)
{    
        u16 i,j;
        for(i=ms;i>0;i--)
            for(j=110;j>0;j--);
}    

void time0_init(void)
{
        TMOD|=0X01;
        TH0=0xFC;
        TL0=0x66;
        EA=1;
        ET0=1;
        TR0=1;
}    

void time1_init(void)
{
        TMOD|=0X10;
        TH1=0xfe;
        TL1=0x33;
        EA=1;
        ET1=1;
        TR1=1;
}    


void main()
{
            time0_init();
            time1_init();
            while(1)
            {        
                
            }
}

void time0() interrupt    1
{
        static u16 i=0;
        i++;    
        TH0=0xFC;
        TL0=0x66;
        if(i==1000)
        {    
            i=0;
            LED1=!LED1;
        }
}


void time1() interrupt    3
{
        static u16 i=0;
        i++;    
        TH1=0xfe;
        TL1=0x33;
        if(i==1000)
        {    
            i=0;
            LED2=!LED2;
        }
}
 

img


51单片机定时器为什么不能定时2s,定时2s灯就一直不亮

  • 写回答

2条回答 默认 最新

  • 智者知已应修善业 2023-01-17 07:45
    关注

    通常2秒定时是在定时期基础上另行计数实现的,比如定时器设置50毫秒那么计数40次就是2秒,定时器初值越小精度越高也越易调整;
    开2个定时器直接TMOD=0X11;即可因此可以2个初始设置合并为一个即可.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月16日

悬赏问题

  • ¥15 如何证明高斯噪声的包络公式
  • ¥150 寻找王者荣耀开发作者,合作或者解答
  • ¥15 乳腺癌数据集 相关矩阵 特征选择
  • ¥15 我的游戏账号被盗取,请问我该怎么做
  • ¥15 通关usb3.0.push文件,导致usb频繁断连
  • ¥15 有没有能解决微信公众号,只能实时拍照,没有选择相册上传功能,我不懂任何技术,,有没有给我发个软件就能搞定的方法
  • ¥15 Pythontxt文本可视化
  • ¥15 如何基于Ryu环境下使用scapy包进行数据包构造
  • ¥15 springboot国际化
  • ¥15 搭建QEMU环境运行OP-TEE出现错误