我有一个程序,原来在KEIL C51下编译,CPU用的是STC8H单片机,后来CPU升级为STC32G12K128,编译环境改为C251,运行一直不正常,后来发现,是程序中定义位变量的方式出了问题,以前定义位变量用的语句是:ABC BIT 10H ,在STC8H单片机中,内部RAM的20H到2FH是可以位寻址的,位地址范围在0~7F之间,这样定义是可以的,STC32G12K128内部RAM的20H到7FH都是可以位寻址,位地址范围在0~2FFH之间,如果定义最后一位岂不是要这样:ABC BIT 2FFH,地址表示部分超了一个字节了,可能不识别。后来使用 ABC BIT 22H.0 的方式定义,程序就正常运行了。