📄 渐明渐暗的灯.lst
字号:
(0039) # include "EX_Support.h"
(0040)
(0041)
(0042) /********************
(0043) * 系 统 宏 定 义 *
(0044) ********************/
(0045)
(0046) /*------------------*
(0047) * 常 数 宏 定 义 *
(0048) *------------------*/
(0049)
(0050) /*------------------*
(0051) * 动 作 宏 定 义 *
(0052) *------------------*/
(0053)
(0054) /********************
(0055) * 模块结构体定义区 *
(0056) ********************/
(0057)
(0058) /********************
(0059) * 函 数 声 明 区 *
(0060) ********************/
(0061) void System_INIT(void);
(0062) void Delay_MS(uint16 wTime);
(0063) void Insert_Timer0_OVF_ISR_Code(void);
(0064)
(0065) /********************
(0066) * 模块函数声明区 *
(0067) ********************/
(0068) static void Driver_INIT(void);
(0069)
(0070) /********************
(0071) * 模块变量声明区 *
(0072) ********************/
(0073) //static uint16 s_wSystemDelayTimerCounter = 0;
(0074)
(0075) /********************
(0076) * 全局变量声明区 *
(0077) ********************/
(0078) //uint16 g_wSystemTimer = 0;
(0079)
(0080) /***********************************************************
(0081) * 函数说明:软件驱动初始化函数 *
(0082) * 输入: 无 *
(0083) * 输出: 无 *
(0084) * 调用函数:无 *
(0085) ***********************************************************/
(0086) static void Driver_INIT(void)
(0087) {
_Driver_INIT:
006C 9508 RET
(0088) //*在这里插入你的各类软件驱动初始化代码*//
(0089) }
(0090)
(0091) /***********************************************************
(0092) * 函数说明:系统初始化函数 *
(0093) * 输入: 无 *
(0094) * 输出: 无 *
(0095) * 调用函数:Device_INIT() Driver_INIT() *
(0096) ***********************************************************/
(0097) void System_INIT(void)
(0098) {
(0099) CLI();
_System_INIT:
006D 94F8 BCLR 7
(0100)
(0101) Device_INIT();
006E DFCC RCALL _Device_INIT
(0102) Driver_INIT();
006F DFFC RCALL _Driver_INIT
(0103)
(0104) //*在这里插入你的系统环境变量初始化代码*//
(0105)
(0106) SEI();
0070 9478 BSET 7
0071 9508 RET
(0107) }
(0108)
(0109) ///***********************************************************
(0110) //* 函数说明:系统毫秒延时函数 *
(0111) //* 输入: 需要延时的时间长度 *
(0112) //* 输出: 无 *
(0113) //* 调用函数:无 *
(0114) //***********************************************************/
(0115) //void Delay_MS(uint16 wTime)
(0116) //{
(0117) // s_wSystemDelayTimerCounter = wTime;
(0118) //
(0119) // while(s_wSystemDelayTimerCounter);
(0120) //}
(0121) //
(0122) ///***********************************************************
(0123) //* 函数说明:定时器0中断处理程序代码插入函数 *
(0124) //* 输入: 无 *
(0125) //* 输出: 无 *
(0126) //* 调用函数:无 *
(0127) //***********************************************************/
(0128) //void Insert_Timer0_OVF_ISR_Code (void)
(0129) //{
(0130) // g_wSystemTimer++;
(0131) //
(0132) // if (s_wSystemDelayTimerCounter)
(0133) // {
(0134) // s_wSystemDelayTimerCounter--;
(0135) // }
(0136) //}
(0137)
(0138) /***********************************************************
(0139) * 函数说明:定时器1中断处理程序代码插入函数 *
(0140) * 输入: 无 *
(0141) * 输出: 无 *
(0142) * 调用函数:无 *
(0143) ***********************************************************/
(0144)
(0145) void Insert_Timer1_OVF_ISR_Code (void)
(0146) {
(0147) TCNT1 = 0xFF3D; //重新加载定时器1
_Insert_Timer1_OVF_ISR_Code:
0072 E38D LDI R24,0x3D
0073 EF9F LDI R25,0xFF
0074 93900085 STS 0x85,R25
0076 93800084 STS 0x84,R24
(0148) PORTC ^= 0b00100000; //PC5端口发光管闪烁
0078 E280 LDI R24,0x20
0079 B028 IN R2,0x08
007A 2628 EOR R2,R24
007B B828 OUT 0x08,R2
(0149) switch (direction) //调整PWM波占空比,以改变亮度
007C 91000101 LDS R16,direction
007E 2711 CLR R17
007F 3000 CPI R16,0
0080 0701 CPC R16,R17
0081 F029 BEQ 0x0087
0082 3001 CPI R16,1
0083 E0E0 LDI R30,0
0084 071E CPC R17,R30
0085 F089 BEQ 0x0097
0086 C01C RJMP 0x00A3
(0150) {
(0151) case L_dw : //亮度变化趋势控制标志为增强方向时的处理
(0152) {
(0153) light += 0x02;
0087 91800100 LDS R24,light
0089 5F8E SUBI R24,0xFE
008A 93800100 STS light,R24
(0154) if (light > 0x83) //如果亮度达到最小,则保持该亮度,并且换亮度变化趋势控制标志为增强方向
008C E883 LDI R24,0x83
008D 90200100 LDS R2,light
008F 1582 CP R24,R2
0090 F490 BCC 0x00A3
(0155) {
(0156) light = 0x83;
0091 93800100 STS light,R24
(0157) direction = L_up;
0093 E081 LDI R24,1
0094 93800101 STS direction,R24
(0158) }
(0159) break;
0096 C00C RJMP 0x00A3
(0160) }
(0161)
(0162) case L_up : //亮度变化趋势控制标志为减弱方向时的处理
(0163) {
(0164) light -=0x02;
0097 91800100 LDS R24,light
0099 5082 SUBI R24,2
009A 93800100 STS light,R24
(0165) if (light < 0x03) //如果亮度达到最大,则保持该亮度,并且换亮度变化趋势控制标志为减弱方向
009C 3083 CPI R24,3
009D F428 BCC 0x00A3
(0166) {
(0167) light = 0x00;
009E 2422 CLR R2
009F 92200100 STS light,R2
(0168) direction = L_dw;
00A1 92200101 STS direction,R2
(0169) }
(0170) break;
(0171) }
(0172) }
(0173) OCR0B = light;
00A3 90200100 LDS R2,light
00A5 BC28 OUT 0x28,R2
00A6 9508 RET
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例11_渐明渐暗的灯\渐明渐暗的灯\System.c
(0001) /***********************************************************
(0002) * 源程序说明: *
(0003) * 版本: *
(0004) * 作者: *
(0005) * 创建日期: *
(0006) * -------------------------------------------------------- *
(0007) * [支 持 库] *
(0008) * 支持库名称:PF_Config.h *
(0009) * 需要版本: ----- *
(0010) * 支持库说明:硬件平台配置声明库 *
(0011) * -------------------------------------------------------- *
(0012) * [版本更新] *
(0013) * 修改: *
(0014) * 修改日期: *
(0015) * 版本: *
(0016) * -------------------------------------------------------- *
(0017) * [版本历史] *
(0018) * -------------------------------------------------------- *
(0019) * [使用说明] *
(0020) ***********************************************************/
(0021)
(0022) /********************
(0023) * 头 文 件 配 置 区 *
(0024) ********************/
(0025) # include "PF_Config.h"
(0026)
(0027) /********************
(0028) * 系 统 宏 定 义 *
(0029) ********************/
(0030)
(0031) /*------------------*
(0032) * 常 数 宏 定 义 *
(0033) *------------------*/
(0034)
(0035) /*------------------*
(0036) * 动 作 宏 定 义 *
(0037) *------------------*/
(0038)
(0039) /********************
(0040) * 模块结构体定义区 *
(0041) ********************/
(0042)
(0043) /********************
(0044) * 模块函数声明区 *
(0045) ********************/
(0046)
(0047) /********************
(0048) * 模块变量声明区 *
(0049) ********************/
(0050)
(0051) /***********************************************************
(0052) * 函数说明:主函数 *
(0053) * 输入: 无 *
(0054) * 输出: 无 *
(0055) * 调用函数:System_INIT() *
(0056) ***********************************************************/
(0057) void main(void)
(0058) {
(0059) System_INIT(); //代码初始化
_main:
00A7 DFC5 RCALL _System_INIT
(0060)
(0061) while(TRUE); //超级循环
FILE: <library>
00A8 CFFF RJMP 0x00A8
00A9 9508 RET
push_lset:
00AA 93FA ST R31,-Y
00AB 93EA ST R30,-Y
00AC 93BA ST R27,-Y
00AD 93AA ST R26,-Y
00AE 939A ST R25,-Y
00AF 938A ST R24,-Y
00B0 933A ST R19,-Y
00B1 932A ST R18,-Y
00B2 931A ST R17,-Y
00B3 930A ST R16,-Y
00B4 929A ST R9,-Y
00B5 928A ST R8,-Y
00B6 927A ST R7,-Y
00B7 926A ST R6,-Y
00B8 925A ST R5,-Y
00B9 924A ST R4,-Y
00BA 923A ST R3,-Y
00BB 922A ST R2,-Y
00BC 921A ST R1,-Y
00BD 920A ST R0,-Y
00BE B60F IN R0,0x3F
00BF 920A ST R0,-Y
00C0 9508 RET
pop_lset:
00C1 9009 LD R0,Y+
00C2 BE0F OUT 0x3F,R0
00C3 9009 LD R0,Y+
00C4 9019 LD R1,Y+
00C5 9029 LD R2,Y+
00C6 9039 LD R3,Y+
00C7 9049 LD R4,Y+
00C8 9059 LD R5,Y+
00C9 9069 LD R6,Y+
00CA 9079 LD R7,Y+
00CB 9089 LD R8,Y+
00CC 9099 LD R9,Y+
00CD 9109 LD R16,Y+
00CE 9119 LD R17,Y+
00CF 9129 LD R18,Y+
00D0 9139 LD R19,Y+
00D1 9189 LD R24,Y+
00D2 9199 LD R25,Y+
00D3 91A9 LD R26,Y+
00D4 91B9 LD R27,Y+
00D5 91E9 LD R30,Y+
00D6 91F9 LD R31,Y+
00D7 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -