keil编译51单片机 c程序采用不同存储器模式生成的hex文件在同一个单片机上运行的效果不一样??

控制74ls595 存储器模式为“大型”时单片机不能正确的执行
下面是程序:
#include"reg52.h"
#define con P0 //行控制
sbit srck_595 = P2^1; //p1^5
sbit da_595=P3^0;
sbit sck_595=P3^1;
unsigned char data1[][16]={0x00,0x08,0x08,0x06,0x02,0x0C,0x7F,0x40,0x40,0x43,0x02,0x04,0x00,0x08,0x40,0x5F};
void Delay()
{
unsigned int i;
for(i=0;i<=25000;i++){};
}
void duanma(data1)
{char temp=data1;
int n;
for( n=8;n>0;n--)
{
sck_595=0;
if(temp&0x80)
da_595=0;
else
da_595=1;
sck_595=1;
temp<<=1;
}
}
void main(void)
{ char h;
srck_595=0;
while(1)
{
int i;
for (i=0;i<16;i++)
{
duanma(data1[0][i]);
}
con=0x10; //关闭行显示
srck_595=1; // 显示数据输入/输出 锁存器
con=h&0x0f; //写入行号
srck_595=0; //锁存显示数据
Delay();
h=h+1;
if (h==16)
h=0;
}
}
什么方法能解决不一样的问题?!!

你把数组unsigned char data1[][16]设成unsigned char code data1[][16]就可以了,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-02
恩!!!!楼上说的对~很多需要点阵显示数据的都是这样定义