我有一个用C处理7段多路复用显示的uController示例程序。
我可以访问显示的左侧或右侧部分,如下所示:
//declarations
unsigned char xdata left _at_ 0xFE00;
unsigned char xdata right _at_ 0xFD00;
//use
left = 0x06;
right = 0x5B;
它会在左侧屏幕上打印“1”,在右侧打印“2”。
现在我想知道,这是怎么回事? 0xFE00地址来自何处以及如何将其显示在左侧屏幕上(我知道这是因为P2_0上有'0',但我不知道它是如何与'左'变量连接的。)
答案 0 :(得分:2)
我从来没有对这个野兽进行编程,但是看看你的代码,电路图和数据表表明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上。
特殊功能寄存器将设置所需的端口模式。