实验八 看门狗实验

合集下载

《嵌入式系统原理与应用》实验报告04-看门狗实验

《嵌入式系统原理与应用》实验报告04-看门狗实验
六、教师评语
签名:
日期:
成绩
WDFEED=0x55;
}
void FeedDog(void)
{
WDFEED=0xaa;
WDFEED=0x55;
}
int main (void)
{
uint32 dly;
PINSEL0=0x00;
PINSEL1=0x00;
IO0DIR=led;
IO0SET=led;
for(dly=0;dly<500000;dly++);
1.实验效果截图
2.源程序
#include "config.h"
#define key (1<<20)//set the button to be P0.20
#define led (1<<7)
void WDT_Init(uint32 time)
{
WDTC=time;
WDMOD=0x03;
WDFEED=0xaa;
二、实验设备(环境)及要求
硬件:PC机;
软件:PC机操作系统windows XP,Proteus软件,ADS1.2
三、实验内容与步骤
实验内容:
运行程序时,LED灯闪烁一下,并启动看门狗;当按键按下时,停止喂狗,此时会引起看门狗复位;复位之后,程序重新运行,此时LED灯又闪烁了一下。
四、实验结果与数据处理
《嵌入式系统原理与接口技术》实验报告
实验序号:4实验项目名称:看门狗实验
学 号
XXXX
姓 名
XXX
专业、班
计算机科学与技术
实验地点
1-416
指导教师
XXX
实验时间

田老师的PIC单片机教案8

田老师的PIC单片机教案8
图8-16 A/D实验原理图
第八章 PIC单片机应用
8.9 串行通讯实验
图8-18 串口通讯软件界面
状态 指示灯
发送 快捷键
第八章 PIC单片机应用
8.9 串行通讯实验
J3 232
1 6 2 7 3 8 4 9 5
C8
1 3
C9 4
5 7 8 14 13
MAX232 VCC
IC5
C1+ 16 C1- 2 C2+ 15 C2- 6 TX 10 RX 9 14 11 13 1512
遍数减1
图8-3 发光二极管循环点亮实验原理图
是否点亮八遍
否 是
图8-4 发光二极循环点亮框图
第八章 PIC单片机应用
8.3数码管点亮实验
图8-6 数码管实验原理图
第八章 PIC单片机应用
8.4 I/O口查询实验
开始 RB0、RB1为输入
延时
查询RB0 、RB1
送C口显示
图8-8 I/O口查询实验电路框图
8.1发光二极管数据演示实验
开始
取第一加数并显示 放入30H寄存器
取第二加数并显示 放入25H寄存器 两数相加 延 时 6s
图 8-1 发光二极管数据演示实验原理图
图8-2 发光二极管数据演示框图
第八章 PIC单片机应用
8.2发光二极管循环点亮实验 开始
设定循环遍数 01H送C口显示
延时 01H左循环
16 2 15 6 10 9 11 12
C6 C7
图 8-19 串口通讯实验原理图
PIC16F873
IC2
RC0 R13 D24
RC1 R12 D25
RC6 RC7

MSP430F5529实验指导书V1.0

MSP430F5529实验指导书V1.0

MSP430F5529 实验指导书(V1.0)2014年10月27日东北林业大学机电工程学院“3+1”实验室实验一基础GPIO实验实验二键盘与液晶显示实验实验三时钟系统配置实验实验四看门狗与定时器实验实验五 AD/DA实验实验六比较器实验实验七 Flash实验实验八串行通信实验实验一基础GPIO实验【实验目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列单片机程序开发的基本步骤;3、掌握MSP430 IO口的基本功能。

【实验仪器】1、SEED-EXP430F5529v1.0开发板一套;2、PC机操作系统Windows XP或Windows 7,CCSv5.1集成开发环境。

【实验原理】CCS(Code Composer Studio)是 TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。

CCSv5.1 为 CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是 MSP430 软件开发的理想工具。

SEED-EXP430F5529v1.0开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示:图1-1 LED与MCU的IO对应关系电路我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。

开发板上还有2个可操作的按键S1,S2。

如图1-2所示。

图1-2 按键电路我们可以通过读取与按键相连的IO口的输入电平状态来执行相应的操作。

此外,S1,S2还可以作为外部中断源,触发中断。

【实验内容】1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮;2、用按键S1控制开发板上LED1的亮灭状态(查询法);3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。

【实验步骤】内容1:使能开发板上的8个LED灯依次按顺序循环点亮1、打开CCSv5并确定工作区间,然后选择File-->New-->CCS Project 弹出图1-3对话框。

嵌入式系统看门狗实验报告

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验《嵌入式系统原理与接口技术》实验报告实验序号:4实验项目名称:看门狗实验1234篇二:嵌入式实验报告目录实验一跑马灯实验................................................. (1)实验二按键输入实验................................................. .. (3)实验三串口实验................................................. . (5)实验四外部中断实验................................................. .. (8)实验五独立看门狗实验................................................. (11)实验七定时器中断实验................................................. (13)实验十三ADc实验................................................. .. (15)实验十五DmA实验................................................. .. (17)实验十六I2c实验................................................. (21)实验十七spI实验................................................. .. (24)实验二十一红外遥控实验................................................. .. (27)实验二十二Ds18b20实验................................................. (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。

15-看门狗实验

15-看门狗实验

第15章看门狗15.1概述接触过c51的朋友,对看门狗的概念应该不陌生吧?看门狗在某种程度上有软件复位的意义。

比起c51,AVR的看门狗更简单,而且很听话。

本章笔记可能会比较短,毕竟配置看门狗,就几个动作而已。

15.2关于看门狗的寄存器看门狗的操作其本上有"开狗","喂狗","关狗"这三个步骤。

开狗的意思是初始化看门狗并且使能它;喂狗的意思是复位看门狗;关狗动作就是不使能看门狗。

而配置看门狗的寄存器就只有一个而已。

看门狗定时器控制寄存器WDTCR该寄存器的功能如名字般,使能|不使能看门狗,设置喂狗的最长时间。

WDTOE位,该位的存在时为了关闭看门狗。

必须附和使用WDE位。

WDE位,看门狗使能位。

该位置一时启动看门狗。

WDP0~2,喂狗时间配置位。

具体的配置如下图。

该寄存器的每一个位如果不配合使用,说真的意义很小。

15.3"开狗","喂狗","关狗""开狗"-启动看门狗的具体步骤如下:1.配置喂狗时间。

2.使能看门狗。

(以上的动作可以在一个指令完成)C语言的写法://看门狗启动函数void WDT_ON(){WDTCR=0x0f;//WDE=1-看门狗使能,WDP0:1:2=1:1:1-2秒喂狗。

}"关狗"-关闭看门狗的具体步骤如下:1.WDTOE位和WDE位同时置一。

2.WDE位置零。

C语言的写法://看门狗关闭函数void WDT_OFF(){WDTCR|=BIT(WDTOE)|BIT(WDE);//制造4个周期关闭时间WDTCR&=~BIT(WDE);//关闭看门狗}为什么关闭看门狗需要同时置一WDTOE和WDE位呢?具体我也不是很清楚,但是根据手册说:当WDTOE和WDE一同置一时,会产生4个有效的关闭周期。

如果在这四个周期内,将WDE位设置位0,那么久会成功关闭看门狗。

微型控制技术实验报告

微型控制技术实验报告

实验报告——微控制器技术班级:自动化0703姓名:杨法松学号:090107006目录:一:实验目的及要求 (2)二:实验基本内容(TD-51单片机实验系统实现) (2)三:实验报告基本内容要求 (4)四:实验系统简介 (5)五:实验一到实验三 (7)实验四 (11)实验五 (13)实验六 (15)实验七 (16)实验八 (18)一、实验目的及要求:1、学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法;2、熟悉TD-51单片机系统板及实验系统的结构及使用;3、进行MCS51单片机指令系统软件编程设计与硬件接口功能设计;4、学习并掌握Keil C51与Proteus仿真软件联机进行单片机接口电路的设计与编程调试;5、完成指定MCS51单片机综合设计题二、实验基本内容(TD-51单片机实验系统实现)实验一清零程序与拆字程序设计根据实验指导书之“第二章单片机原理实验”(P17~P23页)内容,熟悉实验环境及方法,完成思考题1、2(P23)基础实验项目。

实验二拼字程序与数据传送程序设计汇编语言完成实验指导书P24思考题3、4题的基础实验项目。

实验三排序程序与散转程序设计汇编语言完成实验指导书P24思考题5、6题的基础实验项目。

实验四静态存储器扩展实验基本部分:阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“4.1 静态存储器扩展实验”基本实验项目(P57)。

提高部分:阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“4.2 FLASH存储器扩展实验”实验项目(P60)。

实验五数字量输入输出实验基本部分:阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目(P36),。

提高部分:(任选一题)题目一:LED交通灯控制(使用8255接口芯片)要求:使用汇编语言编程,功能为:通过开关实现LED灯工作方式即时控制,完成LED交通灯的开关控制显示功能和LED交通灯自动循环显示功能。

看门狗实验

看门狗实验

看门狗实验1. 为什么要看门狗?看门狗的原理是什么?外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。

假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。

一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。

2. 看门狗的功能1)作为常规功能可以产生中断,通用的中断用16bit定时器2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时(PCLK)钟的的复位信号我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。

下图为看门狗的电路示意图PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。

看门狗定时器记数值的计算公式如下:t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中。

看门狗实验预习报告

看门狗实验预习报告

实验8 看门狗实验一、实验项目1、利用watchdog产生定时中断,起定时器作用;2、编程实现喂狗、看门狗和重启系统。

二、实验类型验证性。

三、计划学时2学时。

四、实验目的1、了解watchdog的作用;2、掌握lpc2103的watchdog定时器的使用方法。

五、实验设备与平台1、实验设备:计算机(PC),ARM9-2410EP增强型嵌入式教学实验系统,Multi-ICE仿真器。

2、平台:Windows、ADS1.2。

六、涉及的知识点定时器的使用方法,看门狗的作用以及使用方法。

七、实验相关知识看门狗功能简述:嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。

为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。

看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。

看门狗的工作原理:设系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti。

在程序正常运行时,Ti>Tp,看门狗的定时器就不会溢出;若由于干扰等原因使系统不能在Tp时刻内修改看门狗定时器的记数器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。

S3C2410A的看门狗简介:S3C2410A的看门狗定时器有两个功能:1、作为常规时钟,并且可以产生中断;2、作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周期的复位信号。

主要特性如下:通用的中断方式的16bit定时器;当计数器减到0(发生溢出),产生128个PCLK周期的复位信号。

下图为看门狗的电路示意图,看门狗时钟使用PCLK作为它的时钟源,PCLK通过预分频产生适合的看门狗时钟。

图5.1 Watchdog定时器框图八、实验内容与步骤1.实验说明由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。

要实现看门狗的功能,只需对看门狗的寄存器组进行操作。

6Zigbee实验报告《看门狗》

6Zigbee实验报告《看门狗》
实验步骤:
1)打开鼎轩VSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与电脑USB接口;
3)点击(\cC2530-simpledemo\cc2530-simple-demo\WATCHDOG)目录下的工程图标watchdog.eww打开工程;.
WDCTL = 0x50;
}
/***************************
//主函数
*************************itLed();//调用初始化函数
Init_Watchdog();
LED1=1;
while(1)
{
LED2=~LED2; //仅指示作用。
LED1 = 0; //LED1灯熄灭
LED2 = 0;//LED2灯熄灭
}
void Init_Watchdog(void)
{
WDCTL = 0x00; //这是必须的,打开IDLE才能设置看门狗
WDCTL |= 0x08;
//时间间隔一秒,看门狗模式
}
void FeetDog(void)
{
WDCTL = 0xa0;
for(j=587;j>0;j--);
}
第二页
实验内容与步骤
/****************************
//初始化程序
*****************************/
void InitLed(void)
{
P1DIR |= 0x03; //P1_0、P1_1定义为输出
P1INP |= 0X03; //打开下拉
Delayms(300);

7.看门狗实验

7.看门狗实验

5.2 窗口看门狗源文件
void WWDG_IRQHandler(void)
{ WWDG_SetCounter(WWDG_CNT);
WWDG_ClearFlag();
LED1=!LED1;
}
5.3 窗口看门狗主程序
回到主界面,在 main.c 文件里面编写如下代码:
#include "led.h" #include "delay.h"
}
delay_ms(10);
}
}
4. WWDG简介
4.1 WWDG主要性能
可编程的自由运行递减计数器 条件复位:
1.当递减计数器的值小于0x40, (若看门狗被启动)则产生复位。
2.当递减计数器在窗口外被重新装载, (若看门狗被启动)则产生复位。 见0。 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤 醒中断(EWI),它可 以被用于重装载计数器以避免WWDG复位。
2.2 IWDG功能描述(STM32参考手册 P317)
在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗; 此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾 0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要在键 寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加 载到计数器,从而避免产生看门狗复位 。
2.3 IWDG相关寄存器
键寄存器IWDG_KR: 0~15位有效
预分频寄存器IWDG_PR:0~2位有效。具有写保护功能,要操作先取消 写保护
重装寄存器IWDG_RLR:0~11位有效。具有写保护功能,要操作先取 消写保护。 状态寄存器IWDG_SR:0~1位有效

