[英]MPLAB infinite loop
我有两个问题。
第一个:我在这段代码的行为上有问题; 当我在Proteus中运行该程序时,会使flasher“重复主函数中的代码”该怎么办?
这是代码:
#include <p18f452.h>
#include <delays.h>
#include <io.h>
void main ()
{
TRISC=0x00;
PORTC=0xff;
Delay1KTCYx(900);
PORTC=0x00;
Delay1KTCYx(900);
while(1)
{
}
}
第二个问题:我可以使用什么适当的延迟函数? 以及如何测量延迟时间?
看门狗是否在仿真中被禁用? 如果启用,将导致程序重复。
尝试在包含之后添加此行。
#pragma config WDT = OFF
您仅具有生成一个闪存的代码。 将闪光灯和延迟移入循环:
for(;;)
{
PORTC = 0xff;
Delay1KTCYx(900);
PORTC = 0x00;
Delay1KTCYx(900);
}
可以通过使用秒表计时N次闪光来手动进行粗略测量。 如果有的话,使用测量仪器当然更容易(示波器非常适合此操作)。
另外,由于占空比为50%,因此可以简化代码:
PORTC = 0;
for (;;)
{
PORTC = ~PORTC;
Delay1KTCYx(900);
}
这使用按位非(〜)来反转PORTC
的位,这将使它们从1切换为零,反之亦然。 在循环之前将整个端口设置为0,以确保所有引脚都处于已知状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.