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

📄 wdt.lis

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

⌨️ 快捷键说明

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