| 还发现一个问题: 我定义了数组:uint8_t const Metalor[] = {M,e,t,a,l,o,r};
 uint8_t const Lynn[]     = {L,y,n,n,};
 uint8_t const _21ic[]    = {tt,kg,2,1,i,c};
 函数:void vWriteString(uint8_t add,uint8_t const *pData)  //在1602显示字符串
 {
 vWriteCom(0x80+add);
 while(*pData != '\0')
 {
 vWriteData(0x30 + *pData);
 pData++;
 }
 }
 当执行 vWriteString(15,Metalor)时,三个数组的数据都被显示。
 当执行 vWriteString(15,Lynn)时,后两个数组的数据都被显示。
 当执行 vWriteString(15,_21ic)时,只显示_21ic[]数组的数据。
 也就是说,在编译时这三个数组被编译成了一个数组!!!
 因为我们知道每个数组的最后都默认有一个'\0’表示数组结束,我在函数里设置了数组结尾的判断,但没有效,函数一直执行直到第三个数组结束才停止(才遇到'\0'),只能说三个数组被编译成了一个数组才解释的通!!!
 我只有在数组末尾手动加上'\0'函数才被正确执行!
 即数组改为:  uint8_t const Metalor[] = {M,e,t,a,l,o,r,'\0'};
 uint8_t const Lynn[]     = {L,y,n,n,'\0'};
 uint8_t const _21ic[]    = {tt,kg,2,1,i,c};
 |