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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度