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

📄 热水器控制.lst

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