首 页 学 苑 例 子 工 具 下 载 商 城 论 坛
     
 

   AVR单片机的内部资源非常丰富,其中看门狗watchdog对于提高单片机的抗干扰有很大的帮助,下面这个例子可以作为参考。

BASCOM中看门狗的使用,我编写了一个小demo程序,现在发到网上,希望对大家有所帮助
'------------------------------------------------------------------------
'使用芯片:  ATmega16,
'晶振:      内部8MHz晶振
'mail:      bascomavr@126.com
'软件版本:  Bascom-AVR 1.11.8.2 Full version
'------------------------------------------------------------------------

$regfile = "m16def.dat"
$crystal = 8000000
$noramclear                       '不初始化RAM,也就是不初始化全局变量
Config Watchdog = 2048            'reset after 2048 mSec
Start Watchdog
Config Porta = Output
Dim A As Byte

If Mcucsr = &H01 Then              '判断是否为上电复位
A = &HFF                           '如果是,给A赋初值
End If

A = Not A
Porta = A
Do
'Reset Watchdog
Loop
End

程序下载到芯片中运行,您可以看到A口所接的LED会在大约2秒钟闪动一次,说明看门狗复位动作被执行。
如除去Reset Watchdog的注释后,您可以发现LED就会停止闪烁。
使用$noramclear语句后,程序中的变量不会被初始化为0。需程序中手动赋值,但这时需通过mcucsr寄存器来确定复位原因,决定是否执行赋值语句。
如不使用$noramclear语句,不能在A口观察到led闪动,原因是每次程序开始运行前变量A都被清零。

 

如将程序改为
'------------------------------------------------------------------------
'使用芯片:  ATmega16,
'晶振:      内部8MHz晶振
'mail:      bascomavr@126.com
'软件版本:  Bascom-AVR 1.11.8.2 Full version
'------------------------------------------------------------------------

$regfile = "m16def.dat"
$crystal = 8000000

$noramclear                         '不初始化RAM,也就是不初始化全局变量

Config Watchdog = 2048              'reset after 2048 mSec
Start Watchdog
Config Porta = Output
Dim A As Byte
Dim B As Byte


If Mcucsr = &H01 Then                '判断是否为上电复位
A = &HFF                             '如果是,给A赋初值
End If

If B = 30 Then
Stop Watchdog
End If

Incr B
A = Not A
Porta = A
Do
Loop
End

看门狗复位30次后,就会关闭看门狗,A口的Led将不会再继续闪烁啦。

  作者:bascomchina Email:bascomavr@126.com

 
 

链接:

 

周立功  AVR单片机DIY 21IC社区 正强单片坊 电子资料城
双龙电子 ICCAVR 力源信息 www.atmel.com 电子之城
华强电子世界 AVR与虚拟仪器 美信中国 www.fastavr.com ARM开发网
宁波三和壳体公司 杭州福芯电子 芯艺设计室 www.mcselec.com 东创科技

Copyright©2005 Basicavr.com Email:agui2008@21cn.net  TEL:13798456680 FAX:075584717022

地址:深圳市华强北路赛格电子市场一楼1B105柜 QQ:543527753 粤ICP备05079885号