看门狗实验

看门狗实验

看门狗实验一、实验目的1.掌握“看门狗”(MAX 813L )复位控制的硬件接口技术2.掌握“看门狗”(MAX 813L )复位控制驱动程序的设计方法二、实验说明为了控制系统不受外界干扰而出现死机现象,可采用MAX813L 复位监控芯片,该芯片具备复位及监视跟踪两大功能。

主要功能:·精密电源电压、监控4.65V ·200ms 复位脉冲宽度·V1=1V 时保证复位RESET 有效。

·TTL/CMOS 兼容的防抖动人工复位输入·独立的监视跟踪定时器1.6S 溢出时间。

·电源故障或欠电压报警的电压监控 ·加电,掉电有电压降低时输出复位信号。

·低电平有效的人工复位输入 。

各引脚的功能和意义如图:(1)MR :人工复位输入、当输入降至0.8V 时产生复位脉冲,低电平有效的输入可用开关短路 到地或TTL/CMOS 逻辑驱动,不用时浮空。

(2)VCC :+5V 输入。

(3)GND :地。

(4)PFI :电源故障比较器输入,高PFI 低于1.25V 时PFO 输出低电平吸收电流;否则PFO 输出保持高电平,如果不用将PFI 接地或VCC 。

(5)PFO :电源故障比较器输出,高PFI 低于1.25V 时,输出低电平且吸收电流;否则PFO 输出 保持高电平。

