各位大佬帮我看看这段代码什么问题啊
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;
}
}
}
看起来没什么问题。 你的程序没有什么问题,当P5.4为高电平并且P5.5为低电平时P3.2为高电平,否则P3.2为低电平。
如果程序烧录到你板子上运行不正常的话,先检查一下板子焊接是否正常,把P3.2外围电路断开,直接测量芯片脚位电平试试。 缺了一个sfr P3 = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。 51 单片机是吧? 有的单片机默认输出高电平的,你用个万用表量一下。主程序里什么也别写。 就个While。 你量一下pin 看看是不是高电平。如果是高电平你就写寄存器改低就行了。 我前两天也是碰见一样的问题我还以为单片机坏了。 都怪当时学51的时候没有自己深入研究 晓飛飛 发表于 2024-5-29 22:43
缺了一个sfr P3 = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。
还是版主厉害{:5_278:} 晓飛飛 发表于 2024-5-29 22:43
缺了一个sfr P3 = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。
大佬,我就是看了例程直接复制上去的,我也奇怪为什么不定义 P0 P1 P2 P3的寄存器直接一下跳到P5的寄存器定义了,你看下官方的例程这个确实没看见啊 晓飛飛 发表于 2024-5-29 22:43
缺了一个sfr P3 = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。
我把这个P3定义上去显示重定义了 "reg51.h"头文件里面已经定义了传统51芯片的寄存器,包括P0~P3寄存器。
使用"reg51.h"头文件的话,这些寄存器就不用再定义了。
检查硬件吧,代码实测没问题
页:
[1]
2