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

📄 热水器控制.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    00CE FE20      SBRS	R2,0
    00CF C003      RJMP	0x00D3
(0137)         LED_ON(LEDNum);
    00D0 2F04      MOV	R16,R20
    00D1 DFB8      RCALL	_LED_ON
    00D2 C002      RJMP	0x00D5
(0138)     else
(0139)         LED_OFF(LEDNum);
    00D3 2F04      MOV	R16,R20
    00D4 DFC2      RCALL	_LED_OFF
    00D5 D054      RCALL	pop_gset1
    00D6 9508      RET
_LED_Flash:
  i                    --> R22
    00D7 D04D      RCALL	push_gset2
(0140) }
(0141) 
(0142) /***********************************************************
(0143) *   函数说明:闪烁控制函数                                 *
(0144) *   输入:    无                                           *
(0145) *   输出:    无                                           *
(0146) *   调用函数:无                                           *
(0147) ***********************************************************/
(0148) 
(0149) void LED_Flash (void)
(0150) {
(0151) 
(0152)     unsigned char i;
(0153)     
(0154)     for (i=0; i<LED_Num; i++)           //检测从0到LED_Num-1号热水器状态标志
    00D8 2766      CLR	R22
    00D9 C024      RJMP	0x00FE
(0155)     {
(0156)         switch (FlashStatu[i])
    00DA E083      LDI	R24,3
    00DB E091      LDI	R25,1
    00DC 2FE6      MOV	R30,R22
    00DD 27FF      CLR	R31
    00DE 0FE8      ADD	R30,R24
    00DF 1FF9      ADC	R31,R25
    00E0 8140      LDD	R20,Z+0
    00E1 2755      CLR	R21
    00E2 3040      CPI	R20,0
    00E3 0745      CPC	R20,R21
    00E4 F069      BEQ	0x00F2
    00E5 3041      CPI	R20,1
    00E6 E0E0      LDI	R30,0
    00E7 075E      CPC	R21,R30
    00E8 F061      BEQ	0x00F5
    00E9 3042      CPI	R20,2
    00EA E0E0      LDI	R30,0
    00EB 075E      CPC	R21,R30
    00EC F059      BEQ	0x00F8
    00ED 3043      CPI	R20,3
    00EE E0E0      LDI	R30,0
    00EF 075E      CPC	R21,R30
    00F0 F051      BEQ	0x00FB
    00F1 C00B      RJMP	0x00FD
(0157)         {
(0158)             case Power_OFF :
(0159)             {
(0160)                 StatuOFF(i);
    00F2 2F06      MOV	R16,R22
    00F3 DFAE      RCALL	_StatuOFF
(0161)                 break;
    00F4 C008      RJMP	0x00FD
(0162)             }
(0163) 
(0164)             case Heat :
(0165)             {
(0166)                 StatuHeat(i);
    00F5 2F06      MOV	R16,R22
    00F6 DFB1      RCALL	_StatuHeat
(0167)                 break;
    00F7 C005      RJMP	0x00FD
(0168)             }
(0169)             
(0170)             case Heat_OK :
(0171)             {
(0172)                 StatuOK(i);
    00F8 2F06      MOV	R16,R22
    00F9 DFB4      RCALL	_StatuOK
(0173)                 break;
    00FA C002      RJMP	0x00FD
(0174)             }
(0175)             
(0176)             case LW :
(0177)             {
(0178)                 StatuLW(i);
    00FB 2F06      MOV	R16,R22
    00FC DFCB      RCALL	_StatuLW
    00FD 9563      INC	R22
    00FE 3065      CPI	R22,5
    00FF F2D0      BCS	0x00DA
    0100 D01C      RCALL	pop_gset2
    0101 9508      RET
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例12_复杂闪烁控制\实例12_复杂闪烁控制_热水器控制\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 "RD_LED_FLASH.h"
(0026) # include "PF_Config.h"
(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) *   输出:    无                                           *
(0056) *   调用函数:System_INIT()                                *
(0057) ***********************************************************/
(0058) void main(void)
(0059) {
(0060)     System_INIT();               //代码初始化
_main:
    0102 DF60      RCALL	_System_INIT
(0061)     
(0062)     FlashStatu[4] = Heat_OK;
    0103 E082      LDI	R24,2
    0104 93800107  STS	0x107,R24
(0063)     FlashStatu[3] = Heat;
    0106 E081      LDI	R24,1
    0107 93800106  STS	FlashStatu+3,R24
(0064)     FlashStatu[2] = Power_OFF;
    0109 2422      CLR	R2
    010A 92200105  STS	FlashStatu+2,R2
(0065)     FlashStatu[1] = LW;
    010C E083      LDI	R24,3
    010D 93800104  STS	FlashStatu+1,R24
(0066)     FlashStatu[0] = Heat;
    010F E081      LDI	R24,1
    0110 93800103  STS	FlashStatu,R24
    0112 C008      RJMP	0x011B
(0067) 
(0068)     while(TRUE)                  //超级循环
(0069)     {
(0070)         if (DoFLASH == TRUE)
    0113 91800102  LDS	R24,DoFLASH
    0115 3081      CPI	R24,1
    0116 F421      BNE	0x011B
(0071)         {
(0072)             LED_Flash();         //当闪烁执行标志为真时,调用闪烁控制函数
    0117 DFBF      RCALL	_LED_Flash
(0073)             DoFLASH = FALSE;
FILE: <library>
    0118 2422      CLR	R2
    0119 92200102  STS	DoFLASH,R2
    011B CFF7      RJMP	0x0113
    011C 9508      RET
pop_gset2:
    011D E0E2      LDI	R30,2
    011E C00C      RJMP	pop
push_gset5:
    011F 92FA      ST	R15,-Y
    0120 92EA      ST	R14,-Y
push_gset4:
    0121 92DA      ST	R13,-Y
    0122 92CA      ST	R12,-Y
push_gset3:
    0123 92BA      ST	R11,-Y
    0124 92AA      ST	R10,-Y
push_gset2:
    0125 937A      ST	R23,-Y
    0126 936A      ST	R22,-Y
push_gset1:
    0127 935A      ST	R21,-Y
    0128 934A      ST	R20,-Y
    0129 9508      RET
pop_gset1:
    012A E0E1      LDI	R30,1
pop:
    012B 9149      LD	R20,Y+
    012C 9159      LD	R21,Y+
    012D FDE0      SBRC	R30,0
    012E 9508      RET
    012F 9169      LD	R22,Y+
    0130 9179      LD	R23,Y+
    0131 FDE1      SBRC	R30,1
    0132 9508      RET
    0133 90A9      LD	R10,Y+
    0134 90B9      LD	R11,Y+
    0135 FDE2      SBRC	R30,2
    0136 9508      RET
    0137 90C9      LD	R12,Y+
    0138 90D9      LD	R13,Y+
    0139 FDE3      SBRC	R30,3
    013A 9508      RET
    013B 90E9      LD	R14,Y+
    013C 90F9      LD	R15,Y+
    013D 9508      RET
push_lset:
    013E 93FA      ST	R31,-Y
    013F 93EA      ST	R30,-Y
    0140 93BA      ST	R27,-Y
    0141 93AA      ST	R26,-Y
    0142 939A      ST	R25,-Y
    0143 938A      ST	R24,-Y
    0144 933A      ST	R19,-Y
    0145 932A      ST	R18,-Y
    0146 931A      ST	R17,-Y
    0147 930A      ST	R16,-Y
    0148 929A      ST	R9,-Y
    0149 928A      ST	R8,-Y
    014A 927A      ST	R7,-Y
    014B 926A      ST	R6,-Y
    014C 925A      ST	R5,-Y
    014D 924A      ST	R4,-Y
    014E 923A      ST	R3,-Y
    014F 922A      ST	R2,-Y
    0150 921A      ST	R1,-Y
    0151 920A      ST	R0,-Y
    0152 B60F      IN	R0,0x3F
    0153 920A      ST	R0,-Y
    0154 9508      RET
pop_lset:
    0155 9009      LD	R0,Y+
    0156 BE0F      OUT	0x3F,R0
    0157 9009      LD	R0,Y+
    0158 9019      LD	R1,Y+
    0159 9029      LD	R2,Y+
    015A 9039      LD	R3,Y+
    015B 9049      LD	R4,Y+
    015C 9059      LD	R5,Y+
    015D 9069      LD	R6,Y+
    015E 9079      LD	R7,Y+
    015F 9089      LD	R8,Y+
    0160 9099      LD	R9,Y+
    0161 9109      LD	R16,Y+
    0162 9119      LD	R17,Y+
    0163 9129      LD	R18,Y+
    0164 9139      LD	R19,Y+
    0165 9189      LD	R24,Y+
    0166 9199      LD	R25,Y+
    0167 91A9      LD	R26,Y+
    0168 91B9      LD	R27,Y+
    0169 91E9      LD	R30,Y+
    016A 91F9      LD	R31,Y+
    016B 9508      RET
lsl8:
    016C 2311      TST	R17
    016D F019      BEQ	0x0171
    016E 0F00      LSL	R16
    016F 951A      DEC	R17
    0170 CFFB      RJMP	lsl8
    0171 9508      RET

⌨️ 快捷键说明

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