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

📄 渐明渐暗的灯.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
(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 + -