stc單片機讀片外擴展RAM,內(nèi)部R/C時鐘及ID號C語言程序
#include
#include
sfrIAP_CONTR=0xC7;
sbitMCU_Start_LED=P1^7;
//unsignedcharself_command_array[4]={0x22,0x33,0x44,0x55};
#defineSelf_Define_ISP_Download_Command0x22
//#defineRELOAD_COUNT0xfb//18.432MHz,12T,SMOD=0,9600bps
#defineRELOAD_COUNT0xfd//11.0592MHz,12T,SMOD=0,9600bps
voidserial_port_initial();
voidsend_UART(unsignedchar);
voidUART_Interrupt_Receive(void);
voidSOFt_reset_to_ISP_Monitor(void);
voiddelay(void);
voiddisplay_MCU_Start_Led(void);
voidmain(void)
{
unsignedchari=0;
unsignedcharj=0;
unsignedchardata=0;
unsignedintk=0;
unsignedcharxdata*xdata_point;
//unsignedcharidata*idata_point;
serial_port_initial();//串口初始化
//display_MCU_Start_Led();//點亮發(fā)光二極管表示單片機開始工作
//send_UART(0x34);//串口發(fā)送數(shù)據(jù)表示 單片機 串口正常工作
//send_UART(0xa7);//串口發(fā)送數(shù)據(jù)表示 單片機 串口正常工作
//xdata_point=0x400;
xdata_point=0x0000;
//data=0;
data=0xff;
for(k=0;k<32768;k++)
{
*xdata_point=data;
xdata_point++;
}
xdata_point=0x0000;
for(k=0;k<32768;k++)
{
i=0;
//P0=0xFF;
i=*xdata_point;
send_UART(i);
xdata_point++;
}
/*
for(j=0;j<255;j++)
{
*xdata_point=data;
data++;
xdata_point++;
}
//xdata_point=0x400;
xdata_point=0x7800;
for(j=0;j<255;j++)
{
i=0;
//P0=0xFF;
i=*xdata_point;
send_UART(i);
xdata_point++;
}
idata_point=0xF1;
for(j=0;j<15;j++)
{
i=*idata_point;
send_UART(i);
idata_point++;
}
*/
while(1);
}
voidserial_port_initial()
{
SCON=0x50;//0101,00008位可變波特率,無奇偶校驗位
TMOD=0x21;//0011,0001設(shè)置頂時器1為8位自動重裝計數(shù)器
TH1=RELOAD_COUNT;//設(shè)置定時器1自動重裝數(shù)
TL1=RELOAD_COUNT;
TR1=1;//開定時器1
ES=1;//允許串口中斷
EA=1;//開總中斷
}
voidsend_UART(unsignedchari)
{
ES=0;//關(guān)串口中斷
TI=0;//清零串口發(fā)送完成中斷請求標(biāo)志
SBUF=i;
while(TI==0);//等待發(fā)送完成
TI=0;//清零串口發(fā)送完成中斷請求標(biāo)志
ES=1;//允許串口中斷
}
voidUART_Interrupt_Receive(void)interrupt4
{
unsignedchark=0;
if(RI==1)
{
RI=0;
k=SBUF;
if(k==Self_Define_ISP_Download_Command)//是自定義下載命令
{
delay();//延時1秒就足夠了
delay();//延時1秒就足夠了
soft_reset_to_ISP_Monitor();//軟復(fù)位到系統(tǒng)ISP監(jiān)控區(qū)
}
send_UART(k);
}
else
{
TI=0;
}
}
voidsoft_reset_to_ISP_Monitor(void)
{
IAP_CONTR=0x60;//0110,0000軟復(fù)位到系統(tǒng)ISP監(jiān)控區(qū)
}
voiddelay(void)
{
unsignedintj=0;
unsignedintg=0;
for(j=0;j<5;j++)
{
for(g=0;g<60000;g++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
voiddisplay_MCU_Start_Led(void)
{
unsignedchari=0;
for(i=0;i<3;i++)
{
MCU_Start_Led=0;//頂亮MCU開始工作指示燈
delay();
MCU_Start_Led=1;//熄滅MCU開始工作指示燈
delay();
MCU_Start_Led=0;//頂亮MCU開始工作指示燈
}
}