📄 热水器控制.lst
字号:
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 + -