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

📄 hd_support.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LIS
字号:
                        .module HD_Support.c
                        .area vector(rom, abs)
                        .org 32
 0020 1CC0              rjmp _Timer0_OVF_ISR
                        .area text(rom, con, rel)
 0000                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例11_渐明渐暗的灯\舵机控制\HD_Support.c
 0000                   .dbfunc e Device_INIT _Device_INIT fV
                        .even
 0000           _Device_INIT::
 0000                   .dbline -1
 0000                   .dbline 83
 0000           ; /***********************************************************
 0000           ; *   函数库说明:底层硬件初始化函数库                       *
 0000           ; *   版本:                                                 *
 0000           ; *   作者:                                                 *
 0000           ; *   创建日期:                                             *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [硬件说明]                                              *
 0000           ; *   处理器:                                               *
 0000           ; *   系统时钟:                                             *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [支 持 库]                                              *
 0000           ; *   支持库名称:HD_Support.h                               *
 0000           ; *   需要版本:  -----                                      *
 0000           ; *   支持库说明:底层硬件初始化声明库                       *
 0000           ; *                                                          *
 0000           ; *   支持库名称:PF_Config.h                                *
 0000           ; *   需要版本:  -----                                      *
 0000           ; *   支持库说明:硬件平台配置声明库                         *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [版本更新]                                              *
 0000           ; *   修改:                                                 *
 0000           ; *   修改日期:                                             *
 0000           ; *   版本:                                                 *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [版本历史]                                              *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [使用说明]                                              *
 0000           ; ***********************************************************/
 0000           ; 
 0000           ; /********************
 0000           ; * 头 文 件 配 置 区 *
 0000           ; ********************/
 0000           ; # include "PF_Config.h"
 0000           ; # include "HD_Support.h"
 0000           ; 
 0000           ; /********************
 0000           ; *   系 统 宏 定 义  *
 0000           ; ********************/
 0000           ; #pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   常 数 宏 定 义  *
 0000           ; *------------------*/
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   动 作 宏 定 义  *
 0000           ; *------------------*/
 0000           ; #ifndef INSERT_TIMER0_OVF_ISR_CODE
 0000           ;     # define INSERT_TIMER0_OVF_ISR_CODE
 0000           ; #endif
 0000           ; 
 0000           ; /********************
 0000           ; *  模块结构体定义区 *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   函 数 声 明 区  *
 0000           ; ********************/
 0000           ; void Device_INIT(void);
 0000           ; 
 0000           ; /********************
 0000           ; *   模块函数声明区  *
 0000           ; ********************/
 0000           ; static void Port_INIT(void);
 0000           ; static void Timer0_INIT(void);
 0000           ; static void Timer1_INIT(void);
 0000           ; 
 0000           ; /********************
 0000           ; *   模块变量声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   全局变量声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /***********************************************************
 0000           ; *   函数说明:系统硬件初始化函数                           *
 0000           ; *   输入:    无                                           *
 0000           ; *   输出:    无                                           *
 0000           ; *   调用函数:Port_INIT()   Timer0_INIT()                  *
 0000           ; ***********************************************************/
 0000           ; void Device_INIT(void)
 0000           ; {
 0000                   .dbline 84
 0000           ;     Port_INIT();
 0000 06D0              rcall _Port_INIT
 0002                   .dbline 85
 0002           ;     Timer0_INIT();
 0002 12D0              rcall _Timer0_INIT
 0004                   .dbline 86
 0004           ;     Timer1_INIT();
 0004 20D0              rcall _Timer1_INIT
 0006                   .dbline 89
 0006           ;     //*在这里添加其他初始化函数*//
 0006           ; 
 0006           ;     TIMSK0 = BIT(TOIE0);                                    //启动定时器0溢出中断资源
 0006 81E0              ldi R24,1
 0008 80936E00          sts 110,R24
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbend
 000E                   .dbfunc s Port_INIT _Port_INIT fV
                        .even
 000E           _Port_INIT:
 000E                   .dbline -1
 000E                   .dbline 100
 000E           ;     //*在这里添加其他全局寄存器的初始化代码*//
 000E           ; }
 000E           ; 
 000E           ; /***********************************************************
 000E           ; *   函数说明:系统端口初始化函数                           *
 000E           ; *   输入:    无                                           *
 000E           ; *   输出:    无                                           *
 000E           ; *   调用函数:无                                           *
 000E           ; ***********************************************************/
 000E           ; static void Port_INIT(void)
 000E           ; {
 000E                   .dbline 102
 000E           ;     //硬件PWM输出引脚
 000E           ;     DDR_PB1 = PDIR_OUT;_PB1 = HIGH;                         //OC1A输出PWM
 000E 84B1              in R24,0x4
 0010 8260              ori R24,2
 0012 84B9              out 0x4,R24
 0014                   .dbline 102
 0014 85B1              in R24,0x5
 0016 8260              ori R24,2
 0018 85B9              out 0x5,R24
 001A                   .dbline 105
 001A           ; 
 001A           ;     //工作指示灯
 001A           ;     DDR_PC5 = PDIR_OUT;_PC5 = LOW;
 001A 87B1              in R24,0x7
 001C 8062              ori R24,32
 001E 87B9              out 0x7,R24
 0020                   .dbline 105
 0020 88B1              in R24,0x8
 0022 8F7D              andi R24,223
 0024 88B9              out 0x8,R24
 0026                   .dbline -2
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbend
 0028                   .dbfunc s Timer0_INIT _Timer0_INIT fV
                        .even
 0028           _Timer0_INIT:
 0028                   .dbline -1
 0028                   .dbline 115
 0028           ; }
 0028           ; 
 0028           ; /***********************************************************
 0028           ; *   函数声明:定时器0初始化函数                            *
 0028           ; *   输入:    无                                           *
 0028           ; *   输出:    无                                           *
 0028           ; *   调用函数:无                                           *
 0028           ; ***********************************************************/
 0028           ; static void Timer0_INIT(void)
 0028           ; {
 0028                   .dbline 116
 0028           ;     TCCR0B = 0x00;          //1kHz定时中断
 0028 2224              clr R2
 002A 25BC              out 0x25,R2
 002C                   .dbline 117
 002C           ;     TCNT0 = 0x83;
 002C 83E8              ldi R24,131
 002E 86BD              out 0x26,R24
 0030                   .dbline 118
 0030           ;     TCCR0A = 0x00;
 0030 24BC              out 0x24,R2
 0032                   .dbline 119
 0032           ;     TCCR0B = 0x02;
 0032 82E0              ldi R24,2
 0034 85BD              out 0x25,R24
 0036                   .dbline -2
 0036           L3:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbend
 0038                   .dbfunc e Timer0_OVF_ISR _Timer0_OVF_ISR fV
                        .even
 0038           _Timer0_OVF_ISR::
 0038 00D0              rcall push_lset
 003A                   .dbline -1
 003A                   .dbline 129
 003A           ; }
 003A           ; 
 003A           ; /***********************************************************
 003A           ; *   函数声明:定时器0溢出中断处理程序                      *
 003A           ; *   输入:    无                                           *
 003A           ; *   输出:    无                                           *
 003A           ; *   调用函数:INSERT_TIMER0_OVF_ISR_CODE                   *
 003A           ; ***********************************************************/
 003A           ; void Timer0_OVF_ISR(void)
 003A           ; {
 003A                   .dbline 130
 003A           ;     TCNT0 = 0x83;
 003A 83E8              ldi R24,131
 003C 86BD              out 0x26,R24
 003E                   .dbline 131
 003E           ;     INSERT_TIMER0_OVF_ISR_CODE
 003E 7894              sei
 0040                   .dbline 131
 0040 00D0              rcall _Insert_Timer0_OVF_ISR_Code
 0042                   .dbline -2
 0042           L4:
 0042 00D0              rcall pop_lset
 0044                   .dbline 0 ; func end
 0044 1895              reti
 0046                   .dbend
 0046                   .dbfunc s Timer1_INIT _Timer1_INIT fV
                        .even
 0046           _Timer1_INIT:
 0046                   .dbline -1
 0046                   .dbline 141
 0046           ; }
 0046           ; 
 0046           ; /***********************************************************
 0046           ; *   函数声明:定时器1初始化函数                            *
 0046           ; *   输入:    无                                           *
 0046           ; *   输出:    无                                           *
 0046           ; *   调用函数:无                                           *
 0046           ; ***********************************************************/
 0046           ; static void Timer1_INIT(void)
 0046           ; {
 0046                   .dbline 143
 0046           ;     //*在这里粘贴从代码生成向导中生成的初始化代码*//
 0046           ;     TCCR1B = 0x00;                    //停止定时器
 0046 2224              clr R2
 0048 20928100          sts 129,R2
 004C                   .dbline 145
 004C           ; 
 004C           ;     ICR1H  = 0x27;                    //设定PWM波周期为20mS
 004C 87E2              ldi R24,39
 004E 80938700          sts 135,R24
 0052                   .dbline 146
 0052           ;     ICR1L  = 0x10;
 0052 80E1              ldi R24,16
 0054 80938600          sts 134,R24
 0058                   .dbline 148
 0058           ; 
 0058           ;     TCCR1A = 0x80;          //OC1A引脚在向上计数匹配时置低,在向下计数匹配时置高
 0058 80E8              ldi R24,128
 005A 80938000          sts 128,R24
 005E                   .dbline 149
 005E           ;     TCCR1C = 0x00;          //不使用强制匹配
 005E 20928200          sts 130,R2
 0062                   .dbline 150
 0062           ;     TCCR1B = 0x11;          //启动定时器1,时钟不分频
 0062 81E1              ldi R24,17
 0064 80938100          sts 129,R24
 0068                   .dbline -2
 0068           L5:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbend

⌨️ 快捷键说明

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