首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MPLAB无限循环

MPLAB无限循环
EN

Stack Overflow用户
提问于 2017-04-21 19:16:28
回答 2查看 377关注 0票数 0

我有两个问题。

第一:我有一个问题,这段代码的行为;当我在Proteus中运行它时,程序使flasher“在主函数中重复代码”,我应该怎么做?

代码如下:

代码语言:javascript
运行
复制
#include <p18f452.h>
#include <delays.h>
#include <io.h>

void main ()
{
    TRISC=0x00;
    PORTC=0xff;
    Delay1KTCYx(900);
    PORTC=0x00;
    Delay1KTCYx(900);
    while(1)
    {

    }
}

第二个问题:我可以使用的合适的延迟函数是什么?如何测量延迟时间?

EN

回答 2

Stack Overflow用户

发布于 2017-04-21 21:00:51

在模拟中是否禁用了看门狗?如果启用,将导致程序重复。

尝试在includes之后添加此行。

代码语言:javascript
运行
复制
#pragma config WDT = OFF
票数 2
EN

Stack Overflow用户

发布于 2017-04-21 19:27:22

你只有一段代码来生成一次闪光。将闪光灯和延迟移动到循环中:

代码语言:javascript
运行
复制
for(;;)
{
  PORTC = 0xff;
  Delay1KTCYx(900);
  PORTC = 0x00;
  Delay1KTCYx(900);
}

粗略的测量可以通过用秒表计时N次闪光来手动进行。当然,如果你有测量仪器(示波器是很好的选择),使用它会更容易。

此外,由于您的占空比为50%,因此可以简化代码:

代码语言:javascript
运行
复制
PORTC = 0;
for (;;)
{
  PORTC = ~PORTC;
  Delay1KTCYx(900);
}

这使用逐位not (~)来反转PORTC的位,这将使它们从1切换到0,反之亦然。在环路之前将整个端口设置为0可确保所有引脚都处于已知状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43541346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档