打印

51单片机读取P1数据

[复制链接]
7870|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能否正常转换?

使用特权

评论回复
5
happytong|  楼主 | 2021-8-13 14:49 | 只看该作者
ningling_21 发表于 2021-8-13 14:22
0804能否正常转换?

现在我怀疑的是AD 参考电压的问题,下班后试一下

使用特权

评论回复
6
daibumeikuai| | 2021-8-13 15:09 | 只看该作者
while(1)  里 a=0,P1=0xff;  去掉,放在初始化,  read() 后面 加点延时  
while(1){
ad_read();
delay_ms();
a=P1;
。。。。

}

使用特权

评论回复
7
daibumeikuai| | 2021-8-13 15:11 | 只看该作者
默认 P1 是双向口, 读取ad后, P1=0xff 变成输出了,a一直不变。

使用特权

评论回复
8
happytong|  楼主 | 2021-8-13 17:00 | 只看该作者
daibumeikuai 发表于 2021-8-13 15:11
默认 P1 是双向口, 读取ad后, P1=0xff 变成输出了,a一直不变。

我原先写的时候是没有P1=0XFF,效果一样蜂鸣器一直响,用KEIL 模拟没有问题,输入数值判断后进入相应的循环,现在我怀疑是AD转换,不过你的建议回去后试一下

使用特权

评论回复
9
happytong|  楼主 | 2021-8-13 19:58 | 只看该作者
daibumeikuai 发表于 2021-8-13 15:11
默认 P1 是双向口, 读取ad后, P1=0xff 变成输出了,a一直不变。

故障依旧

使用特权

评论回复
10
撕马男追| | 2021-8-16 16:05 | 只看该作者

51单片机读取P1数据

aa一直等于0xff

使用特权

评论回复
11
happytong|  楼主 | 2021-8-16 20:38 | 只看该作者
问题已解决,故障在AD转换后RD没有置高。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

40

帖子

0

粉丝