51单片机读取P1数据

[复制链接]
8624|10
 楼主| happytong 发表于 2021-8-12 21:26 | 显示全部楼层 |阅读模式
51单片机读取P1数据  P1口数据有ad0804转换而来,P1口硬件没有上拉电阻,小白写的程序如下:while(1)        {     
                   aa=0;
                   read();                 //AD转换
                   P1=0xff;
                   aa=P1;
                if(aa>0x84)
                {
                                fmq=0;
                }

                if(aa<0x84)
                {
                                fmq=1;
                }

程序运行时,接P1的灯指示根据输入变化,而读取的值(程序中的aa)貌似一直不变,判断理由是蜂鸣器一直响(fmq=0),高人指导一下。
橘子阿小 发表于 2021-8-13 10:02 | 显示全部楼层
你的变量aa一直没有变化
 楼主| happytong 发表于 2021-8-13 10:25 | 显示全部楼层
橘子阿小 发表于 2021-8-13 10:02
你的变量aa一直没有变化

P1口的数据来源于ADC转换的数据,aa怎么会没有变化呢?
ningling_21 发表于 2021-8-13 14:22 | 显示全部楼层
happytong 发表于 2021-8-13 10:25
P1口的数据来源于ADC转换的数据,aa怎么会没有变化呢?

0804能否正常转换?
 楼主| happytong 发表于 2021-8-13 14:49 | 显示全部楼层
ningling_21 发表于 2021-8-13 14:22
0804能否正常转换?

现在我怀疑的是AD 参考电压的问题,下班后试一下
daibumeikuai 发表于 2021-8-13 15:09 | 显示全部楼层
while(1)  里 a=0,P1=0xff;  去掉,放在初始化,  read() 后面 加点延时  
  1. while(1){
  2. ad_read();
  3. delay_ms();
  4. a=P1;
  5. 。。。。

  6. }
daibumeikuai 发表于 2021-8-13 15:11 | 显示全部楼层
默认 P1 是双向口, 读取ad后, P1=0xff 变成输出了,a一直不变。
 楼主| happytong 发表于 2021-8-13 17:00 | 显示全部楼层
daibumeikuai 发表于 2021-8-13 15:11
默认 P1 是双向口, 读取ad后, P1=0xff 变成输出了,a一直不变。

我原先写的时候是没有P1=0XFF,效果一样蜂鸣器一直响,用KEIL 模拟没有问题,输入数值判断后进入相应的循环,现在我怀疑是AD转换,不过你的建议回去后试一下
 楼主| happytong 发表于 2021-8-13 19:58 | 显示全部楼层
daibumeikuai 发表于 2021-8-13 15:11
默认 P1 是双向口, 读取ad后, P1=0xff 变成输出了,a一直不变。

故障依旧
撕马男追 发表于 2021-8-16 16:05 | 显示全部楼层

51单片机读取P1数据

aa一直等于0xff
 楼主| happytong 发表于 2021-8-16 20:38 | 显示全部楼层
问题已解决,故障在AD转换后RD没有置高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

40

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部