(6)WDI :监视跟踪定时器输入,WDI 保持高或低电平时间长达1.6S ,WDI 输出低电平,WDI 浮空或接高阻三态门将禁止监控跟踪定时器功能,只要发生复位,内部监视跟踪定时的清零。

(7)RESET :复位输出(低电平有效)。

(8)WDO :监视跟踪定时器输出,当内部监视跟踪定时器完成1.6S 计数后,本脚输出低电平,直到下一次监视跟踪定时器清零, 才再变为高电平,在低电源或VCC 低于复位门限电压时,WDO 就保持低电平,只要VCC 上升到复位门跟电压以上后 WDO 就变为高电平而没有滞后。

单片机实验报告

单片机实验报告

成都理工大学信息科学与技术学院实验报告课程名称: 单片微型计算机系统原理与应用姓名: 贺成佳学号: 201113010803专业: 信息工程任课教师: 林凡强实验一开关量输入一、实验目的○熟悉单片机的P1口作IO口时的输入,输出应用二、程序设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int/**********单片机IO口引脚定义********************************************/#define LED P0sbit K1 = P1^0;sbit K2 = P1^1;/**********函数定义******************************************************/ uchar scan_key();void proc_key(uchar key_v);void delayms(uchar ms);/**********主函数********************************************************/ void main(void){uchar key_s,key_v;key_v = 0x03; //初始化IO口LED = 0xfe;while(1){key_s = scan_key();if(key_s != key_v) //判断按键是否按下{delayms(10); //延时消抖key_s = scan_key();if(key_s != key_v){key_v = key_s;proc_key(key_v);}}}}/**********键盘扫描函数**************************************************/ uchar scan_key(){uchar key_s;key_s = 0x00;key_s |= K2;key_s <<= 1;key_s |= K1;return key_s; //返回按键号}/**********键盘处理函数**************************************************/ void proc_key(uchar key_v)if((key_v & 0x01) == 0){LED = _cror_(LED,1); //循环右移一位}else if((key_v & 0x02) == 0){LED = _crol_(LED, 1); //循环左移一位}}/***********延时函数*****************************************************/ void delayms(uchar ms)// 延时子程序{uchar i;while(ms--){for(i = 0; i < 120; i++);}}三、现象及结果上电时, 点亮P00口LED○按下K1时, LED向右移一位○按下K2时, LED向左移一位实验二 IO驱动实验一、实验目的○了解89C51单片机IO口的功能○熟悉89C51单片机的IO驱动程序的编写方法○掌握驱动程序的加载过程和方法二、程序设计#include<reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int/*********************引脚定义********************/ #define LED P0/*********************延时函数********************/ void delayms(uchar ms)// 延时子程序{unsigned char i;while(ms--){for(i = 0; i < 120; i++);}}/*********************主函数**********************/void main(void){LED = 0xfe; //初始化P0口while(1){ //延时delayms(250);LED = _crol_(LED,1); //循环右移1位,点亮下一个LED }}三、现象及结果LED流水灯实验三外部中断计数实验一、实验目的○掌握89C51单片机中断系统的工作原理○掌握89C51单片机中断优先级的概念二、程序设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/**********************共阳数码管编码表***************************/ unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 30x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, offunsigned char dis_buf[4]; // 显示缓冲区uint int0_cnt=0; //计数初始化/**********************函数定义***********************************/ void update_disbuf();void delayms(uint j);/**********************主函数*************************************/ void main(void){IE=0X81; //开总中断和外中断0IT0=1; //下降沿触发P0=0x00; //初始化io口P1=1;dis_buf[0]=dis_code[0]; //缓冲器初始化dis_buf[1]=dis_code[0];dis_buf[2]=dis_code[0];dis_buf[3]=dis_code[0];while(1){P0=dis_buf[3];P1=0x01; // 显示千位delayms(5);P0=0xff;P0=dis_buf[2]; // 显示百位P1=0x02;delayms(5);P0=0xff;P0=dis_buf[1]; // 显示十位P1=0x04;delayms(5);P0=0xff;P0=dis_buf[0]; // 显示个位P1=0x08;delayms(5);P0=0xff;}}/*********************INT0中断处理函数*****************************/ void ex_int0()interrupt 0{EX0=0; //关闭中断int0_cnt++; //计数器加1if(int0_cnt>9999) //判断int0_cnt=0;dis_buf[3]=dis_code[int0_cnt/1000]; //分离出千位数dis_buf[2]=dis_code[int0_cnt%1000/100]; //分离出百位数dis_buf[1]=dis_code[int0_cnt%100/10]; //分离出十位数dis_buf[0]=dis_code[int0_cnt%10]; //分离出个位数EX0=1; //开中断}/*********************延时函数*************************************/ void delayms(uint j){uchar i;for(;j>0;j--){i=250;while(--i);i=249;while(--i);}}三、现象及结果通过一个安键来提供中断信号,但是由于按键有抖动现象,所以每按一次有可能产生多次计数脉冲,当有外部中断时(用按键K1模拟外部中断),计数器加1实验四计数器实验一、实验目的○学习89C51内部定时/计数器使用方法二、程序设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int#define out P0 //IO端口定义/*******共阳数码管 0 , 1 ,2 ,3 , 4 ,5 ,6 , 7, 8 ,9 ******/ uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};uint i = 0; //全局变量uint cnt=0;/***********主函数*******************************************************/void main(void){int j;TMOD=0x15; // 定时器0工作于计数方式,工作方式1,16位计数// 定时器1工作于定时方式,工作方式1,16位定时TH0=0; // 清零计数器TL0=0;TH1=0x4C; // 12M晶振工作下,定时50msTL1=0x00;TR0=1; // 启动定时器0TR1=1; // 启动定时器1IE=0x88;// 打开定时中断1和总中断while(1){P2=0x00; // 输出百位out = seg[cnt/100];P2 = 0x01;for(j=0;j<100;j++);P2=0x00;out = seg[cnt%100/10]; // 输出十位P2 = 0x02;for(j=0;j<100;j++);P2=0x00;out = seg[cnt%10]; // 输出个位P2 = 0x04;for(j=0;j<100;j++);}}/***********计数器T0中断处理函数******************************************/void Timer1_ISR() interrupt 3{static char j = 0;i++;TH1=0x4C; // 重设定时器值,50ms @ 12MHz XTALTL1=0x00;if(++j == 20) // 50ms * 20 = 1S{j = 0;i = (TH0 << 8) | TL0; // 1S内的计数值cnt=i;i=0;TH0 = 0; // 清零计数TL0 = 0;}}三、现象及结果对外部脉冲进行计数,并通过4位数码管显示计数值实验五 RAM读写实验一、实验目的○掌握89C51单片机片内RAM读写方法二、程序设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned intuchar data dis_digit; //申明一个全局变量/*********************共阳数码管编码表*****************************************/uchar code dis_code[16]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 30x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};// 4, 5, 6, 7, 8, 9,a,b,c,d,e,fuchar data dis_buf[2];//数据缓冲器uchar data RW_Add; //在DATA区定义一个字符变量void delayms(uchar ms);/*********************主函数***************************************************/void main(void){uchar i;P0 = 0xff; //关闭段码P2 = 0x00; //关闭位选dis_buf[0] = 0xbf; // 显示"-"dis_buf[1] = 0xbf; // 显示"-"dis_digit = 0x01;while(1){RW_Add=0x78; //写入的字节dis_buf[0]=dis_code[(RW_Add&0xf0)>>4]; //写入5dis_buf[1]=dis_code[RW_Add&0x0f]; //写入8dis_digit=0x01;for(i=0;i<2;i++){P0=dis_buf[i]; // 显示数据P2=dis_digit;delayms(5); //延时P0=0xff;dis_digit<<=1; //左移1位}}}/***************延时函数*********************************************************/void delayms(unsigned char ms)// 延时子程序{unsigned char i;while(ms--){for(i = 0; i < 120; i++);}}三、现象及结果向内存中写入数据0x58,然后读出,用两位数码管显示读出的值实验六 PWM发生器实验一、实验目的○熟悉89C51单片机内部定时使用方法○熟悉89C51单片机的IO口使用方法二、程序设计#include<reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int/**********引脚定义*****************************************************/uchar PWM_T = 0; //占空比控制变量sbit PWM_OUT=P0^0; //占空比输出脚void main(void){bit flag = 1; //控制灯渐亮渐熄方式uint n;TMOD=0x02; //定时器0,工作模式2,8位定时模式TH0=241; //写入预置初值241到定时器0,使15微秒溢出一次(11.0592MHz)TL0=241; //写入预置值TR0=1; //启动定时器ET0=1; //允许定时器0中断EA=1; //允许总中断PWM_OUT=1; //初始化P1while(1){for(n=0;n<30000;n++); //延时,将响应定时器中断if(flag==1)PWM_T++;elsePWM_T--;if(PWM_T>=10) //设置级别为10flag=0;if(PWM_T==0) //限定最低级别为0flag = 1;}}/*********************定时器中断0**************************************/timer0() interrupt 1 using 2{static uchar t ; //t用来保存当前时间在一秒中的比例位置t++; //每15微秒增加1if(t==10) //1.5毫秒的时钟周期{t=0; //使t=0,开始新的PWM周期PWM_OUT=0; //输出0}if(PWM_T==t) //按照当前占空比切换输出为高电平PWM_OUT=1; //输出1}三、现象及结果通过对P0^0脚占空比调整输出10个级别的调整波形,可通过示波器观察,或者是驱动LED,可以看到其亮暗变化实验七 PWM蜂鸣器实验一、实验目的○熟悉89C51单片机内部定时使用方法二、程序设计#include<absacc.h> //头文件#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit BUZZER=P0^0;//发声音口uchar codeT0_H[16]={0xFF,0xFB,0xFB,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE, 0xFE,0xFE,0xFE}; //定时器延时高位uchar codeT0_L[16]={0xF1,0x4,0x90,0xC,0x44,0xAC,0x9,0x34,0x82,0xC8,0x06,0x22,0x56,0x85 ,0x9A,0xC1}; //定时器延时低位uchar codemusic[32]={8,0,8,9,8,0xB,0xA,0,8,0,8,9,8,0xC,0xB,0,8,0,8,0xF,0xD,0xB,0xA,9,0xE,0, 0xE,0xD,0xB,0xC,0xB,0x0}; //音律选择uchar codemusic_L[32]={2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4}; //延时长度uchar a,b;void delay_music(uint v) //延时{while(v!=0)v--;}void delay_music1(uint j)//延时{while(j!=0){j--;delay_music(200);}}void delay_music2(uint j)//延时{while(j!=0){j--;delay_music1(80);}}/************************主函数****************************************/ void main(){//uint i;uchar k,n,m;delay_music(100);TMOD=0x11; //初始化定时器TH1=0xfc;TL1=0x66;EA=1; //开中断ET0=0;TR0=0;ET1=0;TR1=0;while(1){ET1=1; //打开定时器TR1=1; //启动计数for(k=0;k<32;k++) //循环32次{n=music[k];m=music_L[k];a=T0_H[n];b=T0_L[n];delay_music2(m);}}}/**********************定时计数器T1中断处理****************************/time1 () interrupt 3 using 3 //定时器中断{TH1=a; //初始化定时器计数器TL1=b;BUZZER=!BUZZER; //蜂鸣器取反}三、现象及结果蜂鸣器演奏歌曲实验八外扩WDG看门狗实验一、实验目的○掌握WDG看门狗的作用二、程序设计#include<reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int/********引脚定义**************************************************************/ #define LED P0sbit SW1=P1^0;sbit WDT=P1^1;/********延时函数**************************************************************/ void delayms(uchar ms)// 延时子程序{unsigned char i;while(ms--){for(i = 0; i < 120; i++);}}/*********主函数***************************************************************/ void main(void){LED = 0xfe; //初始化LEDWDT=1;_nop_(); //初始化看门狗WDT=0;_nop_();WDT=1;_nop_();WDT=0;while(1){if(SW1) //SW1=1时,喂狗{WDT=1;_nop_();WDT=0;_nop_();WDT=1;_nop_();WDT=0;}delayms(150); //延时delayms(150);LED = _crol_(LED,1);//循环右移1位,点亮下一个LED }}三、现象及结果○当开关SW1置高时,程序清除硬件看门狗 LED流水灯正常运行○当开关SW1置低时,程序不清除看门狗,导致程序复位,LED流水灯无法正常运行。

