繁体   English   中英

MPLAB无限循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM