|
最近買了幾片STC15W4K58S4芯片,今天在作片內(nèi)擴(kuò)展RAM驗(yàn)證發(fā)現(xiàn)一個(gè)不好理解的現(xiàn)象,在主函數(shù)外編一個(gè)寫片內(nèi)擴(kuò)展RAM的函數(shù),主函數(shù)調(diào)用不能向下運(yùn)行,但把這個(gè)函數(shù)的代碼復(fù)制到主程序中卻能運(yùn)行.先發(fā)問題程序
#include"stc15.h"
unsigned char xdata RAM[256]; //聲明片內(nèi)擴(kuò)展RAM區(qū)數(shù)組
//*************************************************
void GPIO_config(void)
{
P5M0 = 0x00; //設(shè)置P5.5為準(zhǔn)雙向口
P5M1 = 0x00;
}
//**********************************************
void delay_ms(unsigned char ms)
{
unsigned int i;
do{
i = 12000000 / 13000;
while(--i) ;
}while(--ms);
}
/******************************************************
*************** 寫數(shù)組函數(shù)***************************/
void Write_ram()
{ unsigned char i; // 把這
for(i=0;i<=255;i++) // 部 分 代 碼
{ //放在主函數(shù)
RAM[i]=255-i; // 中能運(yùn)行
} // 而寫成一個(gè)函數(shù)調(diào)用不行是為什么
}
//*********************************************************
void main (void)
{
unsigned char i,j;
GPIO_config();
P55=0; //能執(zhí)行到此
Write_ram(); //執(zhí)行到此不能住下運(yùn)行
P55=1; //沒能到此
while(1)
{
for(i=0;i<+255;i++)
{
j=RAM[i];
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
P55=~P55; //通過P55口的狀態(tài)看程序的運(yùn)行
}
}
}
*******************************************************************************************************************
下面是能運(yùn)行的程序
********************************************************************************************************************
#include"stc15.h"
unsigned char xdata RAM[256];
void GPIO_config(void)
{
P5M0 = 0x00; //設(shè)置P5.5為準(zhǔn)雙向口
P5M1 = 0x00;
}
void delay_ms(unsigned char ms)
{
unsigned int i;
do{
i = 12000000 / 13000;
while(--i) ;
}while(--ms);
}
/*********************************
void Write_ram()
{ unsigned char i; // 把這
for(i=0;i<=255;i++) // 部 分 代 碼
{ //放在主函數(shù)
RAM[i]=255-i; // 中能運(yùn)行
} // 而寫成一個(gè)函數(shù)調(diào)用不行是為什么
}
**********************************************/
void main (void)
{ unsigned char i,j;
GPIO_config();
P55=0;
// Write_ram(); //執(zhí)行到此不能住下運(yùn)行
while(1)
{
for(i=0;i<+255;i++)
{
RAM[i]=255-i; //這里寫
j=RAM[i]; //這里讀
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
P55=~P55;
}
}
}
|
|