📄 热水器控制.lst
字号:
(0080) * 输入: 无 *
(0081) * 输出: 无 *
(0082) * 调用函数:无 *
(0083) ***********************************************************/
(0084) static void Driver_INIT(void)
(0085) {
(0086) //*在这里插入你的各类软件驱动初始化代码*//
(0087) DoFLASH = FALSE;
_Driver_INIT:
005F 2422 CLR R2
0060 92200102 STS DoFLASH,R2
0062 9508 RET
(0088) }
(0089)
(0090) /***********************************************************
(0091) * 函数说明:系统初始化函数 *
(0092) * 输入: 无 *
(0093) * 输出: 无 *
(0094) * 调用函数:Device_INIT() Driver_INIT() *
(0095) ***********************************************************/
(0096) void System_INIT(void)
(0097) {
(0098) CLI();
_System_INIT:
0063 94F8 BCLR 7
(0099)
(0100) Device_INIT();
0064 DFD6 RCALL _Device_INIT
(0101) Driver_INIT();
0065 DFF9 RCALL _Driver_INIT
(0102)
(0103) //*在这里插入你的系统环境变量初始化代码*//
(0104)
(0105) SEI();
0066 9478 BSET 7
0067 9508 RET
(0106) }
(0107)
(0108) /***********************************************************
(0109) * 函数说明:定时器1中断处理程序代码插入函数 *
(0110) * 输入: 无 *
(0111) * 输出: 无 *
(0112) * 调用函数:无 *
(0113) ***********************************************************/
(0114)
(0115) void Insert_Timer1_OVF_ISR_Code (void)
(0116) {
(0117) TCNT1H = 0xCF; //重新加载定时器高位
_Insert_Timer1_OVF_ISR_Code:
0068 EC8F LDI R24,0xCF
0069 93800085 STS 0x85,R24
(0118) TCNT1L = 0x2C; //重新加载定时器低位
006B E28C LDI R24,0x2C
006C 93800084 STS 0x84,R24
(0119)
(0120) DoFLASH = TRUE; //设置闪烁执行标志
006E E081 LDI R24,1
006F 93800102 STS DoFLASH,R24
(0121)
(0122) TimeStamp++;
0071 91800100 LDS R24,TimeStamp
0073 91900101 LDS R25,TimeStamp+1
0075 9601 ADIW R24,1
0076 93900101 STS TimeStamp+1,R25
0078 93800100 STS TimeStamp,R24
(0123) if (TimeStamp>Time_Stamp_MAX)
007A E08A LDI R24,0xA
007B E090 LDI R25,0
007C 90200100 LDS R2,TimeStamp
007E 90300101 LDS R3,TimeStamp+1
0080 1582 CP R24,R2
0081 0593 CPC R25,R3
0082 F430 BCC 0x0089
(0124) TimeStamp = 0; //若时标达到设定的最大值,则清0
0083 2422 CLR R2
0084 2433 CLR R3
0085 92300101 STS TimeStamp+1,R3
0087 92200100 STS TimeStamp,R2
0089 9508 RET
_LED_ON:
LEDNum --> R20
008A D09C RCALL push_gset1
008B 2F40 MOV R20,R16
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例12_复杂闪烁控制\实例12_复杂闪烁控制_热水器控制\RD_LED_FLASH.h
(0001) /***********************************************************
(0002) * 函数库说明:指示灯闪烁控制声明库 *
(0003) * 版本: V1.0 *
(0004) * 作者: 江海波 *
(0005) * 创建日期: 07-7-5 *
(0006) * -------------------------------------------------------- *
(0007) * [硬件说明] *
(0008) * 处理器: M48 *
(0009) * 系统时钟: 1MHz *
(0010) * -------------------------------------------------------- *
(0011) * [支 持 库] *
(0012) * 支持库名称: *
(0013) * 需要版本: *
(0014) * 支持库说明: *
(0015) * *
(0016) * 支持库名称: *
(0017) * 需要版本: *
(0018) * 支持库说明: *
(0019) * -------------------------------------------------------- *
(0020) * [版本更新] *
(0021) * 修改: *
(0022) * 修改日期: *
(0023) * 版本: *
(0024) * -------------------------------------------------------- *
(0025) * [版本历史] *
(0026) * -------------------------------------------------------- *
(0027) * [使用说明] *
(0028) ***********************************************************/
(0029)
(0030) /********************
(0031) * 头 文 件 配 置 区 *
(0032) ********************/
(0033) # include "PF_Config.h"
(0034)
(0035) /********************
(0036) * 系 统 宏 定 义 *
(0037) ********************/
(0038)
(0039) /*------------------*
(0040) * 常 数 宏 定 义 *
(0041) *------------------*/
(0042)
(0043) /*------------------*
(0044) * 动 作 宏 定 义 *
(0045) *------------------*/
(0046)
(0047) #define LED_PORT PORTC //定义指示灯所在的端口
(0048)
(0049) /********************
(0050) * 模块结构体定义区 *
(0051) ********************/
(0052)
(0053) /********************
(0054) * 模块函数声明区 *
(0055) ********************/
(0056)
(0057) /********************
(0058) * 模块变量声明区 *
(0059) ********************/
(0060)
(0061) /***********************************************************
(0062) * 函数说明:LED亮灭控制函数 *
(0063) * 输入: 无 *
(0064) * 输出: 无 *
(0065) * 调用函数:无 *
(0066) ***********************************************************/
(0067)
(0068) void LED_ON (unsigned char LEDNum)
(0069) {
(0070) LED_PORT &= ~(1<<(LEDNum+1));
008C 2F14 MOV R17,R20
008D 5F1F SUBI R17,0xFF
008E E001 LDI R16,1
008F D0DC RCALL lsl8
0090 2E20 MOV R2,R16
0091 9420 COM R2
0092 B038 IN R3,0x08
0093 2032 AND R3,R2
0094 B838 OUT 0x08,R3
0095 D094 RCALL pop_gset1
0096 9508 RET
_LED_OFF:
LEDNum --> R20
0097 D08F RCALL push_gset1
0098 2F40 MOV R20,R16
(0071) }
(0072)
(0073) void LED_OFF (unsigned char LEDNum)
(0074) {
(0075) LED_PORT |= (1<<(LEDNum+1));
0099 2F14 MOV R17,R20
009A 5F1F SUBI R17,0xFF
009B E001 LDI R16,1
009C D0CF RCALL lsl8
009D B028 IN R2,0x08
009E 2A20 OR R2,R16
009F B828 OUT 0x08,R2
00A0 D089 RCALL pop_gset1
00A1 9508 RET
_StatuOFF:
LEDNum --> R20
00A2 D084 RCALL push_gset1
00A3 2F40 MOV R20,R16
(0076) }
(0077)
(0078) /***********************************************************
(0079) * 函数说明:"熄灭"方式控制函数 *
(0080) * 输入: 无 *
(0081) * 输出: 无 *
(0082) * 调用函数:无 *
(0083) ***********************************************************/
(0084)
(0085) void StatuOFF (unsigned char LEDNum)
(0086) {
(0087) LED_OFF(LEDNum);
00A4 2F04 MOV R16,R20
00A5 DFF1 RCALL _LED_OFF
00A6 D083 RCALL pop_gset1
00A7 9508 RET
_StatuHeat:
LEDNum --> R20
00A8 D07E RCALL push_gset1
00A9 2F40 MOV R20,R16
(0088) }
(0089)
(0090) /***********************************************************
(0091) * 函数说明:"加热"方式控制函数 *
(0092) * 输入: 无 *
(0093) * 输出: 无 *
(0094) * 调用函数:无 *
(0095) ***********************************************************/
(0096)
(0097) void StatuHeat (unsigned char LEDNum)
(0098) {
(0099) LED_ON(LEDNum);
00AA 2F04 MOV R16,R20
00AB DFDE RCALL _LED_ON
00AC D07D RCALL pop_gset1
00AD 9508 RET
_StatuOK:
LEDNum --> R20
00AE D078 RCALL push_gset1
00AF 2F40 MOV R20,R16
(0100) }
(0101)
(0102) /***********************************************************
(0103) * 函数说明:"加热完成"方式控制函数 *
(0104) * 输入: 无 *
(0105) * 输出: 无 *
(0106) * 调用函数:无 *
(0107) ***********************************************************/
(0108)
(0109) void StatuOK (unsigned char LEDNum)
(0110) {
(0111) switch (TimeStamp)
00B0 90200100 LDS R2,TimeStamp
00B2 90300101 LDS R3,TimeStamp+1
00B4 2022 TST R2
00B5 F411 BNE 0x00B8
00B6 2033 TST R3
00B7 F049 BEQ 0x00C1
00B8 91800100 LDS R24,TimeStamp
00BA 91900101 LDS R25,TimeStamp+1
00BC 3081 CPI R24,1
00BD E0E0 LDI R30,0
00BE 079E CPC R25,R30
00BF F021 BEQ 0x00C4
00C0 C005 RJMP 0x00C6
(0112) {
(0113) case 0 :
(0114) {
(0115) LED_ON(LEDNum);
00C1 2F04 MOV R16,R20
00C2 DFC7 RCALL _LED_ON
(0116) break;
00C3 C002 RJMP 0x00C6
(0117) }
(0118)
(0119) case 1 :
(0120) {
(0121) LED_OFF(LEDNum);
00C4 2F04 MOV R16,R20
00C5 DFD1 RCALL _LED_OFF
(0122) break;
00C6 D063 RCALL pop_gset1
00C7 9508 RET
_StatuLW:
LEDNum --> R20
00C8 D05E RCALL push_gset1
00C9 2F40 MOV R20,R16
(0123) }
(0124) }
(0125) }
(0126)
(0127) /***********************************************************
(0128) * 函数说明:"缺水"方式控制函数 *
(0129) * 输入: 无 *
(0130) * 输出: 无 *
(0131) * 调用函数:无 *
(0132) ***********************************************************/
(0133)
(0134) void StatuLW (unsigned char LEDNum)
(0135) {
(0136) if (TimeStamp&0x01)
00CA 90200100 LDS R2,TimeStamp
00CC 90300101 LDS R3,TimeStamp+1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -