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

📄 ex_support.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0024           ;         Time--;
 0024           ;     }
 0024           ; }
 0024           ; 
 0024           ; /***********************************************************
 0024           ; *   函数说明:蜂鸣器鸣叫函数                               *
 0024           ; *   输入:    无                                           *
 0024           ; *   输出:    无                                           *
 0024           ; *   调用函数:无                                           *
 0024           ; ***********************************************************/
 0024           ; void Beep (unsigned int Time)
 0024           ; {
 0024                   .dbline 156
 0024           ;     PORTB |= 0x01;
 0024 289A              sbi 0x5,0
 0026                   .dbline 157
 0026           ;     Delay_ms(Time);
 0026 8A01              movw R16,R20
 0028 EBDF              rcall _Delay_ms
 002A                   .dbline 158
 002A           ;     PORTB &= 0xFE;
 002A 85B1              in R24,0x5
 002C 8E7F              andi R24,254
 002E 85B9              out 0x5,R24
 0030                   .dbline -2
 0030           L9:
 0030 00D0              rcall pop_gset1
 0032                   .dbline 0 ; func end
 0032 0895              ret
 0034                   .dbsym r Time 20 i
 0034                   .dbend
 0034                   .dbfunc s Driver_INIT _Driver_INIT fV
                        .even
 0034           _Driver_INIT:
 0034                   .dbline -1
 0034                   .dbline 168
 0034           ; }
 0034           ; 
 0034           ; /***********************************************************
 0034           ; *   函数说明:软件驱动初始化函数                           *
 0034           ; *   输入:    无                                           *
 0034           ; *   输出:    无                                           *
 0034           ; *   调用函数:无                                           *
 0034           ; ***********************************************************/
 0034           ; static void Driver_INIT(void)
 0034           ; {
 0034                   .dbline -2
 0034           L10:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbend
 0036                   .dbfunc e System_INIT _System_INIT fV
                        .even
 0036           _System_INIT::
 0036                   .dbline -1
 0036                   .dbline 179
 0036           ;     //*在这里插入你的各类软件驱动初始化代码*//
 0036           ; }
 0036           ; 
 0036           ; /***********************************************************
 0036           ; *   函数说明:系统初始化函数                               *
 0036           ; *   输入:    无                                           *
 0036           ; *   输出:    无                                           *
 0036           ; *   调用函数:Device_INIT() Driver_INIT()                  *
 0036           ; ***********************************************************/
 0036           ; void System_INIT(void)
 0036           ; {
 0036                   .dbline 180
 0036           ;     CLI();
 0036 F894              cli
 0038                   .dbline 182
 0038           ;     
 0038           ;     Device_INIT();
 0038 00D0              rcall _Device_INIT
 003A                   .dbline 183
 003A           ;     Driver_INIT();
 003A FCDF              rcall _Driver_INIT
 003C                   .dbline 187
 003C           ;     
 003C           ;     //*在这里插入你的系统环境变量初始化代码*//
 003C           ;     
 003C           ;     SEI();
 003C 7894              sei
 003E                   .dbline -2
 003E           L11:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbend
 0040                   .dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
                        .even
 0040           _Insert_Timer0_OVF_ISR_Code::
 0040                   .dbline -1
 0040                   .dbline 197
 0040           ; }
 0040           ; 
 0040           ; /***********************************************************
 0040           ; *   函数说明:定时器0中断处理程序代码插入函数              *
 0040           ; *   输入:    无                                           *
 0040           ; *   输出:    无                                           *
 0040           ; *   调用函数:无                                           *
 0040           ; ***********************************************************/
 0040           ; void Insert_Timer0_OVF_ISR_Code(void)
 0040           ; {
 0040                   .dbline 198
 0040           ;     TCNT0 = 0x83;                       //重载定时器
 0040 83E8              ldi R24,131
 0042 86BD              out 0x26,R24
 0044                   .dbline 200
 0044           ;     
 0044           ;     g_wSystemTimer++;                   //时标产生,以1秒为周期循环时标
 0044 80910200          lds R24,_g_wSystemTimer
 0048 90910300          lds R25,_g_wSystemTimer+1
 004C 0196              adiw R24,1
 004E 90930300          sts _g_wSystemTimer+1,R25
 0052 80930200          sts _g_wSystemTimer,R24
 0056                   .dbline 202
 0056           ;     
 0056           ;     if (g_wSystemTimer >= TimeStampMax)
 0056 883E              cpi R24,232
 0058 E3E0              ldi R30,3
 005A 9E07              cpc R25,R30
 005C 30F0              brlo L13
 005E                   .dbline 203
 005E           ;         g_wSystemTimer = 0;
 005E 2224              clr R2
 0060 3324              clr R3
 0062 30920300          sts _g_wSystemTimer+1,R3
 0066 20920200          sts _g_wSystemTimer,R2
 006A           L13:
 006A                   .dbline 205
 006A           ;         
 006A           ;     DoTime = TRUE;                      //端口刷新与闪烁控制标志
 006A 81E0              ldi R24,1
 006C 80930400          sts _DoTime,R24
 0070                   .dbline -2
 0070           L12:
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbend
 0072                   .dbfunc e Insert_Timer1_OVF_ISR_Code _Insert_Timer1_OVF_ISR_Code fV
                        .even
 0072           _Insert_Timer1_OVF_ISR_Code::
 0072                   .dbline -1
 0072                   .dbline 215
 0072           ; }
 0072           ; 
 0072           ; /***********************************************************
 0072           ; *   函数说明:定时器1中断处理程序代码插入函数              *
 0072           ; *   输入:    无                                           *
 0072           ; *   输出:    无                                           *
 0072           ; *   调用函数:无                                           *
 0072           ; ***********************************************************/
 0072           ; void Insert_Timer1_OVF_ISR_Code(void)
 0072           ; {
 0072                   .dbline 216
 0072           ;     TIMERSTOP;
 0072 2224              clr R2
 0074 20928100          sts 129,R2
 0078                   .dbline 217
 0078           ;     ShowTime = TRUE;
 0078 81E0              ldi R24,1
 007A 80930500          sts _ShowTime,R24
 007E                   .dbline 218
 007E           ;     Beep(10);
 007E 0AE0              ldi R16,10
 0080 10E0              ldi R17,0
 0082 CEDF              rcall _Beep
 0084                   .dbline -2
 0084           L15:
 0084                   .dbline 0 ; func end
 0084 0895              ret
 0086                   .dbend
 0086                   .dbfunc e Insert_Twi_Isr_Code _Insert_Twi_Isr_Code fV
 0086           ;      TWIStatus -> R16
                        .even
 0086           _Insert_Twi_Isr_Code::
 0086                   .dbline -1
 0086                   .dbline 228
 0086           ; }
 0086           ; 
 0086           ; /***********************************************************
 0086           ; *   函数说明:TWI中断处理程序代码插入函数                  *
 0086           ; *   输入:    无                                           *
 0086           ; *   输出:    无                                           *
 0086           ; *   调用函数:无                                           *
 0086           ; ***********************************************************/
 0086           ; void Insert_Twi_Isr_Code(void)
 0086           ; {
 0086                   .dbline 231
 0086           ;     unsigned char TWIStatus;
 0086           ; 
 0086           ;     TWIStatus = TWSR&0xF8;
 0086 0091B900          lds R16,185
 008A 087F              andi R16,248
 008C                   .dbline 233
 008C           ; 
 008C           ;     TWCR &= ~(BIT(TWINT)|BIT(TWSTA)|BIT(TWSTO));
 008C 8091BC00          lds R24,188
 0090 8F74              andi R24,79
 0092 8093BC00          sts 188,R24
 0096                   .dbline 235
 0096           ; 
 0096           ;     switch (TWIStatus)
 0096 1127              clr R17
 0098 0831              cpi R16,24
 009A E0E0              ldi R30,0
 009C 1E07              cpc R17,R30
 009E D9F0              breq L21
 00A0 88E1              ldi R24,24
 00A2 90E0              ldi R25,0
 00A4 8017              cp R24,R16
 00A6 9107              cpc R25,R17
 00A8 2CF0              brlt L25
 00AA           L24:
 00AA 0830              cpi R16,8
 00AC E0E0              ldi R30,0
 00AE 1E07              cpc R17,R30
 00B0 71F0              breq L20
 00B2 31C0              rjmp L17
 00B4           L25:
 00B4 0036              cpi R16,96
 00B6 E0E0              ldi R30,0
 00B8 1E07              cpc R17,R30
 00BA A9F1              breq L18
 00BC 0036              cpi R16,96
 00BE E0E0              ldi R30,0
 00C0 1E07              cpc R17,R30
 00C2 4CF1              brlt L17
 00C4           L26:
 00C4 0038              cpi R16,128
 00C6 E0E0              ldi R30,0
 00C8 1E07              cpc R17,R30
 00CA A1F0              breq L23
 00CC 24C0              rjmp L17
 00CE           X1:
 00CE                   .dbline 236
 00CE           ;     {
 00CE           L20:
 00CE                   .dbline 238
 00CE           ;         case SSend :                //启动位已发送
 00CE           ;         {
 00CE                   .dbline 239
 00CE           ;             TWDR = 0x00;            //发送广播地址,写方向
 00CE 2224              clr R2
 00D0 2092BB00          sts 187,R2
 00D4                   .dbline 240
 00D4           ;             break;
 00D4 28C0              rjmp L18
 00D6           L21:
 00D6                   .dbline 244
 00D6           ;         }

⌨️ 快捷键说明

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