本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
在调试一个程序时发现数组的最后2位不对劲,就先初始化后就用串口打印出来看,结果发现后2位已经变了,相关语句如下:
int xdata record_t[8]={2000,2100,2200,2300,2400,2500,2600,2700};//随便初始化的值
init_system();
InitUART();
TI=1;
printf("t[0]~t[7]=%d %d %d %d %d %d %d %d\n",record_t[0],record_t[1],record_t[2],record_t[3],record_t[4],record_t[5],record_t[6],record_t[7]);
然后串口读出的结果是:
t[0]~t[7]=2000 2100 2200 2300 2400 2500 3072 0
这是为什么呢?调用的两个初始化函数应该没改变什么啊,如下。求大虾解答!
void init_system() //初始化系统
{
TMOD = 0x01; //T0工作于16位定时器模式
TL0 = 0;
TH0 = 0;
AUXR|=0x80; //T0不分频
EA =1 ; //中断允许
}
void InitUART (void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1=0xfd;
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
} |