📄 ex_support.lis
字号:
.module EX_Support.c
.area text(rom, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例11_渐明渐暗的灯\渐明渐暗的灯\EX_Support.c
0000 .dbfunc s Driver_INIT _Driver_INIT fV
.even
0000 _Driver_INIT:
0000 .dbline -1
0000 .dbline 87
0000 ; /***********************************************************
0000 ; * 函数库说明:底层硬件初始化驱动函数库 *
0000 ; * 版本: *
0000 ; * 作者: *
0000 ; * 创建日期: *
0000 ; * -------------------------------------------------------- *
0000 ; * [硬件说明] *
0000 ; * 处理器: *
0000 ; * 系统时钟: *
0000 ; * -------------------------------------------------------- *
0000 ; * [支 持 库] *
0000 ; * 支持库名称:HD_Support.h *
0000 ; * 需要版本: ----- *
0000 ; * 支持库说明:底层硬件初始化声明库 *
0000 ; * *
0000 ; * 支持库名称:EX_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 ; # include "EX_Support.h"
0000 ;
0000 ;
0000 ; /********************
0000 ; * 系 统 宏 定 义 *
0000 ; ********************/
0000 ;
0000 ; /*------------------*
0000 ; * 常 数 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /*------------------*
0000 ; * 动 作 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /********************
0000 ; * 模块结构体定义区 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 函 数 声 明 区 *
0000 ; ********************/
0000 ; void System_INIT(void);
0000 ; void Delay_MS(uint16 wTime);
0000 ; void Insert_Timer0_OVF_ISR_Code(void);
0000 ;
0000 ; /********************
0000 ; * 模块函数声明区 *
0000 ; ********************/
0000 ; static void Driver_INIT(void);
0000 ;
0000 ; /********************
0000 ; * 模块变量声明区 *
0000 ; ********************/
0000 ; //static uint16 s_wSystemDelayTimerCounter = 0;
0000 ;
0000 ; /********************
0000 ; * 全局变量声明区 *
0000 ; ********************/
0000 ; //uint16 g_wSystemTimer = 0;
0000 ;
0000 ; /***********************************************************
0000 ; * 函数说明:软件驱动初始化函数 *
0000 ; * 输入: 无 *
0000 ; * 输出: 无 *
0000 ; * 调用函数:无 *
0000 ; ***********************************************************/
0000 ; static void Driver_INIT(void)
0000 ; {
0000 .dbline -2
0000 L1:
0000 .dbline 0 ; func end
0000 0895 ret
0002 .dbend
0002 .dbfunc e System_INIT _System_INIT fV
.even
0002 _System_INIT::
0002 .dbline -1
0002 .dbline 98
0002 ; //*在这里插入你的各类软件驱动初始化代码*//
0002 ; }
0002 ;
0002 ; /***********************************************************
0002 ; * 函数说明:系统初始化函数 *
0002 ; * 输入: 无 *
0002 ; * 输出: 无 *
0002 ; * 调用函数:Device_INIT() Driver_INIT() *
0002 ; ***********************************************************/
0002 ; void System_INIT(void)
0002 ; {
0002 .dbline 99
0002 ; CLI();
0002 F894 cli
0004 .dbline 101
0004 ;
0004 ; Device_INIT();
0004 00D0 rcall _Device_INIT
0006 .dbline 102
0006 ; Driver_INIT();
0006 FCDF rcall _Driver_INIT
0008 .dbline 106
0008 ;
0008 ; //*在这里插入你的系统环境变量初始化代码*//
0008 ;
0008 ; SEI();
0008 7894 sei
000A .dbline -2
000A L2:
000A .dbline 0 ; func end
000A 0895 ret
000C .dbend
000C .dbfunc e Insert_Timer1_OVF_ISR_Code _Insert_Timer1_OVF_ISR_Code fV
.even
000C _Insert_Timer1_OVF_ISR_Code::
000C .dbline -1
000C .dbline 146
000C ; }
000C ;
000C ; ///***********************************************************
000C ; //* 函数说明:系统毫秒延时函数 *
000C ; //* 输入: 需要延时的时间长度 *
000C ; //* 输出: 无 *
000C ; //* 调用函数:无 *
000C ; //***********************************************************/
000C ; //void Delay_MS(uint16 wTime)
000C ; //{
000C ; // s_wSystemDelayTimerCounter = wTime;
000C ; //
000C ; // while(s_wSystemDelayTimerCounter);
000C ; //}
000C ; //
000C ; ///***********************************************************
000C ; //* 函数说明:定时器0中断处理程序代码插入函数 *
000C ; //* 输入: 无 *
000C ; //* 输出: 无 *
000C ; //* 调用函数:无 *
000C ; //***********************************************************/
000C ; //void Insert_Timer0_OVF_ISR_Code (void)
000C ; //{
000C ; // g_wSystemTimer++;
000C ; //
000C ; // if (s_wSystemDelayTimerCounter)
000C ; // {
000C ; // s_wSystemDelayTimerCounter--;
000C ; // }
000C ; //}
000C ;
000C ; /***********************************************************
000C ; * 函数说明:定时器1中断处理程序代码插入函数 *
000C ; * 输入: 无 *
000C ; * 输出: 无 *
000C ; * 调用函数:无 *
000C ; ***********************************************************/
000C ;
000C ; void Insert_Timer1_OVF_ISR_Code (void)
000C ; {
000C .dbline 147
000C ; TCNT1 = 0xFF3D; //重新加载定时器1
000C 8DE3 ldi R24,65341
000E 9FEF ldi R25,255
0010 90938500 sts 132+1,R25
0014 80938400 sts 132,R24
0018 .dbline 148
0018 ; PORTC ^= 0b00100000; //PC5端口发光管闪烁
0018 80E2 ldi R24,32
001A 28B0 in R2,0x8
001C 2826 eor R2,R24
001E 28B8 out 0x8,R2
0020 .dbline 149
0020 ; switch (direction) //调整PWM波占空比,以改变亮度
0020 00910000 lds R16,_direction
0024 1127 clr R17
0026 0030 cpi R16,0
0028 0107 cpc R16,R17
002A 29F0 breq L7
002C X0:
002C 0130 cpi R16,1
002E E0E0 ldi R30,0
0030 1E07 cpc R17,R30
0032 89F0 breq L10
0034 1CC0 rjmp L4
0036 X1:
0036 .dbline 150
0036 ; {
0036 L7:
0036 .dbline 152
0036 ; case L_dw : //亮度变化趋势控制标志为增强方向时的处理
0036 ; {
0036 .dbline 153
0036 ; light += 0x02;
0036 80910000 lds R24,_light
003A 8E5F subi R24,254 ; addi 2
003C 80930000 sts _light,R24
0040 .dbline 154
0040 ; if (light > 0x83) //如果亮度达到最小,则保持该亮度,并且换亮度变化趋势控制标志为增强方向
0040 83E8 ldi R24,131
0042 20900000 lds R2,_light
0046 8215 cp R24,R2
0048 90F4 brsh L5
004A .dbline 155
004A ; {
004A .dbline 156
004A ; light = 0x83;
004A 80930000 sts _light,R24
004E .dbline 157
004E ; direction = L_up;
004E 81E0 ldi R24,1
0050 80930000 sts _direction,R24
0054 .dbline 158
0054 ; }
0054 .dbline 159
0054 ; break;
0054 0CC0 rjmp L5
0056 L10:
0056 .dbline 163
0056 ; }
0056 ;
0056 ; case L_up : //亮度变化趋势控制标志为减弱方向时的处理
0056 ; {
0056 .dbline 164
0056 ; light -=0x02;
0056 80910000 lds R24,_light
005A 8250 subi R24,2
005C 80930000 sts _light,R24
0060 .dbline 165
0060 ; if (light < 0x03) //如果亮度达到最大,则保持该亮度,并且换亮度变化趋势控制标志为减弱方向
0060 8330 cpi R24,3
0062 28F4 brsh L5
0064 .dbline 166
0064 ; {
0064 .dbline 167
0064 ; light = 0x00;
0064 2224 clr R2
0066 20920000 sts _light,R2
006A .dbline 168
006A ; direction = L_dw;
006A 20920000 sts _direction,R2
006E .dbline 169
006E ; }
006E .dbline 170
006E ; break;
006E L4:
006E L5:
006E .dbline 173
006E ; }
006E ; }
006E ; OCR0B = light;
006E 20900000 lds R2,_light
0072 28BC out 0x28,R2
0074 .dbline -2
0074 L3:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -