“$MCLR$ 低处理器正在重置”图 18 上的错误

问题描述

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

我尝试编写有关此算法的代码,当我将其加载到 Pic18F45K22 时,它不起作用。 Proteus 显示错误信息,如

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

我设计的电路如下图 1 所示:

Figure 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;
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...