看门狗实验

看门狗实验

看门狗实验1. 为什么要看门狗?看门狗的原理是什么?外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。

假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。

一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。

2. 看门狗的功能1)作为常规功能可以产生中断,通用的中断用16bit定时器2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时(PCLK)钟的的复位信号我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。

下图为看门狗的电路示意图PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。

看门狗定时器记数值的计算公式如下:t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中。

看门狗实验报告

看门狗实验报告

看门狗实验报告看门狗实验报告引言:近年来,随着科技的不断进步,智能家居已经成为了人们生活中的一部分。

其中,看门狗作为智能家居的一种重要组成部分,不仅可以保障家庭安全,还能提供便利。

本文将对看门狗的实验进行报告,探讨其功能、优势以及未来的发展。

一、看门狗的功能看门狗是一种通过声音、图像等感知技术,能够自动识别陌生人和异常情况的智能设备。

其主要功能包括以下几个方面:1. 安全监控:看门狗能够通过高清摄像头实时监控家庭环境,一旦检测到异常情况,如入侵者或火灾等,会立即发出警报并通知家庭成员。

这种智能化的安全监控系统,为家庭带来了更高的安全保障。

2. 远程控制:通过手机APP或者智能音箱等设备,家庭成员可以随时随地远程控制看门狗。

