STC89C5X单片机“看门狗”原理详解
时间:11-25
来源:互联网
点击:
066 | voidInitMain() |
067 | { |
068 | //初始化时两盏灯都熄灭 |
069 | LED=1; |
070 | LED_busy=1; |
071 |
072 | TMOD=0x21;//定时器0工作在方式1,作为16位定时器;定时器1工作在方式2,作为串行口波特率发生器 |
073 | TH0=0x4C;//定时器0装初值:每隔50ms溢出一次 |
074 | TL0=0x00; |
075 | IE=0x82;//IE=(1000 0010)B, 使能定时器0中断 |
076 | TR0=1;//启动定时器0 |
077 | } |
078 | /*************************************************************************/ |
079 |
080 | /*************************************************************************/ |
081 | //串行口初始化程序 |
082 | voidInitCOM() |
083 | { |
084 | SCON=0x50;//SCON=(0101 0000)B,波特率不加倍,允许接收 |
085 | TH1=0xFD;//设置波特率=9600bps |
086 | TL1=TH1; |
087 | TR1=1;//启动定时器1 |
088 | } |
089 | /*************************************************************************/ |
090 |
091 | /*************************************************************************/ |
092 | //定时器0中断服务程序程序,控制信号灯闪烁。如果系统正常运行,信号灯1.5秒闪一次 |
093 | voidTimer0_isr() interrupt 1 |
094 | { |
095 | TH0=0x4C; |
096 | TL0=0x00; |
097 | timer0_ctr++; |
098 |
099 | if(timer0_ctr>=30) |
100 | { |
101 | TR0=0;//定时器0暂停,否则再次来中断会冲断程序 |
102 | timer0_ctr=0; |
103 | LED=0; |
104 | delay_ms(100); |
105 | LED=1; |
106 | TR0=1;//定时器0重新启动 |
107 | } |
108 | } |
109 | /*************************************************************************/ |
110 |
111 | voidmain() |
112 | { |
113 | WEIGOU;//上来第一步设置看门狗定时器,并且启动 |
114 | InitMain(); |
115 | InitCOM(); |
116 |
117 | //开机通过串口发送一次“I love MCU!”,使用串口调试助手可以查看 |
118 | //由于在while大循环外边,所以只要系统不重新启动,则上电后只会发送一次,用于判断系统是否重启 |
119 | i=0; |
120 | while(str[i]!=) |
121 | { |
122 | SBUF=str[i]; |
123 | while(TI==0); |
124 | TI=0; |
125 | i++; |
126 | } |
127 |
128 | //while大循环 |
129 | while(true) |
130 | { |
131 | //约每隔800ms喂一次狗,可以通过调整这里的喂狗时间来验证看门狗是否有效 |
132 | //我们设置的看门狗约1秒。所以可以用800和2000分别做一次试验,看是否会被看门狗复位 |
133 | delay_ms(2000); |
134 | LED_busy=0;//第一次上电约延时800ms工作灯点亮,如果系统不重启,他将一直亮着,用于指示系统是否重启 |
135 | WEIGOU; |
136 | } |
137 | } |
STC89C5X单片机看门 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)