我有一个用 C 语言编写的 uController 示例程序,用于处理 7 段多路复用显示。
我可以按如下方式访问显示的左侧或右侧部分:
//declarations
unsigned char xdata left _at_ 0xFE00;
unsigned char xdata right _at_ 0xFD00;
//use
left = 0x06;
right = 0x5B;
它会向左屏幕打印“1”,向右屏幕打印“2”。
现在我想知道,它是如何工作的? 0xFE00 地址是从哪里来的以及它是如何恰好将它显示到左侧屏幕的(我知道这是因为 P2_0 上有 '0' 但我不知道它是如何连接到 'left' 变量的)。
最佳答案
我从来没有给这个野兽编程过,但是看一下你的代码、电路图和数据表表明 LED 对被寻址为外部存储器:8 个数据位(否则端口 0)连接到段数据引脚和 2 个地址线(否则端口 2)连接到数字选择引脚。
FE00
的第 8 位为低位,第 9 位为高位。因此,写入地址 FE00
会导致 0
从 P2.0(又名 A8)输出,而 1
从 P2.1(又名A9),选择左边的LED,P0显示数据。
值 FD00
的第 8 位为高位,第 9 位为低位。因此,写入地址 FD00
会导致 1
从 P2.0(又名 A8)输出,而 0
从 P2.1(又名A9),选择正确的LED,段数据再次出现在P0。
特殊功能寄存器将设置所需的端口模式。
关于c - 微 Controller 89c52 - 7 段复用显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744940/