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

📄 main.lis

📁 程序下载在M16中后
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _flag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\iccv7avr\AVRBOO~1/para.h
 0001                   .dbsym e flag _flag c
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\iccv7avr\AVRBOO~1/para.h
 0000           L2:
 0000                   .blkb 2
                        .area text(rom, con, rel)
 0000                   .dbfile D:\iccv7avr\AVRBOO~1/para.h
 0000                   .dbfile D:\iccv7avr\AVRBOO~1\main.c
 0000                   .dbfunc e main _main fV
 0000                   .dbsym s msgCounter L2 i
 0000           ;       rec_data -> R20
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 29
 0000           ; /****************************************Copyright (c)**************************************************                                                 
 0000           ; **                              
 0000           ; ** 文   件    名: main.c
 0000           ; ** 描         述: M16_BOOTLOADER
 0000           ; ** 版       本: V1.0
 0000           ; ** 主  控  芯 片: M16  晶振频率:7.3728MHZ, 波特率115200
 0000           ; ** 编  译  环 境:ICCAVR 6.31A        
 0000           ; 
 0000           ; 描    述:使用STK500_2 协议的bootloader,监控芯片 M16,数据通讯RS232
 0000           ;                 已经非常精简的使用STK500_2 协议的MEGA16的bootloader.使用
 0000           ;                 ATMEL AVRStudio 4.xx STK500工具的进行软件升级。
 0000           ;                       
 0000           ; **********************************************************************************************************/
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include <string.h>
 0000           ; #include "define.h"
 0000           ; #include "function.h"
 0000           ; #include "command.h"
 0000           ; #include "para.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /**********************************************************************
 0000           ; functionName:void main(void)
 0000           ; description:主函数
 0000           ; **********************************************************************/
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 32
 0000           ;       uint08 rec_data;
 0000           ;       static uint16 msgCounter;
 0000           ;       allInit();
 0000 0E940000          xcall _allInit
 0004 A6C0              xjmp L4
 0006           L3:
 0006                   .dbline 34
 0006           ;       while(1)
 0006           ;       {
 0006                   .dbline 35
 0006           ;               rec_data=getChar();
 0006 0E940000          xcall _getChar
 000A 402F              mov R20,R16
 000C                   .dbline 36
 000C           ;               if(statusMachine == ST_START)
 000C 80910600          lds R24,_statusMachine
 0010 803F              cpi R24,240
 0012 79F4              brne L6
 0014                   .dbline 37
 0014           ;               {
 0014                   .dbline 38
 0014           ;                       flag = 1;
 0014 81E0              ldi R24,1
 0016 80930000          sts _flag,R24
 001A                   .dbline 39
 001A           ;                       TCCR1B = 0x00;
 001A 2224              clr R2
 001C 2EBC              out 0x2e,R2
 001E                   .dbline 40
 001E           ;                       if(rec_data==MESSAGE_START)
 001E 0B31              cpi R16,27
 0020 09F0              breq X1
 0022 97C0              xjmp L7
 0024           X1:
 0024                   .dbline 41
 0024           ;                       {
 0024                   .dbline 42
 0024           ;                               statusMachine = ST_GET_SEQ_NUM; 
 0024 81EF              ldi R24,241
 0026 80930600          sts _statusMachine,R24
 002A                   .dbline 43
 002A           ;                               checkSum = MESSAGE_START;
 002A 8BE1              ldi R24,27
 002C 80930B00          sts _checkSum,R24
 0030                   .dbline 44
 0030           ;                       }
 0030                   .dbline 45
 0030           ;               }
 0030 90C0              xjmp L7
 0032           L6:
 0032                   .dbline 46
 0032           ;               else if(statusMachine == ST_GET_SEQ_NUM)
 0032 80910600          lds R24,_statusMachine
 0036 813F              cpi R24,241
 0038 59F4              brne L10
 003A                   .dbline 47
 003A           ;               {
 003A                   .dbline 48
 003A           ;                       seqNumber = rec_data;
 003A 40930C00          sts _seqNumber,R20
 003E                   .dbline 49
 003E           ;                       checkSum ^= rec_data; 
 003E 20900B00          lds R2,_checkSum
 0042 2426              eor R2,R20
 0044 20920B00          sts _checkSum,R2
 0048                   .dbline 50
 0048           ;                       statusMachine = ST_MSG_SIZE_1;
 0048 82EF              ldi R24,242
 004A 80930600          sts _statusMachine,R24
 004E                   .dbline 51
 004E           ;               }
 004E 81C0              xjmp L11
 0050           L10:
 0050                   .dbline 52
 0050           ;               else if(statusMachine == ST_MSG_SIZE_1)
 0050 80910600          lds R24,_statusMachine
 0054 823F              cpi R24,242
 0056 A9F4              brne L12
 0058                   .dbline 53
 0058           ;               {
 0058                   .dbline 54
 0058           ;                       msgSize = rec_data;
 0058 242E              mov R2,R20
 005A 3324              clr R3
 005C 30920500          sts _msgSize+1,R3
 0060 20920400          sts _msgSize,R2
 0064                   .dbline 55
 0064           ;                       msgSize <<=8;
 0064 322C              mov R3,R2
 0066 2224              clr R2
 0068 30920500          sts _msgSize+1,R3
 006C 20920400          sts _msgSize,R2
 0070                   .dbline 56
 0070           ;                       checkSum ^= rec_data;
 0070 20900B00          lds R2,_checkSum
 0074 2426              eor R2,R20
 0076 20920B00          sts _checkSum,R2
 007A                   .dbline 57
 007A           ;                       statusMachine = ST_MSG_SIZE_2;  
 007A 83EF              ldi R24,243
 007C 80930600          sts _statusMachine,R24
 0080                   .dbline 58
 0080           ;               }
 0080 68C0              xjmp L13
 0082           L12:
 0082                   .dbline 59
 0082           ;               else if(statusMachine == ST_MSG_SIZE_2)
 0082 80910600          lds R24,_statusMachine
 0086 833F              cpi R24,243
 0088 A9F4              brne L14
 008A                   .dbline 60
 008A           ;               {
 008A                   .dbline 61
 008A           ;                       msgSize |= rec_data;
 008A 242E              mov R2,R20
 008C 3324              clr R3
 008E 40900400          lds R4,_msgSize
 0092 50900500          lds R5,_msgSize+1
 0096 4228              or R4,R2
 0098 5328              or R5,R3
 009A 50920500          sts _msgSize+1,R5
 009E 40920400          sts _msgSize,R4
 00A2                   .dbline 62
 00A2           ;                       checkSum ^= rec_data;
 00A2 20900B00          lds R2,_checkSum
 00A6 2426              eor R2,R20
 00A8 20920B00          sts _checkSum,R2
 00AC                   .dbline 63
 00AC           ;                       statusMachine = ST_GET_TOKEN;   
 00AC 84EF              ldi R24,244
 00AE 80930600          sts _statusMachine,R24
 00B2                   .dbline 64
 00B2           ;               }
 00B2 4FC0              xjmp L15
 00B4           L14:
 00B4                   .dbline 65
 00B4           ;               else if(statusMachine == ST_GET_TOKEN)
 00B4 80910600          lds R24,_statusMachine
 00B8 843F              cpi R24,244
 00BA A9F4              brne L16
 00BC                   .dbline 66
 00BC           ;               {
 00BC                   .dbline 67
 00BC           ;                       if(rec_data==TOKEN)
 00BC 4E30              cpi R20,14
 00BE 79F4              brne L18
 00C0                   .dbline 68
 00C0           ;                       {
 00C0                   .dbline 69
 00C0           ;                               checkSum ^= rec_data;
 00C0 20900B00          lds R2,_checkSum
 00C4 2426              eor R2,R20
 00C6 20920B00          sts _checkSum,R2
 00CA                   .dbline 70
 00CA           ;                               statusMachine = ST_GET_DATA;
 00CA 85EF              ldi R24,245
 00CC 80930600          sts _statusMachine,R24
 00D0                   .dbline 71
 00D0           ;                               msgCounter=0;
 00D0 2224              clr R2
 00D2 3324              clr R3
 00D4 30920100          sts L2+1,R3
 00D8 20920000          sts L2,R2
 00DC                   .dbline 72
 00DC           ;                       }
 00DC 3AC0              xjmp L17
 00DE           L18:
 00DE                   .dbline 74
 00DE           ;                       else
 00DE           ;                       {
 00DE                   .dbline 75
 00DE           ;                               statusMachine = ST_START;
 00DE 80EF              ldi R24,240
 00E0 80930600          sts _statusMachine,R24
 00E4                   .dbline 76
 00E4           ;                       }
 00E4                   .dbline 77
 00E4           ;               }
 00E4 36C0              xjmp L17
 00E6           L16:
 00E6                   .dbline 78
 00E6           ;               else if(statusMachine == ST_GET_DATA)
 00E6 80910600          lds R24,_statusMachine
 00EA 853F              cpi R24,245
 00EC 21F5              brne L20
 00EE                   .dbline 79
 00EE           ;               {
 00EE                   .dbline 80
 00EE           ;                       msg_buffer[msgCounter++]=rec_data;
 00EE 20900000          lds R2,L2
 00F2 30900100          lds R3,L2+1
 00F6 C101              movw R24,R2
 00F8 0196              adiw R24,1
 00FA 90930100          sts L2+1,R25
 00FE 80930000          sts L2,R24
 0102 80E0              ldi R24,<_msg_buffer
 0104 90E0              ldi R25,>_msg_buffer
 0106 F101              movw R30,R2
 0108 E80F              add R30,R24
 010A F91F              adc R31,R25
 010C 4083              std z+0,R20
 010E                   .dbline 81
 010E           ;                       checkSum ^= rec_data;
 010E 20900B00          lds R2,_checkSum
 0112 2426              eor R2,R20
 0114 20920B00          sts _checkSum,R2
 0118                   .dbline 82
 0118           ;                       if(msgCounter==msgSize)
 0118 20900400          lds R2,_msgSize
 011C 30900500          lds R3,_msgSize+1
 0120 40900000          lds R4,L2
 0124 50900100          lds R5,L2+1
 0128 4214              cp R4,R2
 012A 5304              cpc R5,R3
 012C 91F4              brne L21
 012E                   .dbline 83
 012E           ;                       {
 012E                   .dbline 84
 012E           ;                               statusMachine = ST_GET_CHECK;
 012E 86EF              ldi R24,246
 0130 80930600          sts _statusMachine,R24
 0134                   .dbline 85
 0134           ;                       }
 0134                   .dbline 86
 0134           ;               }
 0134 0EC0              xjmp L21
 0136           L20:
 0136                   .dbline 87
 0136           ;               else if(statusMachine == ST_GET_CHECK)
 0136 80910600          lds R24,_statusMachine
 013A 863F              cpi R24,246
 013C 51F4              brne L24
 013E                   .dbline 88
 013E           ;               {
 013E                   .dbline 89
 013E           ;                       if(rec_data == checkSum)
 013E 20900B00          lds R2,_checkSum
 0142 4215              cp R20,R2
 0144 19F4              brne L26
 0146                   .dbline 90
 0146           ;                       {
 0146                   .dbline 91
 0146           ;                               packageProcess(seqNumber);
 0146 00910C00          lds R16,_seqNumber
 014A 05D0              xcall _packageProcess
 014C                   .dbline 92
 014C           ;                       }               
 014C           L26:
 014C                   .dbline 93
 014C           ;                       statusMachine = ST_START;       
 014C 80EF              ldi R24,240
 014E 80930600          sts _statusMachine,R24
 0152                   .dbline 94
 0152           ;               }
 0152           L24:
 0152           L21:
 0152           L17:
 0152           L15:
 0152           L13:

⌨️ 快捷键说明

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