比如,当家庭成员不在家时,可以通过手机APP查看家中的实时图像,了解家庭状况,确保家人的安全。

3. 语音交互:看门狗还具备智能语音交互功能,可以通过语音指令实现各种操作。

比如,家庭成员可以通过语音指令让看门狗打开门锁、关闭灯光等,提供了更加便捷的生活体验。

二、看门狗的优势相比传统的门禁系统,看门狗具有以下几个明显的优势:1. 智能化:看门狗采用了先进的人工智能技术,能够通过学习和分析,自主判断何为异常情况。

相比传统门禁系统,其具备更高的准确性和智能性,能够更好地保障家庭安全。

2. 便捷性:看门狗的远程控制功能,使得家庭成员可以随时随地掌握家庭状况,并进行相应的操作。

不再需要携带钥匙或者依赖其他人的帮助,大大提高了生活的便利性。

3. 可视化:通过高清摄像头,看门狗能够提供清晰的实时图像,让家庭成员可以随时了解家中的情况。

这种可视化的特点,不仅带来了安全感,还为家庭成员提供了更多的互动和娱乐方式。

三、看门狗的未来发展随着科技的不断进步,看门狗在未来将有更广阔的应用前景:1. 人脸识别技术:目前,看门狗主要通过声音和图像等感知技术进行识别,但是随着人脸识别技术的不断发展,未来的看门狗可能会具备更高的识别准确性和速度,能够更好地辨认家庭成员和陌生人。

