找回密码
 立即注册
查看: 636|回复: 12

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:138
  • 最近打卡:2025-04-29 21:28:54

5

主题

38

回帖

703

积分

高级会员

积分
703
发表于 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;
                        }
                }
       
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-04 00:16:27
已绑定手机

19

主题

3191

回帖

4930

积分

论坛元老

积分
4930
发表于 2024-5-29 18:42:58 来自手机 | 显示全部楼层
看起来没什么问题。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-5-29 18:57:09 | 显示全部楼层
你的程序没有什么问题,当P5.4为高电平并且P5.5为低电平时P3.2为高电平,否则P3.2为低电平。
如果程序烧录到你板子上运行不正常的话,先检查一下板子焊接是否正常,把P3.2外围电路断开,直接测量芯片脚位电平试试。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:418
  • 最近打卡:2025-05-04 00:25:16
已绑定手机

34

主题

2096

回帖

2210

积分

荣誉版主

积分
2210
发表于 2024-5-29 22:43:47 | 显示全部楼层
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:449
  • 最近打卡:2025-04-30 10:57:37

17

主题

533

回帖

1326

积分

金牌会员

积分
1326
发表于 2024-5-30 02:14:45 | 显示全部楼层
51 单片机是吧? 有的单片机默认输出高电平的,你用个万用表量一下。主程序里什么也别写。 就个While。 你量一下pin 看看是不是高电平。如果是高电平你就写寄存器改低就行了。 我前两天也是碰见一样的问题我还以为单片机坏了。 都怪当时学51的时候没有自己深入研究
自信就会温和,温和就会坚定!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:236
  • 最近打卡:2025-05-04 07:52:37

61

主题

818

回帖

1502

积分

金牌会员

积分
1502
发表于 2024-5-30 05:36:32 | 显示全部楼层
晓*** 发表于 2024-5-29 22:43
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

还是版主厉害{:5_278:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:138
  • 最近打卡:2025-04-29 21:28:54

5

主题

38

回帖

703

积分

高级会员

积分
703
发表于 2024-5-30 08:40:33 | 显示全部楼层
晓*** 发表于 2024-5-29 22:43
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:138
  • 最近打卡:2025-04-29 21:28:54

5

主题

38

回帖

703

积分

高级会员

积分
703
发表于 2024-5-30 08:51:05 | 显示全部楼层
晓*** 发表于 2024-5-29 22:43
缺了一个sfr P3   = 0xb0;的寄存器定义,没把握的话最好用官方提供的头文件。

我把这个P3定义上去显示重定义了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-5-30 09:09:40 | 显示全部楼层
"reg51.h"头文件里面已经定义了传统51芯片的寄存器,包括P0~P3寄存器。
使用"reg51.h"头文件的话,这些寄存器就不用再定义了。
截图202405300908168882.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:418
  • 最近打卡:2025-05-04 00:25:16
已绑定手机

34

主题

2096

回帖

2210

积分

荣誉版主

积分
2210
发表于 2024-5-30 10:47:19 | 显示全部楼层
检查硬件吧,代码实测没问题
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 10:21 , Processed in 0.137004 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表