DHBT2023
发表于 2024-9-24 21:50:14
if(weight < g_w)
{ //if(B_2ms == 1) { B_2ms = 0; zt++; }
// if(zt==5)
delayms(10); P20=1;
}
这次P20=1;动作了。
DHBT2023
发表于 2024-9-24 21:51:33
是定时器没有打开?
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:52:22
还是这个写法不好用?
void Timer0_Isr(void) interrupt 1
{
B_2ms = 1;
}
DHBT2023
发表于 2024-9-24 21:53:00
我不想用 delayms(10);
DHBT2023
发表于 2024-9-24 21:53:59
delayms()超过20ms 595就会闪、
DHBT2023
发表于 2024-9-24 21:56:18
王昱顺 发表于 2024-9-24 21:42
编译正确≠逻辑正确
你的初始化看样子是每次都在执行,这样是无法做到定时功能的。
定时器初始化执行一次 ...
谢谢
DHBT2023
发表于 2024-9-24 21:57:28
王昱顺 发表于 2024-9-24 21:42
编译正确≠逻辑正确
你的初始化看样子是每次都在执行,这样是无法做到定时功能的。
定时器初始化执行一次 ...
定时器中断输出后,怎么关闭定时器?
soma
发表于 2024-9-24 21:58:29
Timer0_Init()在if后就一直开启没有停止,B_2ms一直为1.
DHBT2023
发表于 2024-9-24 21:58:36
我个人感觉就是定时器没有打开。或者还在上一次定时中,而无法正确定时
晓飛飛
发表于 2024-9-24 22:11:05
你可以否描述下期望实现的功能,这里有很多人可以给你更好的解决方案,停留在自己的思维世界里拔不出来不利于解决问题,或者看看书,适当的放松一下更好。