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)
