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

📄 警报灯.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0119)     TCNT1L = 0x2C;              //重新加载定时器低位
    006B E28C      LDI	R24,0x2C
    006C 93800084  STS	0x84,R24
(0120) 
(0121)     DoFLASH = TRUE;             //设置闪烁执行标志
    006E E081      LDI	R24,1
    006F 93800102  STS	DoFLASH,R24
(0122) 
(0123)     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
(0124)     if (TimeStamp>Time_Stamp_MAX)
    007A E18E      LDI	R24,0x1E
    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
(0125)         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
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例12_复杂闪烁控制\实例12_复杂闪烁控制_警报灯\System.c
(0001) /*********************************************************/
(0002) /*                                                       */
(0003) /*          实例12   复杂闪烁控制 警报灯                 */
(0004) /*                                                       */
(0005) /*                 程序设计 江海波                       */
(0006) /*                                                       */
(0007) /*        编写时间 : 2007-05     版本 : V1.0             */
(0008) /*                                                       */
(0009) /*     提示 : 代码受版权保护,示例程序用于工程应谨慎      */
(0010) /*                                                       */
(0011) /*           E-mail : soundman@sohu.com                  */
(0012) /*-------------------------------------------------------*/
(0013) /* 硬件环境:                                             */
(0014) /*                                                       */
(0015) /*     实验电路板,ATmega48单片机,CPU时钟1MHz             */
(0016) /* ------------------------------------------------------*/
(0017) /* 软件环境:                                             */
(0018) /*                                                       */
(0019) /*     ICCAVR 6.31A                                      */
(0020) /* ------------------------------------------------------*/
(0021) /* 最后修改时间:                                         */
(0022) /*                                                       */
(0023) /*-------------------------------------------------------*/
(0024) /* 历史版本纪录:                                         */
(0025) /*                                                       */
(0026) /*********************************************************/
(0027) 
(0028) /********************
(0029) * 头 文 件 配 置 区 *
(0030) ********************/
(0031) # include "PF_Config.h"
(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) 
(0057) /***********************************************************
(0058) *   函数说明:LED闪烁控制函数                              *
(0059) *   输入:    无                                           *
(0060) *   输出:    无                                           *
(0061) *   调用函数:                                             *
(0062) ***********************************************************/
(0063) 
(0064) void LED_Flash (void)
(0065) {
(0066)     switch (TimeStamp)
_LED_Flash:
    008A 90200100  LDS	R2,TimeStamp
    008C 90300101  LDS	R3,TimeStamp+1
    008E 2022      TST	R2
    008F F411      BNE	0x0092
    0090 2033      TST	R3
    0091 F189      BEQ	0x00C3
    0092 91800100  LDS	R24,TimeStamp
    0094 91900101  LDS	R25,TimeStamp+1
    0096 3081      CPI	R24,1
    0097 E0E0      LDI	R30,0
    0098 079E      CPC	R25,R30
    0099 F169      BEQ	0x00C7
    009A 3082      CPI	R24,2
    009B E0E0      LDI	R30,0
    009C 079E      CPC	R25,R30
    009D F169      BEQ	0x00CB
    009E 3083      CPI	R24,3
    009F E0E0      LDI	R30,0
    00A0 079E      CPC	R25,R30
    00A1 F169      BEQ	0x00CF
    00A2 308A      CPI	R24,0xA
    00A3 E0E0      LDI	R30,0
    00A4 079E      CPC	R25,R30
    00A5 F169      BEQ	0x00D3
    00A6 308B      CPI	R24,0xB
    00A7 E0E0      LDI	R30,0
    00A8 079E      CPC	R25,R30
    00A9 F169      BEQ	0x00D7
    00AA 308C      CPI	R24,0xC
    00AB E0E0      LDI	R30,0
    00AC 079E      CPC	R25,R30
    00AD F169      BEQ	0x00DB
    00AE 308D      CPI	R24,0xD
    00AF E0E0      LDI	R30,0
    00B0 079E      CPC	R25,R30
    00B1 F169      BEQ	0x00DF
    00B2 3184      CPI	R24,0x14
    00B3 E0E0      LDI	R30,0
    00B4 079E      CPC	R25,R30
    00B5 F169      BEQ	0x00E3
    00B6 3185      CPI	R24,0x15
    00B7 E0E0      LDI	R30,0
    00B8 079E      CPC	R25,R30
    00B9 F159      BEQ	0x00E5
    00BA 3186      CPI	R24,0x16
    00BB E0E0      LDI	R30,0
    00BC 079E      CPC	R25,R30
    00BD F149      BEQ	0x00E7
    00BE 3187      CPI	R24,0x17
    00BF E0E0      LDI	R30,0
    00C0 079E      CPC	R25,R30
    00C1 F139      BEQ	0x00E9
    00C2 C027      RJMP	0x00EA
(0067)     {
(0068)         case 0 :
(0069)         {
(0070)             LED_ON_A;
    00C3 B188      IN	R24,0x08
    00C4 7D8D      ANDI	R24,0xDD
    00C5 B988      OUT	0x08,R24
(0071)             break;
    00C6 C023      RJMP	0x00EA
(0072)         }
(0073) 
(0074)         case 1 :
(0075)         {
(0076)             LED_OFF_A;
    00C7 B188      IN	R24,0x08
    00C8 6282      ORI	R24,0x22
    00C9 B988      OUT	0x08,R24
(0077)             break;
    00CA C01F      RJMP	0x00EA
(0078)         }
(0079) 
(0080)         case 2 :
(0081)         {
(0082)             LED_ON_A;
    00CB B188      IN	R24,0x08
    00CC 7D8D      ANDI	R24,0xDD
    00CD B988      OUT	0x08,R24
(0083)             break;
    00CE C01B      RJMP	0x00EA
(0084)         }
(0085) 
(0086)         case 3 :
(0087)         {
(0088)             LED_OFF_A;
    00CF B188      IN	R24,0x08
    00D0 6282      ORI	R24,0x22
    00D1 B988      OUT	0x08,R24
(0089)             break;
    00D2 C017      RJMP	0x00EA
(0090)         }
(0091) 
(0092)         case 10 :
(0093)         {
(0094)             LED_ON_B;
    00D3 B188      IN	R24,0x08
    00D4 7E8B      ANDI	R24,0xEB
    00D5 B988      OUT	0x08,R24
(0095)             break;
    00D6 C013      RJMP	0x00EA
(0096)         }
(0097) 
(0098)         case 11 :
(0099)         {
(0100)             LED_OFF_B;
    00D7 B188      IN	R24,0x08
    00D8 6184      ORI	R24,0x14
    00D9 B988      OUT	0x08,R24
(0101)             break;
    00DA C00F      RJMP	0x00EA
(0102)         }
(0103) 
(0104)         case 12 :
(0105)         {
(0106)             LED_ON_B;
    00DB B188      IN	R24,0x08
    00DC 7E8B      ANDI	R24,0xEB
    00DD B988      OUT	0x08,R24
(0107)             break;
    00DE C00B      RJMP	0x00EA
(0108)         }
(0109) 
(0110)         case 13 :
(0111)         {
(0112)             LED_OFF_B;
    00DF B188      IN	R24,0x08
    00E0 6184      ORI	R24,0x14
    00E1 B988      OUT	0x08,R24
(0113)             break;
    00E2 C007      RJMP	0x00EA
(0114)         }
(0115) 
(0116)         case 20 :
(0117)         {
(0118)             LED_ON_C;
    00E3 9843      CBI	0x08,3
(0119)             break;
    00E4 C005      RJMP	0x00EA
(0120)         }
(0121) 
(0122)         case 21 :
(0123)         {
(0124)             LED_OFF_C;
    00E5 9A43      SBI	0x08,3
(0125)             break;
    00E6 C003      RJMP	0x00EA
(0126)         }
(0127) 
(0128)         case 22 :
(0129)         {
(0130)             LED_ON_C;
    00E7 9843      CBI	0x08,3
(0131)             break;
    00E8 C001      RJMP	0x00EA
(0132)         }
(0133) 
(0134)         case 23 :
(0135)         {
(0136)             LED_OFF_C;
    00E9 9A43      SBI	0x08,3
(0137)             break;
    00EA 9508      RET
(0138)         }
(0139)     }
(0140) }
(0141) 
(0142) /***********************************************************
(0143) *   函数说明:主函数                                       *
(0144) *   输入:    无                                           *
(0145) *   输出:    无                                           *
(0146) *   调用函数:System_INIT()                                *
(0147) ***********************************************************/
(0148) void main(void)
(0149) {
(0150)     System_INIT();               //代码初始化
_main:
    00EB DF77      RCALL	_System_INIT
    00EC C008      RJMP	0x00F5
(0151) 
(0152)     while(TRUE)                  //超级循环
(0153)     {
(0154)         if (DoFLASH == TRUE)
    00ED 91800102  LDS	R24,DoFLASH
    00EF 3081      CPI	R24,1
    00F0 F421      BNE	0x00F5
(0155)         {
(0156)             LED_Flash();         //当闪烁执行标志为真时,调用闪烁控制函数
    00F1 DF98      RCALL	_LED_Flash
(0157)             DoFLASH = FALSE;
FILE: <library>
    00F2 2422      CLR	R2
    00F3 92200102  STS	DoFLASH,R2
    00F5 CFF7      RJMP	0x00ED
    00F6 9508      RET
push_lset:
    00F7 93FA      ST	R31,-Y
    00F8 93EA      ST	R30,-Y
    00F9 93BA      ST	R27,-Y
    00FA 93AA      ST	R26,-Y
    00FB 939A      ST	R25,-Y
    00FC 938A      ST	R24,-Y
    00FD 933A      ST	R19,-Y
    00FE 932A      ST	R18,-Y
    00FF 931A      ST	R17,-Y
    0100 930A      ST	R16,-Y
    0101 929A      ST	R9,-Y
    0102 928A      ST	R8,-Y
    0103 927A      ST	R7,-Y
    0104 926A      ST	R6,-Y
    0105 925A      ST	R5,-Y
    0106 924A      ST	R4,-Y
    0107 923A      ST	R3,-Y
    0108 922A      ST	R2,-Y
    0109 921A      ST	R1,-Y
    010A 920A      ST	R0,-Y
    010B B60F      IN	R0,0x3F
    010C 920A      ST	R0,-Y
    010D 9508      RET
pop_lset:
    010E 9009      LD	R0,Y+
    010F BE0F      OUT	0x3F,R0
    0110 9009      LD	R0,Y+
    0111 9019      LD	R1,Y+
    0112 9029      LD	R2,Y+
    0113 9039      LD	R3,Y+
    0114 9049      LD	R4,Y+
    0115 9059      LD	R5,Y+
    0116 9069      LD	R6,Y+
    0117 9079      LD	R7,Y+
    0118 9089      LD	R8,Y+
    0119 9099      LD	R9,Y+
    011A 9109      LD	R16,Y+
    011B 9119      LD	R17,Y+
    011C 9129      LD	R18,Y+
    011D 9139      LD	R19,Y+
    011E 9189      LD	R24,Y+
    011F 9199      LD	R25,Y+
    0120 91A9      LD	R26,Y+
    0121 91B9      LD	R27,Y+
    0122 91E9      LD	R30,Y+
    0123 91F9      LD	R31,Y+
    0124 9508      RET

⌨️ 快捷键说明

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