ADS1.2中二维数组的问题<br /> AT91RM9200驱动240*128点阵液晶屏(T6963C),程序中用二维数组存储字模数据,如下:<br />unsigned char ASCII[][16]={<br /> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -<br /> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br /><br /> 0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18, // -!-<br /> 0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,<br /><br /> 0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00, // -"-<br /> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br /><br /> 0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0x6C, // -#-<br /> 0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00,<br />***********等等<br />在程序中调用:<br />void LcdDisString(uchar x,uchar y,uchar z,uchar *str,uchar mm,uchar bk)<br />{<br /> uchar i,j,temp1,temp2;<br /> uint StartAddr,StartAddr1;<br /> uchar Line; <br /><br /> Line=x*8+z;<br /> StartAddr1=Line*LineChar+y;<br /> i=0;<br /> if(bk==0)<br /> {<br /> for(i=0;i<mm;i++)<br /> {<br /> StartAddr=StartAddr1+i; <br /> for(j=0;j<16;j++)<br /> {<br /> SendLcdData((uchar)StartAddr);<br /> SendLcdData((uchar)(StartAddr>>8));<br /> SendLcdCommand(0x24); //定位<br /> <br /> SendLcdData(ASCII[(str-32)][j]^LcdA);//这里调用二维数组<br /> <br /> SendLcdCommand(0xc4);<br /> StartAddr=StartAddr+LineChar;<br /> }<br /> }<br /> }<br /> else<br /> {<br /> for(i=0;i<mm;i++)<br /> {<br /> StartAddr=StartAddr1+i;<br /> for(j=0;j<16;j++)<br /> {<br /> SendLcdData((uchar)StartAddr);<br /> SendLcdData((uchar)(StartAddr>>8));<br /> SendLcdCommand(0x24); //定位 <br /> SendLcdData(~ASCII[(str-32)][j]^LcdA);<br /> SendLcdCommand(0xc4);<br /> StartAddr=StartAddr+LineChar;<br /> }<br /> }<br /> }<br />}<br />其中str的指针指向二维数组基地址,程序中定义uchar StrFreq[] = "Freq.";//<br />调用LcdDisString(2,0,0,StrFreq,5,0);<br />单步执行来看,ASCII[(str-32)][j]的值不是我在二维数组中对应的点阵数据,而我在keil中编译通过,并且可以正确调<br />用二维数组显示字符,<br />难道ADS1.2中的编译器和keil中的相差很大,不支持这种写法?<br /> |
|