?? main.lst
字號(hào):
C51 COMPILER V7.01 MAIN 06/13/2004 12:32:10 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //**********************************************************************
2 //功能 : 軟件看門狗程序
3 //作者 : lihj
4 //創(chuàng)建日期 : 2004-06-13
5 //版本 : V1.0
6 //修改記錄 :
7 //***********************************************************************
8 #include "REG51.h"
9
10 #ifndef TRUE
11 #define TRUE 0
12 #define FALSE 1
13 #endif
14
15 //系統(tǒng)宏定義
16 #define XTAL 12000000 //系統(tǒng)晶振
17 #define TIME_BASE 10 //時(shí)間基準(zhǔn), 以1ms為單位
18 #define WDT_TIME 50 //看門狗復(fù)位時(shí)間(50*TIME_BASE)
19
20 //全局變量聲明
21 int g_WDTCounter; //10ms系統(tǒng)時(shí)鐘基準(zhǔn)
22 unsigned int g_wTimerIniValue; //定時(shí)器初值
23
24 //內(nèi)部函數(shù)聲明
25 char TimerIni(char); //初始化定時(shí)器函數(shù)
26 void FeedDog(void); //軟件看門狗
27
28 //外部函數(shù)聲明
29 extern void RESET(void);
30
31 //主循環(huán)
32 void main(void)
33 {
34 1 //初始化硬件資源
35 1 //初始化定時(shí)器,初值計(jì)算
36 1 g_wTimerIniValue = 65535 - ((XTAL/12)/1000)*TIME_BASE + 1;
37 1 //初值=65536 - 定時(shí)時(shí)間長(zhǎng)度
38 1 TimerIni(0); //將定時(shí)器0初始化成10ms定時(shí)器
39 1
40 1 //初始化全局變量
41 1 g_WDTCounter = 0; //清軟件看門狗計(jì)數(shù)
42 1
43 1 EA = 1; //總中斷使能
44 1
45 1 while(1) //主循環(huán)體
46 1 {
47 2 //主循環(huán)體
48 2 //程序......
49 2
50 2 FeedDog(); //每一個(gè)周期去喂一次看門狗
51 2 }
52 1 }
53
54 //定時(shí)器初始化函數(shù)
55 //參數(shù)說明 : n, 定時(shí)器序號(hào)
C51 COMPILER V7.01 MAIN 06/13/2004 12:32:10 PAGE 2
56 // ini, 定時(shí)器初值, 單位是1ms
57 char TimerIni(char n)
58 {
59 1 if(n == 0) //使用定時(shí)器0
60 1 {
61 2 TMOD = 0X01; //定時(shí)器0工作方式1(16位定時(shí)器)
62 2 TH0 = g_wTimerIniValue >> 8; //定時(shí)器賦初始值
63 2 TL0 = g_wTimerIniValue;
64 2 ET0 = 1; //允許定時(shí)器中斷
65 2 TR0 = 1; //啟動(dòng)計(jì)數(shù)
66 2 }
67 1 else if(n == 1) //使用定時(shí)器1
68 1 {
69 2 TMOD = 0x10; //工作方式1
70 2 TH1 = g_wTimerIniValue >> 8; //定時(shí)器賦初值
71 2 TL1 = g_wTimerIniValue;
72 2 ET1 = 1; //允許定時(shí)器中斷
73 2 TR1 = 1; //啟動(dòng)計(jì)數(shù)
74 2 }
75 1 else
76 1 {
77 2 return FALSE;
78 2 }
79 1
80 1 return TRUE;
81 1 }
82
83 //喂軟件看門狗
84 void FeedDog(void)
85 {
86 1 g_WDTCounter = 0; //清軟件看門狗計(jì)數(shù)
87 1 }
88
89 //定時(shí)器0中斷服務(wù)程序
90 //interrupt關(guān)鍵字后的數(shù)字指向中斷向量號(hào)
91 //using關(guān)鍵字后的數(shù)字表示該中斷函數(shù)使用第幾組寄存器
92 void Timer0Int(void) interrupt 1 using 1
93 {
94 1 TL0 += g_wTimerIniValue;
95 1 TH0 += g_wTimerIniValue>>8; //恢復(fù)定時(shí)器初值
96 1
97 1 g_WDTCounter ++; //軟件看門狗復(fù)位計(jì)數(shù)器累加
98 1 if(g_WDTCounter >= WDT_TIME)
99 1 {
100 2 RESET(); //復(fù)位
101 2 }
102 1 }
103
104
105
106
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 131 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.01 MAIN 06/13/2004 12:32:10 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -