这个问题困扰了好几天,终于找到问题了,用的芯片是45K22,用PORTB端口输出READ/WRITE信号控制显示屏,显示屏的片选信号采用RB6,由于这个脚有用于ICSP(原电路设计是这样),用KIT3调试显示屏是有显示的,用ICD2调试也有显示,但用它们烧程序却不能点亮显示屏,(调试时把RB6改在RB1,硬件也改动了),
通过一步步排除问题,怀疑是软件哪里有问题,把程序一个一个的函数删除,终于在删到还有10几个函数时显示正常了,满以为找到问题了,恢复原程序时故障依旧,
怀疑是子符串常量太多了,设了一个字符串常量,长度为765个字节,发现显示屏只能显整句字符串的前三个字符,搞了搞,搞了两天,还是没搞定.
最后将几个引脚一个一个来对,原来片选脚E定义为#DEFINE E LATBBITS.LATB6,原来程序没有问题啊!试着改为PORTBBITS.RB6,重烧程序,显示屏点亮了,
RB6这个脚只用作输出,写LAT6与写RB6是一样的啊,只不过读改写一个是读锁存器,一个是读端口,为什么差异这么大呢?
没空去找是编译器还是芯片是哪一个的原因.这个问题害死人,特地写下,其他人碰到这个问题可以避免下,也请原厂注意这个问题,看是哪造成的.这几天被这些兼容问题搞得好烦. |