永发信息网

单片机1602一个读忙程序的问题,请大神赐教???

答案:3  悬赏:0  手机版
解决时间 2021-03-26 13:44
单片机1602一个读忙程序的问题,请大神赐教???
最佳答案

while(1)
{

busy_flag = (bit)(P0 & 0x80);// (bit)的意思是把(P0 & 0x80)位与的结果强制转换为位类型的变量
if(busy_flag == 0)
{
break; //busy_flag为0时退出LCD等待检测
}
}追问我就是想既然已将P0=0xff,那么P0八个io口就都是高电平了,最高位自然也是1啊,P0&0x80也就是11111111&10000000那不管怎样最高位都是1啊,这样的话,读到的就永远都是忙了,这怎么理解呢?求赐教?追答单片机P0口8个端口与1602液晶的D0-D7位相连,1602液晶的D7也就是最高位是1602液晶的BUSY忙标志位,当1602液晶处于空闲状态时此位为0,忙状态时此位为1;而单片机P0^7与1602液晶的D7位物理是相连的,那么当1602处于空闲状态时,P0^7口就被拉低为0了追问谢谢你的指点,由于我只是一名还在读大一的学生,所以对你的回答我不是特别能够理解,(程序开始已经将P0的最高为赋为高电平,为何1602空闲就强制将其拉低了呢?对这个我的想法不知正不正确,就是将其和下拉电阻将电平拉低原理来理解。不知正不正确,多打扰了,求指点一下)但我知道你很厉害,你一定是位高手,谢谢你的指导,非常感谢!!!!追答我也不是什么高手,只是比你学的时间多些吧
51单片机的P0端口与P1 P2 P3口不同的是没有上拉电阻,你看下其相关的资料就懂了

1602空闲还是忙状态是1602自己内部输出的,P0^7口只是作为输入去读取它;把P0口置为0xFF的目的是不让P0口出输入0x00,这样就可以去作为输入,当LCD D7位变化为0时,P0^7就能检测到。
而为什么0能把1拉下去,因为0的能量比1的能量大吧(你现在就这么认为),传统51单片机P0都是没有上拉电阻的,现在很多增强51单片机的P0口与其它IO都一样了,都有上拉电阻;就算有这个上拉电阻,例如这个上拉电阻只能提供10MA的电流,如果外部一个0信号的电流可能是20MA,那么是不是就被拉为0了。
结果就是不管P0口有没有上拉,就算有上拉了电流也比较小,如果外部的电平信号电平比单片机IO口电流大,那么就按外部的电平信号说了算
全部回答
P0赋值0xff的目的是将IO切换到输入状态,这段是51的io特性书上有的.
这个是典型的关于51单片机的问题,所有的讲51单片机的书上都会指出,
它的端口是弱上拉的结构,读取端口状态之前必须写1。
下面说一下为什么读之前需要先写1.
写1,写的是输出锁存器,读取,读得是端口的状态,或者说是外部输入。这两个操作访问的硬件是不一样的。
输出锁存器输出1的时候,外部电路可以把端口的高电平拉成低电平,因为51是弱上拉。反之,输出锁存器输出0的时候,外部电路是很难把端口的低电平拉成高电平的,拉成高电平就意味着芯片的管脚损坏。
所以,读之前,输出必须写1,这样外部输入可以是高,也可以是低,不会损坏芯片的管脚。反之,如果写0,那么外部电路只能是低电平,如果是高电平,要么读不到,要么管脚损坏。
当然,具体管脚上的硬件要比这里说的复杂,但原理上大概是这样。
回到你的问题,
P1=0xFF是写P1的输出,让输出维持高电平,或者说弱上拉状态。
P1&0x80并不是你想的0xFF&0x80,而是取P1的当前输入的状态与0x80进行与运算。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
理财寻求稳定,不愿意承担太大风险"是属于人
单选题唐政府在广州设置的管理对外贸易的官职
曜变天目和曜变见盏的区别是什么
求音乐:祈隆的歌
天然砗磲手串的保养方法有哪些
考前不要吃什么,考前吃什么有助于发挥
什么得认真词语填空?
清炒红菜怎么做
我拿工作单给女孩签名,我站在女孩身后,女孩
40Cr零件淬火45HRC,上面的螺纹不让淬火是否
严姓的来历
个人二手房买卖,自己办手续,需经那些流程程
求助:怎样可以切断车内喇叭的电
歌词当你辉煌的时候忘记我,有困难的时候要想
鬼节能上坟吗
推荐资讯
淘宝买的显卡刚开始玩lol还可以后来就卡的不
为什么先拐的图像温度高压强大,这一现象要
『雅迪Z3』想换大灯灯泡,谁知道怎么换
花700万通过婚介所来征女友,这什么思路
校草一定是全学校最帅的吗?
猴男和猴女相配吗
S可以表示单质,那么S的化学价是不是0
在上海外地七十岁以上老人乘地铁是否免费
芝麻油放冰箱就结冻
要进入民航学院飞行技术专业是不是高考前都得
麸子和糠的区别
求12米宽9米长的房屋设计图??
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?