DHBT2023
发表于 2024-9-25 17:41:36
while(1);我刚刚也发现了。定时器在while(1)内无法形成中断。在while(1)外却可以,就如楼上。但是既然是while(1)外,我先试一试效果,谢谢
DHBT2023
发表于 2024-9-25 17:45:33
乘风飞扬 发表于 2024-9-25 17:14
主循环里设置P20 = 0,每次循环都会亮灯。
定时器1ms中断里面设置P20 = 1,每1毫秒灭一次灯。
这么快速的亮 ...
是++到5000ms才动作,不是1ms就动作
DHBT2023
发表于 2024-9-25 17:47:46
Lkck8210 发表于 2024-9-25 17:33
你在在while(1)外面调用定时器,我主程序要在while(1)里面运行。怎么弄?
DHBT2023
发表于 2024-9-25 17:54:26
Lkck8210 发表于 2024-9-25 17:33
void main()
{
SYS_Ini();
Timer0_Init();
EA = 1;
P20 = 0;
while (1)
{
if(t_a == 1) { t_a =0;s_a++; }
if(s_a == 5000)P20 =1;
}
}
DHBT2023
发表于 2024-9-25 17:57:46
你这个确实可以。但是我是 P20 = 0 要在while (1)里面。定时中断。P20=1. 就是说。P20=0 和P20=1都要在while (1)里完成,,而不是一个在里面,一个在外面。
DHBT2023
发表于 2024-9-25 18:00:21
DHBT2023 发表于 2024-9-25 17:54
void main()
{
SYS_Ini();
这个定时器可以打开,但是这样写,我P20=1后,在循环里面无法再P20=0
DHBT2023
发表于 2024-9-25 18:02:49
不过也是一种改程序的思路。我原理以为 定时器可以在while循环里,跳出循环中断一下,然后再进入循环运行。现在看来,我弄不好
DHBT2023
发表于 2024-9-25 18:15:52
其实,程序满简单:检测温度,温度到 ,P20=0 驱动负载放水。 500ms后, 释放负载P20=1 。温度降低,继续检测温度,同时 P20要是1状态。。 但是都必须在while (1)里完成。我曾经想把程序写成两部分,没有成功。必须在while (1)里用一个中断去释放P20=1,让P20恢复到1状态。现在看起来在while (1)里要定时器去中断,是不行的。
DHBT2023
发表于 2024-9-25 18:16:44
我在while (1)里面无法打开定时器记数,
soma
发表于 2024-9-25 18:29:50
Timer0_Init();不能放在while(1)里面会出问题的。