DHBT2023 发表于 2024-9-24 21:17:23

定时器问题?




if (weight > g_w)      
      { P20 = 0 ;         }//低电平输出
if(weight < g_w)

    P20=1; //高电平输出


          这样 程序可以正常工作                     
                                                                                                       

DHBT2023 发表于 2024-9-24 21:22:04

                                          if (weight > g_w)               
                                     { P20 = 0 ; }               //这里可以工作   
                               
                               if(weight < g_w)
                                        Timer0_Init();
                                {if(B_2ms == 1)        { B_2ms = 0;        zt++;}       
                                             if(zt==5)P20=1;                                                      
                                   }
这样P20=1始终不能动作。那位大佬。看一看什么问题?感觉定时器怎么也没有打开。

DHBT2023 发表于 2024-9-24 21:23:10

void Timer0_Init(void)                                //2毫秒@24.000MHz
{
        AUXR |= 0x80;                                                                //定时器时钟1T模式
        TMOD &= 0xF0;                                                                //设置定时器模式
        TL0 = 0x80;                                                                        //设置定时初始值
        TH0 = 0x44;                                                                        //设置定时初始值
        TF0 = 0;                                                                                //清除TF0标志
        TR0 = 1;                                                                                //定时器0开始计数
        ET0 = 1;                                                                                //使能定时器0中断
        EA = 1;
      //IP=0X02;
        //IPH=0X02;
}

DHBT2023 发表于 2024-9-24 21:24:13

这个问题稿了几天了。哪位大佬帮忙分析下。32g12k128的U

晓飛飛 发表于 2024-9-24 21:27:47

你就说想实现什么功能吧,而且你的C语言语法不过关,代码比较乱,从下面方框最后的分号,这个if语句就结束了。


DHBT2023 发表于 2024-9-24 21:39:35

可以编过

王昱顺 发表于 2024-9-24 21:42:23

DHBT2023 发表于 2024-9-24 21:39
可以编过

编译正确≠逻辑正确
你的初始化看样子是每次都在执行,这样是无法做到定时功能的。
定时器初始化执行一次就够了

DHBT2023 发表于 2024-9-24 21:44:57

if (weight > g_w)                       
{ P20 = 0 ; }               
Timer0_Init();
if(weight < g_w)
   {if(B_2ms == 1) { B_2ms = 0;        zt++;}       
    if(zt==5)P20=1; }
                                 // delayms(10);

DHBT2023 发表于 2024-9-24 21:45:32

DHBT2023 发表于 2024-9-24 21:44
if (weight > g_w)                       
{ P20 = 0 ; }               
Timer0_Init();


这个语法没有问题。还是不能动

DHBT2023 发表于 2024-9-24 21:46:14

我刚刚放了delayms(10);在里面。动作了。
页: [1] 2 3
查看完整版本: 定时器问题?