yjx 发表于 2024-5-29 18:01:42

各位大佬帮我看看这段代码什么问题啊

P32无法正常输出电平
#include "reg51.h"


sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;

sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;


sbit P32 = P3^2;

sfr P5   = 0xC8;
sbit P54 = P5^4;
sbit P55 = P5^5;

void main()
{
           P3M0=0X00;
               P3M1=0X00;
           P5M0=0X00;
           P5M1=0X00;
          
                while(1)
                {
                       
                if(P54==1&&P55==0)
                        {
                                P32=1;
                        }
                        else
                        {
                                P32=0;
                        }
                }
       
}

soma 发表于 2024-5-29 18:42:58

看起来没什么问题。

乘风飞扬 发表于 2024-5-29 18:57:09

你的程序没有什么问题,当P5.4为高电平并且P5.5为低电平时P3.2为高电平,否则P3.2为低电平。
如果程序烧录到你板子上运行不正常的话,先检查一下板子焊接是否正常,把P3.2外围电路断开,直接测量芯片脚位电平试试。

晓飛飛 发表于 2024-5-29 22:43:47

缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

嵌入式之路 发表于 2024-5-30 02:14:45

51 单片机是吧? 有的单片机默认输出高电平的,你用个万用表量一下。主程序里什么也别写。 就个While。 你量一下pin 看看是不是高电平。如果是高电平你就写寄存器改低就行了。 我前两天也是碰见一样的问题我还以为单片机坏了。 都怪当时学51的时候没有自己深入研究

zhange 发表于 2024-5-30 05:36:32

晓飛飛 发表于 2024-5-29 22:43
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

还是版主厉害{:5_278:}

yjx 发表于 2024-5-30 08:40:33

晓飛飛 发表于 2024-5-29 22:43
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

大佬,我就是看了例程直接复制上去的,我也奇怪为什么不定义 P0 P1 P2 P3的寄存器直接一下跳到P5的寄存器定义了,你看下官方的例程这个确实没看见啊

yjx 发表于 2024-5-30 08:51:05

晓飛飛 发表于 2024-5-29 22:43
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

我把这个P3定义上去显示重定义了

乘风飞扬 发表于 2024-5-30 09:09:40

"reg51.h"头文件里面已经定义了传统51芯片的寄存器,包括P0~P3寄存器。
使用"reg51.h"头文件的话,这些寄存器就不用再定义了。

晓飛飛 发表于 2024-5-30 10:47:19

检查硬件吧,代码实测没问题
页: [1] 2
查看完整版本: 各位大佬帮我看看这段代码什么问题啊