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

📄 单灯连闪.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0073) 
(0074) /********************
(0075) *   全局变量声明区  *
(0076) ********************/
(0077) 
(0078) /***********************************************************
(0079) *   函数说明:软件驱动初始化函数                           *
(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
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 "PF_Config.h"
(0026) 
(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) *   函数说明:LED闪烁控制函数                              *
(0053) *   输入:    无                                           *
(0054) *   输出:    无                                           *
(0055) *   调用函数:                                             *
(0056) ***********************************************************/
(0057) 
(0058) void LED_Flash (void)
(0059) {
(0060)     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 F089      BEQ	0x00A3
    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 F059      BEQ	0x00A5
    009A 3082      CPI	R24,2
    009B E0E0      LDI	R30,0
    009C 079E      CPC	R25,R30
    009D F049      BEQ	0x00A7
    009E 3083      CPI	R24,3
    009F E0E0      LDI	R30,0
    00A0 079E      CPC	R25,R30
    00A1 F039      BEQ	0x00A9
    00A2 C007      RJMP	0x00AA
(0061)     {
(0062)         case 0 :
(0063)         {
(0064)             LED_ON;
    00A3 9845      CBI	0x08,5
(0065)             break;
    00A4 C005      RJMP	0x00AA
(0066)         }
(0067)         
(0068)         case 1 :
(0069)         {
(0070)             LED_OFF;
    00A5 9A45      SBI	0x08,5
(0071)             break;
    00A6 C003      RJMP	0x00AA
(0072)         }
(0073)         
(0074)         case 2 :
(0075)         {
(0076)             LED_ON;
    00A7 9845      CBI	0x08,5
(0077)             break;
    00A8 C001      RJMP	0x00AA
(0078)         }
(0079)         
(0080)         case 3 :
(0081)         {
(0082)             LED_OFF;
    00A9 9A45      SBI	0x08,5
(0083)             break;
    00AA 9508      RET
(0084)         }
(0085)     }
(0086) }
(0087) 
(0088) /***********************************************************
(0089) *   函数说明:主函数                                       *
(0090) *   输入:    无                                           *
(0091) *   输出:    无                                           *
(0092) *   调用函数:System_INIT()                                *
(0093) ***********************************************************/
(0094) void main(void)
(0095) {
(0096)     System_INIT();               //代码初始化
_main:
    00AB DFB7      RCALL	_System_INIT
    00AC C008      RJMP	0x00B5
(0097) 
(0098)     while(TRUE)                  //超级循环
(0099)     {
(0100)         if (DoFLASH == TRUE)
    00AD 91800102  LDS	R24,DoFLASH
    00AF 3081      CPI	R24,1
    00B0 F421      BNE	0x00B5
(0101)         {
(0102)             LED_Flash();         //当闪烁执行标志为真时,调用闪烁控制函数
    00B1 DFD8      RCALL	_LED_Flash
(0103)             DoFLASH = FALSE;
FILE: <library>
    00B2 2422      CLR	R2
    00B3 92200102  STS	DoFLASH,R2
    00B5 CFF7      RJMP	0x00AD
    00B6 9508      RET
push_lset:
    00B7 93FA      ST	R31,-Y
    00B8 93EA      ST	R30,-Y
    00B9 93BA      ST	R27,-Y
    00BA 93AA      ST	R26,-Y
    00BB 939A      ST	R25,-Y
    00BC 938A      ST	R24,-Y
    00BD 933A      ST	R19,-Y
    00BE 932A      ST	R18,-Y
    00BF 931A      ST	R17,-Y
    00C0 930A      ST	R16,-Y
    00C1 929A      ST	R9,-Y
    00C2 928A      ST	R8,-Y
    00C3 927A      ST	R7,-Y
    00C4 926A      ST	R6,-Y
    00C5 925A      ST	R5,-Y
    00C6 924A      ST	R4,-Y
    00C7 923A      ST	R3,-Y
    00C8 922A      ST	R2,-Y
    00C9 921A      ST	R1,-Y
    00CA 920A      ST	R0,-Y
    00CB B60F      IN	R0,0x3F
    00CC 920A      ST	R0,-Y
    00CD 9508      RET
pop_lset:
    00CE 9009      LD	R0,Y+
    00CF BE0F      OUT	0x3F,R0
    00D0 9009      LD	R0,Y+
    00D1 9019      LD	R1,Y+
    00D2 9029      LD	R2,Y+
    00D3 9039      LD	R3,Y+
    00D4 9049      LD	R4,Y+
    00D5 9059      LD	R5,Y+
    00D6 9069      LD	R6,Y+
    00D7 9079      LD	R7,Y+
    00D8 9089      LD	R8,Y+
    00D9 9099      LD	R9,Y+
    00DA 9109      LD	R16,Y+
    00DB 9119      LD	R17,Y+
    00DC 9129      LD	R18,Y+
    00DD 9139      LD	R19,Y+
    00DE 9189      LD	R24,Y+
    00DF 9199      LD	R25,Y+
    00E0 91A9      LD	R26,Y+
    00E1 91B9      LD	R27,Y+
    00E2 91E9      LD	R30,Y+
    00E3 91F9      LD	R31,Y+
    00E4 9508      RET

⌨️ 快捷键说明

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