我有两个问题。
第一:我有一个问题,这段代码的行为;当我在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)
{
}
}第二个问题:我可以使用的合适的延迟函数是什么?如何测量延迟时间?
发布于 2017-04-21 21:00:51
在模拟中是否禁用了看门狗?如果启用,将导致程序重复。
尝试在includes之后添加此行。
#pragma config WDT = OFF发布于 2017-04-21 19:27:22
你只有一段代码来生成一次闪光。将闪光灯和延迟移动到循环中:
for(;;)
{
PORTC = 0xff;
Delay1KTCYx(900);
PORTC = 0x00;
Delay1KTCYx(900);
}粗略的测量可以通过用秒表计时N次闪光来手动进行。当然,如果你有测量仪器(示波器是很好的选择),使用它会更容易。
此外,由于您的占空比为50%,因此可以简化代码:
PORTC = 0;
for (;;)
{
PORTC = ~PORTC;
Delay1KTCYx(900);
}这使用逐位not (~)来反转PORTC的位,这将使它们从1切换到0,反之亦然。在环路之前将整个端口设置为0可确保所有引脚都处于已知状态。
https://stackoverflow.com/questions/43541346
复制相似问题