ICCAVR中访问外设与内部SRAM地址相冲突的问题!!!程序如下: /*利用74HC573扩展的LCD显示*/ extern uchar LCD_DATA,LCD_ISR; #define LCD_DATA (*(volatile unsigned char *)0x5ffe) #define LCD_ISR (*(volatile unsigned char *)0x5fff) /*定义全局变量-----当在ICC中Compile options下选择internal sram时,以下全局变量会分配在内部SRAM中;而当选择External 32K sram时,以下全局变量会分配在外部SRAM中.但我现在没有扩展SRAM,只是扩展了外设LCD,我到底选择哪一个呢?*/ #pragma data:data //sram address:0x0100-0x10ff uchar StateFlag=0x00;
void main(void) { delay_ms(1000); MCUSR=(1<<SRE); //SRW11=1;SRW10=0; //upper sector are available //wait two cycles XMCRA=0x44; while(1) LCD_ISR=StateFlag; //执行有误 } 硬件连接应该是没有问题的, 我选择External 32K sram时,显示是成功的,可正常显示出字符,汉字,可全局变量全部乱掉了,比如StageFlag初始化为0,可开始一读就是0x38,很奇怪的. 我用的是MEGA128 选择internal sram 时,就没显示了.但全局变量正常,似乎就是LCD_ISR=StageFlag这种语句没正常工作 |