⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdt.s

📁 AVR开发板例子源代码
💻 S
字号:
	.module wdt.c
	.area text(rom, con, rel)
	.dbfile E:\iccavr代码\实验17_片内看门狗WDT的使用\wdt.c
	.dbfunc e DelayS _DelayS fV
;              j -> R20,R21
;              k -> R22,R23
;              i -> R16,R17
	.even
_DelayS::
	rcall push_gset2
	.dbline -1
	.dbline 35
; //******************************************************************************
; //                                                                             *
; //    FileName   : WDT.c           ICCAVR V6.31A编译                           *
; //    Function   : 借助跑马灯实验片内看门狗WDT的功能                           *
; //    Date       : 2006-12-11                                                  *
; //    Version    : 1.0                                                         *
; //                                                                             *
; //    Author     : 开关电源              hongtusy@163.com                      *
; //    Company    : 电子信息技术咨询网    http://www.itsn.cn                    *
; //                                                                             *
; //***************************描述与记事*****************************************
; //实验板的AVR程序,片内看门狗WDT的实验演示。
; //说明:使用延迟程序,间歇轮点亮或关闭LED灯。
; //具体电路可参照使用指南里的说明。PC口输出0,LED即点亮。
; //实验板有两种方式使用条形LED,一种是配合LED,使用三极管驱动,
; //这里使用后一种,LED公共阳极直接接电源正的驱动方式。
; //使用器件:ATMEGA8535,可更换。          使用默认的片内RC振荡器,1MHz。
; //使用的开关:SW1-1~8,SW6-2,SW2-6打开,SW3-8为系统复位端。
; //记事:如果将喂狗程序关闭或超出需要喂狗的时间再喂,单片机就会复位。
; //******************************************************************************
; #include <iom8535v.h>             //头文件,ATmega8535单片机的寄存器定义
; #include "macros.h"               //可以使用NOP()以及SEI()等指令.
; 
; typedef unsigned char  uchar;    //宏
; typedef unsigned int   uint;
; 
; /************************************************
; 函 数 名:    DelayS()
; 功    能:    秒级延时函数
; 输入参数:     延迟时间/系统晶体
; 输出参数:    做相应的延迟处理
; 描    述:    /
; ***********************************************/
; void DelayS (uint i)            //延时函数,参数i为延时时间
; {
	.dbline 37
;     uint j,k;               //双重延时
; 	for (j=0;j<i;j++)
	clr R20
	clr R21
	rjmp L5
L2:
	.dbline 38
; 	{
	.dbline 39
; 	    for (k=0;k<6000;k++)
	clr R22
	clr R23
	rjmp L9
L6:
	.dbline 40
	wdr
L7:
	.dbline 39
	subi R22,255  ; offset = 1
	sbci R23,255
L9:
	.dbline 39
	cpi R22,112
	ldi R30,23
	cpc R23,R30
	brlo L6
	.dbline 42
L3:
	.dbline 37
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 37
	cp R20,R16
	cpc R21,R17
	brlo L2
	.dbline -2
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r j 20 i
	.dbsym r k 22 i
	.dbsym r i 16 i
	.dbend
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 46
; 		WDR();                  //喂狗
; 		//;
; 	}
; }
; //***********************main***************
; void main(void)                       //主程序
; {
	.dbline 49
;     uchar i;                      //数据类型说明,无符号字符型常数
; 	
; 	WDTCR = 0b00001111;         //设置看门狗定时器并打开。定时时间是2.1s。
	ldi R24,15
	out 0x21,R24
	.dbline 51
; 	
; 	DDRC=0xff;                    //PC口为输出
	ldi R24,255
	out 0x14,R24
	.dbline 52
; 	i=255;                        //赋值语句
	ldi R20,255
	rjmp L12
L11:
	.dbline 54
; 	while(1)                      //如果条件为真,1=真,所以死循环执行嵌套部分。
; 	{
	.dbline 55
; 	    if(i==0)                  //
	tst R20
	brne L14
	.dbline 56
; 		{
	.dbline 57
; 		      i=255;
	ldi R20,255
	.dbline 58
; 		}
L14:
	.dbline 59
	out 0x15,R20
	.dbline 60
	ldi R16,2
	ldi R17,0
	rcall _DelayS
	.dbline 61
	dec R20
	.dbline 62
L12:
	.dbline 53
	rjmp L11
X0:
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -