ISP_CONTR:ISP/IAP控制寄存器
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 復位值 |
ISPEN | SWBS | SWRST | - | - | WT2 | WT1 | WT0 | 000x,0000 |
該復位是整個系統復位,所有的特殊功能寄存器都會復位到初始值,I/O口也會初始化。
【例子】通過按鍵中斷來使MCU軟件復位,復位后閃爍LED燈一段時間,然后MCU保持當前狀態,空轉。若要繼續使LED重新閃爍,要求MCU復位來進行。
軟件復位代碼:
1 #include 'stc.h'
2
3 #define LED_PORT P2 //定義LED控制端口為P2口
4
5 /********************************************
6 *函數名稱:Delay
7 *輸 入:無
8 *輸 出:無
9 *說 明:延時一段時間
10 ********************************************/
11 void Delay(void)
12 {
13 unsigned char i,j;
14
15 for(i=0;i<130;i++)
16 for(j=0;j<255;j++);
17 }
18 /********************************************
19 *函數名稱:SoftReset
20 *輸 入:無
21 *輸 出:無
22 *說 明:軟件復位MCU
23 ********************************************/
24 void SoftReset(void)
25 {
26 ISP_CONTR=0x20;
27 }
28 /********************************************
29 *函數名稱:EXTInit
30 *輸 入:無
31 *輸 出:無
32 *說 明:外部中斷初始化
33 ********************************************/
34 void EXTInit(void)
35 {
36 EX1=1; //允許外部中斷1中斷
37 IT1=0; //低電平觸發
38 EA=1; //允許所有中斷
39 }
40 /********************************************
41 *函數名稱:main
42 *輸 入:無
43 *輸 出:無
44 *說 明:函數
45 ********************************************/
46 void main(void)
47 {
48 unsigned char i;
49
50 EXTInit(); //外部中斷初始化
51
52 for(i=0;i<20;i++) //循環閃爍LED燈
53 {
54 LED_PORT=~LED_PORT;
55 Delay();
56 }
57
58 while(1)
59 {
60 ;//空操作
61 }
62 }
63 /********************************************
64 *函數名稱:EXT1IRQ
65 *輸 入:無
66 *輸 出:無
67 *說 明:外部中斷1中斷服務函數 復位操作
68 ********************************************/
69 void EXT1IRQ(void)interrupt 2
70 {
71 SoftReset();
72 }
73
代碼分析:
SoftReset是復位操作函數,對ISP/IAP控制寄存器ISP_CONTR賦值位0x20,即將ISP_CONTR中“SWRST”置1來進行軟件復位。要說明的是這里的軟件復位是真正意義上的復位,同硬件復位的效果一模一樣。
在main函數中,初始化外部中斷后進行LED燈閃爍一陣時間,然后進入while(1)死循環進行空操作。
軟件復位操作放在外部中斷1中斷服務函數函數當中,只要外部中斷1被觸發,單片機就進行復位。
關鍵字:單片機 軟件復位
引用地址:
8051單片機-軟件復位
推薦閱讀最新更新時間:2025-06-07 23:38
《8051單片機C語言創新教程》筆記 02
內部資源: 定時器、計數器:兩個16位 串行口:串行收發數據 (SBUF) 中斷系統:5個,6個。兩個中斷優先級 IE IPTCON 常用單片機型號: 結構圖:
[單片機]
基于單片機C8051F021和時鐘芯片實現定時采集存儲系統的設計
隨著科技的高速發展,現代工業測控領域的很多應用中都需要實現大量數據的定時采集存儲。以為海流計設計的海流數據采集存儲接口電路為例,介紹一種定時采集存儲系統的工作原理及其實現方法。 1 總體結構 在很多情況下,尤其是惡劣的工作環境下,高性能的單片機和大容量的Flash存儲器是數據采集存儲系統的最佳選擇,本文介紹的系統也是基于這樣的考慮。系統硬件結構并不復雜,包括高性能單片機C8051F021、實時時鐘芯片SD2300、大容量Flash存儲器K9G8G08及其外圍電路,如圖1所示。工作原理也較為簡單,通過串口將單片機C8051F021與海流計相連,通過對單片機的編程實現對海流計的控制和使用。同時,為了實現定時采集和數據存儲的功能,還
[單片機]
8051單片機實戰分析(以STC89C52RC為例) | 02 - LED延時約5s閃爍
代碼修改如下: #include reg52.h //此文件中定義了單片機的一些特殊功能寄存器 typedef unsigned int u16; //對數據類型進行聲明定義 typedef unsigned char u8; sbit led=P2^2; //將單片機的P2.2端口定義為led /******************************************************************************* * 函 數 名 : delay * 函數功能 : 延時函數,i=1時,大約延時10us *************************
[單片機]
8051單片機基礎6:通用指針和定向指針
參考來源:Keil Help uVision Help Cx51 Compiler User’s Guide Language Extensions Pointers 關于C51代碼中指針的疑問 int *ptr; /* 指向:任意空間的int變量, 存儲在:RAM(data) 區, 占用:3字節 */ int xdata *ptr; /* 指向:RAM(xdata)區的int變量,存儲在:RAM(data) 區, 占用:2字節 */ int * xdata ptr; /* 指向:任意空間的int變量, 存儲在:RAM(xdata)區, 占用:3字節 */ int xdata * xdata ptr;
[單片機]
8051單片機(STC89C52)實現可修改計時初值的單倒計時器(Version1.0)
程序啟動后計時初值為15, 之后可通過串口發來的數據(如 99 )來修改下一次計時初值. #include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//對應數碼管顯示0~9 char buf ; int tcount = 0;//記錄經過的10ms區間段個數 int sec = 15;//倒計時初始值記錄 int sec2 = 15;//倒計時初始值 void T0_INT() interrupt 1 //timer0中斷, 每10ms觸
[單片機]
8051單片機的復位狀態
復位就是指通過某種手段使單片機內部某些資源一種固定的初始狀態,以確保單片機每次復位后都能在某一固定的環境中從某一固定的入口地址處開始運行,8051復位后片內各特殊功能寄存器狀態如下: PC內容為0000H,使單片機從起始地址0000H開始執行程序。所以單片機運行出錯或進入死循環,可以按復位鍵重啟。 ACC內容為00H。 PSW內容為00H,意義為復位后,上次運算沒有產生進位或借位,也沒有產生半進位或半借位,工作寄存器組R0—R7定位在內部RAM的00-07單元,上次運算沒有溢出,累加器中“1”的個數為偶數。 SP內容為07H,意義為堆棧指針SP指向內部數據存儲器的07單元,即堆棧從08單元開始。 DPT
[單片機]
用8051單片機設計倒計時牌
;************* 電子定時器的設計******************; ;*MCU: AT892051 ; ;*MCU-crystal: 12M ; ;*Version: 01 ; ;*Last Updata: 2009-5-4 ; ;*Author: HaiZhiZi ; ;*Description: ; ;定時器T0、T1溢出周期為50MS,T0為秒計數用 ; ;S2為功能鍵、S3為方式選擇鍵 ; ;P1口為字符輸出口,采用共陽顯示管 ; ;P3.2~P3.5為位選,P1.7為報警發音,P3.7為被控繼電器 ; ;****************************************
[單片機]
C8051F單片機PWM輸出程序
//PWM輸出腳P0.3 //----------------------------------------------------------------------------- // Includes //----------------------------------------------------------------------------- #include // SFR declarations #include #include //----------------------------------------------------------------------------- // Fun
[單片機]