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

📄 main.lis

📁 avr单片机atmage16驱动小灯的一些例程 并且包括一些收发数据的程序利用usb口
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00D6                   .dbline 117
 00D6           ;                                                                       state = ST_GET_DATA;
 00D6 85E0              ldi R24,61445
 00D8 90EF              ldi R25,240
 00DA 7C01              movw R14,R24
 00DC                   .dbline 118
 00DC           ;                                                                       checksum ^= t;
 00DC C426              eor R12,R20
 00DE                   .dbline 119
 00DE           ;                                                                       i=0;
 00DE 0024              clr R0
 00E0 1124              clr R1
 00E2 1A82              std y+2,R1
 00E4 0982              std y+1,R0
 00E6                   .dbline 120
 00E6           ;                                                                       }
 00E6 2BC0              rjmp L19
 00E8           L20:
 00E8                   .dbline 121
 00E8           ;                                                               else {
 00E8                   .dbline 122
 00E8           ;                                                                       state = ST_START;
 00E8 80E0              ldi R24,61440
 00EA 90EF              ldi R25,240
 00EC 7C01              movw R14,R24
 00EE                   .dbline 123
 00EE           ;                                                                       }
 00EE                   .dbline 124
 00EE           ;                                                               }
 00EE 27C0              rjmp L19
 00F0           L18:
 00F0                   .dbline 125
 00F0           ;                                                       else {
 00F0                   .dbline 126
 00F0           ;                                                               if(state==ST_GET_DATA) {
 00F0 C701              movw R24,R14
 00F2 8530              cpi R24,5
 00F4 E0EF              ldi R30,240
 00F6 9E07              cpc R25,R30
 00F8 B1F4              brne L22
 00FA                   .dbline 126
 00FA                   .dbline 127
 00FA           ;                                                                       msg_buffer[i++] = t;
 00FA 2980              ldd R2,y+1
 00FC 3A80              ldd R3,y+2
 00FE C101              movw R24,R2
 0100 0196              adiw R24,1
 0102 9A83              std y+2,R25
 0104 8983              std y+1,R24
 0106 80E0              ldi R24,<_msg_buffer
 0108 90E0              ldi R25,>_msg_buffer
 010A F101              movw R30,R2
 010C E80F              add R30,R24
 010E F91F              adc R31,R25
 0110 4083              std z+0,R20
 0112                   .dbline 128
 0112           ;                                                                       checksum ^= t;
 0112 C426              eor R12,R20
 0114                   .dbline 129
 0114           ;                                                                       if(i==msg_size) {
 0114 0980              ldd R0,y+1
 0116 1A80              ldd R1,y+2
 0118 0616              cp R0,R22
 011A 1706              cpc R1,R23
 011C 81F4              brne L23
 011E                   .dbline 129
 011E                   .dbline 130
 011E           ;                                                                               state = ST_GET_CHECK;
 011E 86E0              ldi R24,61446
 0120 90EF              ldi R25,240
 0122 7C01              movw R14,R24
 0124                   .dbline 131
 0124           ;                                                                               }
 0124                   .dbline 132
 0124           ;                                                                       }
 0124 0CC0              rjmp L23
 0126           L22:
 0126                   .dbline 133
 0126           ;                                                               else {
 0126                   .dbline 134
 0126           ;                                                                       if(state==ST_GET_CHECK) {
 0126 C701              movw R24,R14
 0128 8630              cpi R24,6
 012A E0EF              ldi R30,240
 012C 9E07              cpc R25,R30
 012E 39F4              brne L26
 0130                   .dbline 134
 0130                   .dbline 135
 0130           ;                                                                               if(t==checksum) {
 0130 4C15              cp R20,R12
 0132 11F4              brne L28
 0134                   .dbline 135
 0134                   .dbline 136
 0134           ;                                                                                       process_command(seq_num);
 0134 0881              ldd R16,y+0
 0136 06D0              rcall _process_command
 0138                   .dbline 137
 0138           ;                                                                                       }
 0138           L28:
 0138                   .dbline 138
 0138           ;                                                                               state = ST_START;
 0138 80E0              ldi R24,61440
 013A 90EF              ldi R25,240
 013C 7C01              movw R14,R24
 013E                   .dbline 139
 013E           ;                                                                               }
 013E           L26:
 013E                   .dbline 140
 013E           ;                                                                       }
 013E           L23:
 013E                   .dbline 141
 013E           ;                                                               }
 013E           L19:
 013E                   .dbline 142
 013E           ;                                                       }
 013E           L17:
 013E                   .dbline 143
 013E           ;                                               }
 013E           L15:
 013E                   .dbline 144
 013E           ;                                       }
 013E           L13:
 013E                   .dbline 145
 013E           ;                               }
 013E           L9:
 013E                   .dbline 146
 013E           ;                       }
 013E           L6:
 013E                   .dbline 147
 013E           L4:
 013E                   .dbline 84
 013E 85CF              rjmp L3
 0140           X0:
 0140                   .dbline -2
 0140           L2:
 0140 2396              adiw R28,3
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbsym l i 1 i
 0144                   .dbsym r msg_size 22 i
 0144                   .dbsym l seq_num 0 c
 0144                   .dbsym r checksum 12 c
 0144                   .dbsym r t 20 c
 0144                   .dbsym r state 14 i
 0144                   .dbsym r rec_data 10 I
 0144                   .dbend
 0144                   .dbfunc e process_command _process_command fV
 0144           ;           mode -> R14
 0144           ;     block_size -> R10,R11
 0144           ;  start_address -> y+6
 0144           ; polling_address -> y+2
 0144           ;            tmp -> y+13
 0144           ;            cmd -> y+12
 0144           ;      num_bytes -> y+10
 0144           ;              i -> R12,R13
 0144           ;        seq_num -> y+24
                        .even
 0144           _process_command::
 0144 1A93              st -y,r17
 0146 0A93              st -y,r16
 0148 00D0              rcall push_gset5
 014A 2E97              sbiw R28,14
 014C                   .dbline -1
 014C                   .dbline 175
 014C           ;               }
 014C           ; }
 014C           ; 
 014C           ; /**
 014C           ;       Returns the value of the selected adc channel
 014C           ; 
 014C           ;       @param n Number of ADC channel
 014C           ; 
 014C           ;       @return  Value of ADC channel
 014C           ; */
 014C           ; /*unsigned char adc_get(char n)
 014C           ; {
 014C           ;       ADMUX&=0xF0;
 014C           ;       ADMUX|=n&0x7;
 014C           ; 
 014C           ;       while(ADCSRA&0x40);
 014C           ;       ADCSRA|=(1<<ADSC);
 014C           ;       while(ADCSRA&0x40);
 014C           ; 
 014C           ;       return ADCH;
 014C           ; }*/
 014C           ; 
 014C           ; /**
 014C           ;       Processes a command packet received in main loop and located in the global buffer
 014C           ; 
 014C           ;       @param  seq_num The sequence number of the command packet
 014C           ; */
 014C           ; void process_command(unsigned char seq_num)
 014C           ; {
 014C                   .dbline 177
 014C           ;       unsigned char cmd;
 014C           ;       unsigned char tmp=0;
 014C 0024              clr R0
 014E 0D86              std y+13,R0
 0150                   .dbline 181
 0150           ;       unsigned char mode;
 0150           ;       unsigned int block_size;
 0150           ;       unsigned int i;
 0150           ;       unsigned int num_bytes=0;
 0150 1124              clr R1
 0152 1B86              std y+11,R1
 0154 0A86              std y+10,R0
 0156                   .dbline 182
 0156           ;       unsigned long polling_address=0;
 0156 40E0              ldi R20,0
 0158 50E0              ldi R21,0
 015A 60E0              ldi R22,0
 015C 70E0              ldi R23,0
 015E FE01              movw R30,R28
 0160 4283              std z+2,R20
 0162 5383              std z+3,R21
 0164 6483              std z+4,R22
 0166 7583              std z+5,R23
 0168                   .dbline 183
 0168           ;       unsigned long start_address = address;
 0168 40900200          lds R4,_address+2
 016C 50900300          lds R5,_address+2+1
 0170 20900000          lds R2,_address
 0174 30900100          lds R3,_address+1
 0178 FE01              movw R30,R28
 017A 2682              std z+6,R2
 017C 3782              std z+7,R3
 017E 4086              std z+8,R4
 0180 5186              std z+9,R5
 0182                   .dbline 185
 0182           ; 
 0182           ;       cmd = msg_buffer[0];
 0182 20900800          lds R2,_msg_buffer
 0186 2C86              std y+12,R2
 0188                   .dbline 190
 0188           ; 
 0188           ;       //////////////////////////////////////
 0188           ;       //CMD_SIGN_ON
 0188           ;       //////////////////////////////////////
 0188           ;       if(cmd==CMD_SIGN_ON)
 0188 822D              mov R24,R2
 018A 8130              cpi R24,1
 018C A9F4              brne L31
 018E                   .dbline 191
 018E           ;       {
 018E                   .dbline 192
 018E           ;               num_bytes = 11;
 018E 8BE0              ldi R24,11
 0190 90E0              ldi R25,0
 0192 9B87              std y+11,R25
 0194 8A87              std y+10,R24
 0196                   .dbline 193
 0196           ;               msg_buffer[0] = CMD_SIGN_ON;
 0196 81E0              ldi R24,1
 0198 80930800          sts _msg_buffer,R24
 019C                   .dbline 194
 019C           ;               msg_buffer[1] = STATUS_CMD_OK;
 019C 2224              clr R2
 019E 20920900          sts _msg_buffer+1,R2
 01A2                   .dbline 195
 01A2           ;               msg_buffer[2] = 8;
 01A2 88E0              ldi R24,8
 01A4 80930A00          sts _msg_buffer+2,R24
 01A8                   .dbline 196
 01A8           ;               memcpy(msg_buffer+3,"AVRISP_2",8);
 01A8 9983              std y+1,R25
 01AA 8883              std y+0,R24
 01AC 20E0              ldi R18,<L36
 01AE 30E0              ldi R19,>L36
 01B0 00E0              ldi R16,<_msg_buffer+3
 01B2 10E0              ldi R17,>_msg_buffer+3
 01B4 00D0              rcall _memcpy
 01B6                   .dbline 197
 01B6           ;       }
 01B6 E8C6              rjmp L32
 01B8           L31:
 01B8                   .dbline 201
 01B8           ;       //////////////////////////////////////
 01B8           ;       //CMD_SET_PARAMETER
 01B8           ;       //////////////////////////////////////
 01B8           ;       else if(cmd==CMD_SET_PARAMETER)
 01B8 8C85              ldd R24,y+12
 01BA 8230              cpi R24,2
 01BC 81F5              brne L37
 01BE                   .dbline 202
 01BE           ;       {
 01BE                   .dbline 203
 01BE           ;               switch(msg_buffer[1])
 01BE A0900900          lds R10,_msg_buffer+1
 01C2 BB24              clr R11
 01C4 C501              movw R24,R10
 01C6 8839              cpi R24,152
 01C8 E0E0              ldi R30,0
 01CA 9E07              cpc R25,R30
 01CC 71F0              breq L43
 01CE 8839              cpi R24,152
 01D0 E0E0              ldi R30,0
 01D2 9E07              cpc R25,R30
 01D4 D4F0              brlt L39
 01D6           L49:

⌨️ 快捷键说明

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