C51中8位数据能组成一个字节吗,送小姨子咯

2020-02-04 09:26发布

还是用实例说明一下,
8段数码管,数据口分别是a,b,c,d,e,f,g,h  为了布线方便,并没有接在同一个IO口上
实际是这样对应的
a---p1.0
b---p1.1
c---p1.2
d---p1.7
e---p3.4
f---p3.5
g---p3.6
h---p3.7

请问送数据的时候该怎么送呢?
不能像以前接同一个IO口那样,直接 led_data = 0x80; 了

请赐教~

送上小姨子


@_@~~ (原文件名:9000_1248748811W5D5.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
64条回答
sosingle
1楼-- · 2020-02-07 17:20
占座学习~~~IO果然很深奥啊
yy888
2楼-- · 2020-02-07 19:49
 精彩回答 2  元偷偷看……
tage
3楼-- · 2020-02-07 20:35
题不会,小姨子收下了。
Alexkey
4楼-- · 2020-02-07 22:09
不好意思,眼里只有美女了,没看到楼主提的问题
cowboy
5楼-- · 2020-02-08 03:12
【26楼】 xuyiyi 许工大概看漏了回写前有一个低位清零的操作,如果先对A低四位清零,然后"读入-修改-回写",确实会出现上述的错误,但现在的次序是"读入-修改-清低位-回写",这样就避免了此过程中IO状态改变引起的错误。借用20楼的图说明一下,看看我的理解是否仍存在误区。如果仍是错误,那么到手的小姨子不敢再收了。

(原文件名:未命名.JPG)
shinehjx
6楼-- · 2020-02-08 05:06
针对楼主的IO分配情况写的
void led_data_out(unsigned char a)
{
  P1 &= (a << 4) | 0x7F & (a | 0xF8);   // 先改变要变低的位
  P1 |= (a << 4) & 0x80 | (a & 0x07);   // 再改变要变高的位
  P3 &= a | 0x0F;               // 先改变要变低的位
  P3 |= a & 0xF0;               // 再改变要变高的位
}

一周热门 更多>