设为首页
收藏本站
家园
博客
课程平台
教材专区
主站
开启辅助访问
切换到窄版
登录
|
加入因仑
请
登录
后使用快捷导航
没有帐号?
加入因仑
搜索
搜索
热搜:
活动
交友
discuz
本版
用户
论坛
BBS
全部帖子汇总
全部技术帖
非技术帖汇总
大赛专区
因仑云商城
产品服务
因仑项目小组
快捷导航
因仑“3+1”工程特种兵精英论坛
»
论坛
›
单片机
›
AVR单片机
›
019、看门狗的c语言编程
返回列表
查看:
895
|
回复:
0
019、看门狗的c语言编程
[复制链接]
张衍波
张衍波
当前离线
积分
8235
电梯直达
沙发
发表于 2015-4-29 20:54:30
|
显示全部楼层
|
倒序浏览
|
阅读模式
/********************************************************************
汇诚科技
网址:
http://www.ourhc.cn
产品有售淘宝店:
http://shop36330473.taobao.com
*********************************************************************/
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define uchar unsigned char //数据类型说明
#define uint unsigned int //数据类型说明
/**********************************************************************
延时函数
**********************************************************************/
void DelayMs(uint i) //Ms级延时函数,参数i:延时时间
{uint j;
for(;i!=0;i--)
{for(j=2000;j!=0;j--) {;}
}
}
/**********************************************************************
跑马灯函数
**********************************************************************/
void Horse(uchar i) //跑马灯程序,通过步判断点亮相应的LED
{switch(i) //高电平点亮LED
{case 1
ORTA=0xfe;break; //1111 1110B 点亮LED1
case 2
ORTA=0xfc;break; //1111 1100B 点亮LED1~LED2
case 3
ORTA=0xf8;break; //1111 1000B 点亮LED1~LED3
case 4
ORTA=0xf0;break; //1111 0000B 点亮LED1~LED4
case 5
ORTA=0xe0;break; //1110 0000B 点亮LED1~LED5
case 6
ORTA=0xc0;break; //1100 0000B 点亮LED1~LED6
case 7
ORTA=0x80;break; //1000 0000B 点亮LED1~LED7
case 8
ORTA=0x00;break; //0000 0000B 点亮LED1~LED8
default:break;}
}
/**********************************************************************
初始化I/0
**********************************************************************/
void Init_IO(void) //初始化I/O口
{
DDRA=0xff; //端口设置:PA口设置为推挽1输出
PORTA=0xff;
}
/**********************************************************************
看门狗初始化
**********************************************************************/
void WDT_init(void)
{
WDR();//WDT 复位
WDTCR = 0x0F;//使能看门狗
}
/**********************************************************************/
void init_eatdog(void)
{
CLI(); //禁止所有中断
WDT_init();
SEI();//开全局中断
}
/**********************************************************************
看门狗关闭(喂狗)
**********************************************************************/
void WDT_off(void)
{
WDR();//WDT 复位
WDTCR |= (1<<WDTOE) | (1<<WDE); //置位 WDTOE 和 WDE
WDTCR = 0x00;//关闭WDT
}
/**********************************************************************
主函数
**********************************************************************/
void main(void)
{uchar i;
Init_IO();
PORTA=0x00; //PORTA初始值为0,灭掉所有的LED
DelayMs(100); //延时
WDTCR=0x00; //看门狗开启使能 1.9S
while(1) //程序无条件执行
{
for(i=1;i<9;i++) //依次点亮LED1~LED8
{Horse(i);
DelayMs(100); //延时
init_eatdog(); //看门狗初始化
WDT_off(); //喂狗(如果停止喂狗系统自动复位)
}
for(i=9;i>0;i--) //依次熄灭LED8~LED1
{Horse(i);
DelayMs(100);} //熄灭时间约1秒
PORTA=0xff;
DelayMs(100);
}
}
/**********************************************************************
程序结束
**********************************************************************/
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
加入因仑
x
收藏
0
分享
支持
0
反对
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入因仑
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表