培訓(xùn)信息
贊助商
STC89C51RC/RD+系列從ISP程序切換到應(yīng)用程序
STC89C51RC/RD+系列從ISP程序切換到應(yīng)用程序
作者:佚名 來源:不詳 錄入:jdzj868 更新時(shí)間:2009-7-9 16:51:41 點(diǎn)擊數(shù):0
【字體:
】
/* --- STC International Limited ---------------- */ /* --- 宏晶科技 姚永平 設(shè)計(jì) 2004/9/11 ---------- */ /* --- RD+/RC AP switch to ISP Memory --------- */ /* --- STC89C516RD+, STC89C58RD+, STC89C54RD+ --- */ /* --- STC89LE516RD+,STC89LE58RD+,STC89LE54RD+ -- */ /* --- STC89C53RC, STC89C52RC, STC89C51RC ---- */ /* --- STC89LE53RC, STC89LE52RC, STC89LE51RC --- */ /* --- Mobile: 13922805190 ---------------------- */ /* --- Fax: 0755-82944243 ----------------------- */ /* --- Tel: 0755-82908285 ----------------------- */ /* --- Web : www.mcu-memory.com ---------------- */ #include <reg52.h> #include <intrins.h> /* use _nop_() function */ /* 新增特殊功能寄存器定義 */ sfr ISP_DATA = 0xe2; /* ISP_DATA DATA 0E2H; 匯編程 序定義 */ sfr ISP_ADDRH = 0xe3; /* ISP_ADDRH DATA 0E3H; 匯編程 序定義 */ sfr ISP_ADDRL = 0xe4; /* ISP_ADDRH DATA 0E4H; 匯編程 序定義 */ sfr ISP_CMD = 0xe5; /* ISP_CMD DATA 0E5H; 匯編程 序定義 */ sfr ISP_TRIG = 0xe6; /* ISP_TRIG DATA 0E6H; 匯編程 序定義 */ sfr ISP_CONTR = 0xe7; /* ISP_CONTR DATA 0E7H; 匯編程 序定義 */ /* SFR: ISP_DATA (ISP Flash Data Register): E2H --------------------*/ /*--| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |---*/ /*--| Data to be written into flash, or Data got from flash |---*/ /* SFR: ISP_ADDRH (ISP Flash Address High): E3H --------------------*/ /*--| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |---*/ /*--| High byte of the address pointing to flash |---*/ /* SFR: ISP_ADDRL (ISP Flash Address Low): E4H --------------------*/ /*--| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |---*/ /*--| Low byte of the address pointing to flash |---*/ /* SFR: ISP_CMD (ISP Flash Mode Table): E5H --------------------*/ /*--| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |---*/ /*--| reserved | Mode Selection |---*/ /* SFR: ISP_TRIG (Sequential Command Data register for ISP): E6H ----*/ /*--| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |---*/ /*--| ISP-Command and Device ID |---*/ /* SFR: ISP_CONTR (ISP Control register): E7H --------------------*/ /*--| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |---*/ /*--| ISPEN | SWBS | SWRST | - | - | WAIT |---*/ /*-- ISPEN: ISP function enabling bit --------------------------------*/ /*-- 0: Disable ISP program to change flash --------------------*/ /*-- 1: Enable ISP program to change flash --------------------*/ /*-- SWBS: Software Booting select --------------------*/ /*-- 0: Boot from AP-Memory / Main-Memory --------------------*/ /*-- 1: Boot from ISP-Memory --------------------*/ /*-- SWRST: Software reset trigger --------------------*/ /*-- 0: No operation --------------------*/ /*-- 1: Generate software system reset. It will be cleared by hardware automatically ---*/ typedef unsigned char INT8U; /* 8 bit 無符號(hào)整型 */ typedef unsigned int INT16U; /* 16 bit 無符號(hào)整型 */ #define DELAY_CONST 60000 sbit AP_Memory_LED = P1^3; sbit ISP_Memory_LED = P1^7; sbit delay_over_LED = P1^0; void from_ISP_Memory_switch_to_AP_Memory(void) { ISP_CONTR = 0x20; // 0010,000 } /* only display ISP_Memory_LED */ void only_display_ISP_Memory_LED(void) { AP_Memory_LED = 1; /* AP_Memory_LED Off */ ISP_Memory_LED = 0; /* ISP_Memory_LED on */ delay_over_LED = 1; /* delay_over_LED off */ } /* only display AP_Memory_LED */ void only_display_AP_Memory_LED(void) { AP_Memory_LED = 0; /* AP_Memory_LED On */ ISP_Memory_LED = 1; /* ISP_Memory_LED off */ delay_over_LED = 1; /* delay_over_LED off */ } void display_delay_over_LED(void) { AP_Memory_LED = 1; /* AP_Memory_LED Off */ ISP_Memory_LED = 1; /* ISP_Memory_LED off */ delay_over_LED = 0; /* ISP_Memory_LED on */ } void display_error_LED(void) { AP_Memory_LED = 0; /* AP_Memory_LED on */ ISP_Memory_LED = 0; /* ISP_Memory_LED on */ delay_over_LED = 0; /* ISP_Memory_LED on */ } void delay(INT16U counter) { INT16U temp = 0; for(temp = counter;temp>0;temp--) { _nop_(); _nop_(); _nop_(); } } void main() { //sbit AP_Memory_LED = P1^3; //sbit ISP_Memory_LED = P1^7; //sbit delay_over_LED = P1^0; /* program code in AP_Memory run */ while(1) { only_display_ISP_Memory_LED(); delay(DELAY_CONST); display_delay_over_LED(); delay(DELAY_CONST); from_ISP_Memory_switch_to_AP_Memory(); delay(DELAY_CONST); display_error_LED(); delay(DELAY_CONST); } }
發(fā)表評(píng)論 告訴好友 打印此文 收藏此頁(yè) 關(guān)閉窗口 返回頂部
網(wǎng)友評(píng)論:(只顯示最新5條。)