繁体   English   中英

“$MCLR$ 低。处理器处于复位状态。” Pic18 上的错误

[英]"$MCLR$ is low. Processor is in reset." Error on Pic18

在这个电路和代码上,我试着做一个计数器,当没有人通过时(例如它是地铁站的通道),处理器的 RC7 引线会读取 1 个值。 如果有人通过,则信号变为0。程序将统计那边经过的人数,并在7段LCD上显示人数直到10。当10人通过通道时,LED(D1 ) 将闪烁 1 秒钟。

我试图写一个关于这个算法的代码,当我把它加载到Pic18F45K22时,它不起作用。 Proteus 显示错误消息,例如,

[PIC18] PC=0x0000. $MCLR$ is low. Processor is in reset. [U1]

我设计的电路如下图 1:

图1

我尝试过的解决方案:

  1. 我用了上拉电阻。 那没起效。
  2. 我们在 Micro C 代码中描述了频率值。 那没起效。

算法如下:

#include <xc.h>
#define _XTAL_FREQ 4000000



unsigned char x=0;
void MSDelay(unsigned int);
void main()
{
    TRISC=0xff;
    TRISA=0x00;
    while(1)
    {
        if (PORTC==0)
        {
            x++;
            MSDelay(200);
        }
        if (x==1)
        {
            PORTA==0x3f;
        }
        if (x==2)
        {
            PORTA==0x06;
        }
        if (x==3)
        {
            PORTA==0x5b;
        }
        if (x==4)
        {
            PORTA==0x4f;
        }
        if (x==5)
        { 
            PORTA==0x66;
        }
        if (x==6)
        {
            PORTA==0x6d;

        }
    }

}

void MSDelay(unsigned int itime){                   //for delay
    unsigned int i;
    unsigned int j;
    for(i=0;i<itime;i++){
        for(j=0;j<165;j++){
        }
    }

}

所以我给你一个答案:
错误在这里:

if (x==1)
    {
        PORTA==0x3f;
    }

如果你想分配一个值,你需要=而不是==

    if (x==1)
    {
        PORTA=0x3f;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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