📄 hd_support.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 + -