看门狗DIY

看门狗DIY

#define TRIG_PULSE int main(void){ IRQEnable();
1<<22
PINSEL0 = 0x00000000; Time0Init(); ……//其它功能初始化 其它功能初始化 while(1){ …… //系统功能代码 系统功能代码 } return(0); }
B
Q
Q
0 0 0 0
1 1 1 1
2. 可重复触发的单稳态触发器 可重复触发的单稳态触发器74HC123
逻 辑 符 号 工 作 波 形
74HC123功能表 74HC123功能表
输 入 输 出

TR+ TR−
↑触发 ↓触发 ↑触发 低电平置0

RD
1 1 ↑ 0 × ×
TR−
0 ↓ 0 × 1 ×
TR+
74121集成单稳 集成单稳 态触发器内部简 化逻辑图
74121集成单稳 集成单稳 态触发器逻辑 符号
单稳态触发器74121 单稳态触发器 的工作波形
74121集成单稳态触发器功能表 集成单稳态触发器功能表
A1
1 ↓ ↓ 0 × × 1 0 × ↓ 1 ↓
A2
1 1 1 × 0 × 1 × 0 ↑ ↑ 0 × 1 1
↑ 1 1 × × 0
Q
Q
RD
0 0 0 1 1 1
RD
TR+ TR− 为高电平,置0
为低电平,置0
同样有输出脉冲宽度t W ≈ 0.7 Rext Cext
单稳态触发器的应用
1.脉冲定时 脉冲定时
上图是单稳态触 发器的模块逻辑 表达。用较小的 表达。 宽度的脉冲去触 发,可以获得确 定宽度的脉冲输 出,实现定时控 如下图)。 制(如下图)。

