初级会员
- 积分
- 87
- 金钱
- 87
- 注册时间
- 2016-9-25
- 在线时间
- 13 小时
|
5金钱
这两天在做一个LCD实验,用1621驱动一个定制屏,定义了一个code数组来存段码。结果用变量取数组的元素显示不出,用常量却能正常显示。。。。
比如这样:
LED_G0 = LED1_Disp[Value%1000000/100000];
LED_G1 = LED1_Disp[Value%1000000%100000/10000];
LED_G2 = LED1_Disp[Value%1000000%100000%10000/1000];
LED_G3 = LED1_Disp[Value%1000000%100000%10000%1000/100];
LED_G4 = LED1_Disp[Value%1000000%100000%10000%1000%100/10];
LED_G5 = LED1_Disp[Value%1000000%100000%10000%1000%100%10];
HT1621_LCD(); //写入数据
给变量赋值了(比如10),就是显示不出想要的数字出来(显示207。。。),甚至对变量加加减减显示的数都不改变。
然后我改成这样:
LED_G0 = LED1_Disp[123456%1000000/100000];
LED_G1 = LED1_Disp[123456%1000000%100000/10000];
LED_G2 = LED1_Disp[123456%1000000%100000%10000/1000];
LED_G3 = LED1_Disp[123456%1000000%100000%10000%1000/100];
LED_G4 = LED1_Disp[123456%1000000%100000%10000%1000%100/10];
LED_G5 = LED1_Disp[123456%1000000%100000%10000%1000%100%10];
HT1621_LCD(); //写入数据
就能正常显示123456了。换成其他数字,几个数字轮流显示也行得通(123456,234567,345678这样)。
究竟是什么原因,跟code这个关键字有关吗,我还把Memory Model改成Large了,有影响吗?
数组定义是这样的:
//LED显示表(七段码)
code u8 LED1_Disp[29] = { 0XF5,0X60,0XB6,0XF2,0X63,0XD3,0XD7,0X30,0XF7,0XF3,
0X77,0XC7,0X95,0XE6,0X97,0X17,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00 }; //大数码管
|
最佳答案
查看完整内容[请看2#楼]
问题已经解决了,应该和芯片的内存分布有关(可能不连续吧),把各个大数组改成256字节的整数倍就没问题了,类似rom的扇区。话说ram也有扇区的说法吗?
|