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条回答
yuzhou211
1楼-- · 2020-02-08 07:14
 精彩回答 2  元偷偷看……
r166
2楼-- · 2020-02-08 11:21
新手路过学习
yy888
3楼-- · 2020-02-08 15:15
【29楼】 cowboy

的确是,你的理解是正确的,程序我未细看。向你致歉。

不过,P3 ^= (P3 ^ a) & 0x0f; 写法还有一个问题,假如其输出直接驱动晶体管(利用其内部上拉电阻),那么,不管其输出是 0 还是 1 , 读入均是 0 (三极管基极对发射极电压为 0.65V) , 这种写法 P3 ^= (P3 ^ a) & 0x0f; 可能要出错,还是【30楼】 shinehjx 的写法  
        P3 &= a | 0x0F;               // 先改变要变低的位  
        P3 |= a & 0xF0;               // 再改变要变高的位  
来的保险。

我没仔细分析,以上意见仅供参考。
hkap
4楼-- · 2020-02-08 17:37
void LedDataOut(uchar dat)
{
  ..........  //关闭所有位显示
  P1 &= 0x78;
  P1 |= dat&0x87; //送数
  P3 &= 0x0f;
  P3 |= dat&0xf0;
  .........  //开启相关位显示
}
cowboy
5楼-- · 2020-02-08 18:29
【33楼】 xuyiyi 许工言重了,讨论有益,你考虑问题的严谨性与周全性我们后辈得跟着慢慢学。
bbs2009
6楼-- · 2020-02-08 19:50
 精彩回答 2  元偷偷看……

一周热门 更多>