无线通信技术综合训练实验指导书I(CC2530基础)实验八

无线通信技术综合训练实验指导书I(CC2530基础)实验八

⽆线通信技术综合训练实验指导书I(CC2530基础)实验⼋实验⼋外部中断实验实验⼋外部中断实验CPU 有 18 个中断源。

每个中断源有它⾃⼰的、位于⼀系列特殊功能寄存器中的中断请求标志。

每个中断通过相应的标志请求可以单独使能或禁⽌。

通⽤ I/O 引脚设置为输⼊后,可以⽤于产⽣通⽤ I/O 中断(外部中断)。

⼀、实验⽬的通过本实验的学习,熟悉 CC2530 芯⽚通⽤ I/O 中断相关寄存器的配置和使⽤⽅法。

1. 2. 3. 4. 熟悉 CC2530 芯⽚通⽤ I/O 中断相关寄存器配置和使⽤⽅法;掌握 CC2530 芯⽚通⽤ I/O 中断响应处理⽅法;掌握 CC2530 芯⽚中断基本原理;了解CC2530 芯⽚中断优先级。

⼆、实验内容1. 2. 在 CC2530 节点开发板上,启⽤通⽤ I/O 中断配置,由查询控制 LED 闪烁;在 CC2530 节点开发板上,启⽤通⽤ I/O 中断配置,由中断控制 LED 闪烁。

三、实验条件1. 2. 3. 4. 5. 6. 7. ⽤户 PC 机(装有 Microsoft Windows XP 系统)正确安装 IAR Embedded Workbench for 8051 集成开发环境; CC2530 节点开发板(插有 CC2530 模块,带 LCD 模块)1 块; CC Debugger 多功能调试器 1 个; USB 连接线 1根;串⼝连接线 1 根;杜邦线若⼲; 5V 电源 1 个。

四、实验原理1. 中断屏蔽每个中断可以通过中断使能特殊功能寄存器中的中断使能位 IEN0、IEN1 或 IEN2 使能或禁⽌。

图 3-8-1 给出了所有中断源和相关控制以及状态寄存器的完整概况。

当调⽤中断服务程序时阴影框中的中断标志将被硬件⾃动清除。

表⽰触发,可能是因为电平源也可能是因为边沿形成。

中断失去了它,它们将被当作⼀个电平触发(适⽤于端⼝ 0,端⼝ 1 和端⼝2),转换器显⽰为默认和表⽰上升或下降沿检测,即在什么时候中断产⽣。

八看门狗

八看门狗

“喂狗”功能
rWTDAT=15000; rWTCNT=15000; //disable watchdog interrupt rWTCON &= ~(3<<1); //enable Watchdog timer;reset signal. rWTCON|=((1<<5)|(1<<0)); while(1);
主功能函数
int Main(void) { ChangeClockDivider(1,1); ChangeMPllValue(0xa1,0x3,0x1); Port_Init(); Uart_Select(0); Uart_Init(0,115200); Uart_Printf("watchdog test is beginning\n"); watchdog_test(); while(1); }
S3C2410看门狗功能框图
看门狗模块组成
• 看门狗模块包括一个预比例因子放大器,一个四 分频的分频器,一个16 位计数器。看门狗的时钟 信号源来自PCLK,为了得到宽范围的看门狗信 号,PCLK 先被预分频,之后再经过分频器分频。 预分频比例因子和分频器的分频值,都可以由看 门狗控制寄存器(WTCON)决定,预分频比例 因子的范围由0 到255,分频器的分频比可以是 16,32,64 或者128。
步骤
1. 新建一个工程watchdog,添加相应的文件,并修改 watchdog的工程设置;创建watchdog.c并加入到 工程watchdog中; 2. 参照“定时器实验”的timer.c,使定时器完成2秒后 复位; 3. 编译watchdog,下载程序并运行,通过超级终端看 是否复位; 4. 添加watchdog定时器,并将其设置喂watchdog模 式,重新编译运行,通过超级终端看是否复位,; 5. 在ICK中断中每秒重置一次WDTCNT的值,重新编 译运行,通过超级终端看是否复位
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八看门狗实验
一、实验目的
1、了解看门狗的作用;
2、掌握看门狗的使用方法。

