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)里面会出问题的。
页: 1 [2] 3
查看完整版本: 屠龙刀AI32G12K128定时器问题