二、实验内容
1、编程实现看门狗功能,观察看门狗作用;
2、编程实现看门狗喂狗。

三、实验设备
1、硬件:
JX44B0实验板;
PC机;
JTAG仿真器;
2、软件:
PC机操作系统(WINDOWS 2000);
ARM Developer Suite v1.2;
Multi-ICE V2.2.5(Build1319);
四、基础知识
1、用ADS集成开发环境,编写和调试程序的基本过程;
2、应用程序的框架结构。

五、实验说明
1、看门狗的功能和工作原理
嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。

为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路。

看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。

其基本原理为:当本系统程序完整运行一周期的时间为Tp,看门狗的定时周期时Ti,Ti>Tp,在程序运行一周期后,就修改定时器的计数值,(俗称“喂狗”),只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。

在一个完整的嵌入式机系统或单片机最小系统中通常都有看门狗定时器。

而且一般集成在处理芯片中,看门狗实际上就是一个定时器,只是它在期满后将自动引起系统复位。

2、S3C44B0看门狗的控制
S3C44B0的看门狗定时器有两个功能:
1)为常规定时器使用,而且可以引发中断;
2)为看门狗定时器使用,期满时,它可以产生128个时钟周期的复位信号。

下图是S3C44B0看门狗的示意图。

输入时钟为MCLK(该时钟频率等于系统的主频),它经过两级分频,最后将分频后的时钟作为该定时器的输入时钟,当计数器期满后可以产生中断或者复位信号。

S3C44B0看门狗电路示意图
看门狗定时器计数值的计算公式如下:
t_watchdog = 1 / (PCLK / (Prescaler value + 1 ) / Division_factor)
看门狗的定时周期:
T = WTCNT * t_watchdog
看门狗定时器相关寄存器如下:
控制寄存器(WTCON)
通过该寄存器,可以使能/禁止看门狗、选择输入时钟源、使能/关闭中断、使能/关闭输出。

该寄存器的地址以及各控制位的定义如下:
控制寄存器
数据寄存器(WTDAT)
该数据寄存器用于设置看门狗定时器的超时值。

在初始的操作中该值不会自动加载到定时器中,首次定时器超时值位期初始值0X8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中。

一般时该定时器工作在通用定时器模式下时使用。

数据寄存器
计数器寄存器(WTCNT)
看门狗的定时器的计数器,它的值表示该寄存器的当前计数值,即到下一次期满还需要经历的时钟数,当该定时器工作在看门狗模式时使用该寄存器,每次期满前需要重新设置其值,以防止发生复位。

计数器寄存器
3、程序解析
1)使能WATCHDOG的代码
rWATCNT = 0X1000; /* 设置看门狗初始值 */
rWATCON = BIT_WDT_ENABLE | BIT_WDT_RST_ENABLE | BIT_WDT_CLK_SEL |
BIT_WDT_PRE_SCALER; /* 打开看门狗 */
其中WDT_CLK_SEL和WDT_PRE_SCALER的值如下:
#define WDT_CLK_SEL (0X3 <<3) /* 1/128 */
#define WDT_PRE_SCALER (0XFF <<8) /* 255 */
2)看门狗定时器的时钟周期为(工作主频为60MHZ)
t_watchdog = 1/( MCLK / (255 + 1) / 128 );
3)将WDTCNT设置为0x1000,其超时时间为
t = 0x1000/( 60M / (255 + 1) / 128 ) ≈ 2 秒
4)喂狗
使用程序定期的设置WTCNT寄存器,俗称“喂狗”,继续修改上一次实验的程序,在TICK中断中每秒重置一次WDTCNT的值(使用同一个值0X1000),检查是否有复位发生
if(tick_index%1==0)
rWATCNT = 0X1000; /* 重新设置看门狗时间值 */
5)在TICK中断中每3秒重置一次WDTCNT的值(使用同一个值0X1000),检查是否有
复位发生
if(tick_index%3==0)
rWATCNT = 0X1000; /* 重新设置看门狗时间值 */
六、实验步骤
1、仔细阅读实验说明部分,熟悉WATCHDOG的原理;
2、直接用ADS打开已有的工程文件,或者按照实验一中的方法重新建立工程(当函数无法通过右键跳转的时候,就必须重新建立工程,把所需文件放在一个文件夹下)
3、在DebugRel目录下编译源文件。

(详见实验一),分析并熟悉程序。

.
4、调试运行程序观察程序运行。

自行修改程序观察各变量、寄存器等的作用。

相关文档
最新文档