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

📄 main.lis

📁 很好的制作AVR32 ICE的资料
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\源程序\Snail_mkII\STK500_V2\ICC\main.c
 0000                   .dbfunc e main _main fI
 0000           ;      rec_data1 -> R10,R11
 0000           ;             t0 -> R10
 0000           ;         state0 -> R20,R21
 0000           ;      checksum0 -> R22
 0000           ;      msg_size0 -> R12,R13
 0000           ;       seq_num0 -> y+2
 0000           ;             i0 -> y+0
                        .even
 0000           _main::
 0000 2497              sbiw R28,4
 0002                   .dbline -1
 0002                   .dbline 65
 0002           ; /**   \file
 0002           ;       <b>USBisp main</b><br>
 0002           ;       Autor: Matthias Wei遝r<br>
 0002           ;       Copyright 2005: Matthias Wei遝r<br>
 0002           ;       License: QPL (see license.txt)
 0002           ;       <hr>
 0002           ; */
 0002           ; /*! \mainpage USBisp STK500 v2
 0002           ; 
 0002           ;       (c)2005 by Matthias Weisser
 0002           ; 
 0002           ;       This software is distributed under the QPL
 0002           ;       see license.txt for more information
 0002           ; 
 0002           ;       \section Compiler
 0002           ;       latest WINAVR
 0002           ; 
 0002           ;       \section version history version history
 0002           ;       <b>v1.0</b>
 0002           ;       <ul>
 0002           ;               <li>First release</li>
 0002           ;       </ul>
 0002           ; */
 0002           ; 
 0002           ; #include <stdlib.h>
 0002           ; #include <string.h>
 0002           ; #include <iccioavr.h>
 0002           ; #include <eeprom.h>
 0002           ; #include <macros.h>
 0002           ; #include "interface.h"
 0002           ; #include "spi.h"
 0002           ; #include "tools.h"
 0002           ; #include "extern_vars.h"
 0002           ; 
 0002           ; //Atmel Includes
 0002           ; #include "command.h"
 0002           ; 
 0002           ; #include "config.h"
 0002           ; 
 0002           ; //States used in the receive state machine
 0002           ; #define       ST_START                0xF000
 0002           ; #define       ST_GET_SEQ_NUM  0xF001
 0002           ; #define ST_MSG_SIZE_1 0xF002
 0002           ; #define ST_MSG_SIZE_2 0xF003
 0002           ; #define ST_GET_TOKEN  0xF004
 0002           ; #define ST_GET_DATA           0xF005
 0002           ; #define       ST_GET_CHECK    0xF006
 0002           ; #define       ST_PROCESS              0xF007
 0002           ; 
 0002           ; 
 0002           ; void chip_init(void);
 0002           ; unsigned char adc_get(char n);
 0002           ; void process_command(unsigned char seq_num);
 0002           ; 
 0002           ; //Some global variables
 0002           ; unsigned char msg_buffer[300];
 0002           ; unsigned char clock_speed;
 0002           ; unsigned char reset_polarity;
 0002           ; unsigned char param_controller_init;
 0002           ; unsigned char prgmode;
 0002           ; 
 0002           ; unsigned long address;
 0002           ; 
 0002           ; int main(void)
 0002           ; {
 0002                   .dbline 66
 0002           ;   unsigned int i=0;
 0002 0024              clr R0
 0004 1124              clr R1
 0006 1982              std y+1,R1
 0008 0882              std y+0,R0
 000A                   .dbline 68
 000A           ; 
 000A           ;   unsigned char seq_num=0;
 000A 0A82              std y+2,R0
 000C                   .dbline 69
 000C           ;   unsigned int msg_size=0;
 000C CC24              clr R12
 000E DD24              clr R13
 0010                   .dbline 70
 0010           ;   unsigned char checksum=0;
 0010 6627              clr R22
 0012                   .dbline 73
 0012           ; 
 0012           ;   /// next state
 0012           ;   unsigned int state=ST_START;
 0012 40E0              ldi R20,61440
 0014 50EF              ldi R21,240
 0016                   .dbline 78
 0016           ; 
 0016           ;   unsigned char t;
 0016           ;   signed int rec_data;
 0016           ; 
 0016           ;   chip_init();
 0016 0E940309          xcall _chip_init
 001A                   .dbline 79
 001A           ;   interface_init();
 001A 0E940000          xcall _interface_init
 001E                   .dbline 80
 001E           ;   spi_disable();
 001E 0E940000          xcall _spi_disable
 0022                   .dbline 82
 0022           ; 
 0022           ;   clock_speed=EEPROMread((int)&eeprom_sck_period);
 0022 00E0              ldi R16,<_eeprom_sck_period
 0024 10E0              ldi R17,>_eeprom_sck_period
 0026 0E940000          xcall _EEPROMread
 002A 00930700          sts _clock_speed,R16
 002E                   .dbline 83
 002E           ;   if (clock_speed==0xFF) clock_speed=SPI_SPEED_125KHZ;
 002E 0F3F              cpi R16,255
 0030 19F4              brne L3
 0032           X0:
 0032                   .dbline 83
 0032 85E0              ldi R24,5
 0034 80930700          sts _clock_speed,R24
 0038           L3:
 0038                   .dbline 84
 0038           ;   spi_set_speed(clock_speed);
 0038 00910700          lds R16,_clock_speed
 003C 0E940000          xcall _spi_set_speed
 0040                   .dbline 86
 0040           ; 
 0040           ;   SEI();
 0040 7894              sei
 0042                   .dbline 88
 0042           ; 
 0042           ;   LED_GN_ON;
 0042 929A              sbi 0x12,2
 0044                   .dbline 89
 0044           ;   LED_RT_OFF;
 0044 87EF              ldi R24,-9
 0046 9FEF              ldi R25,-1
 0048 22B2              in R2,0x12
 004A 2822              and R2,R24
 004C 22BA              out 0x12,R2
 004E 6CC0              xjmp L6
 0050           L5:
 0050                   .dbline 106
 0050           ; 
 0050           ;   /*
 0050           ;   while(2)
 0050           ;   {
 0050           ;       rec_data=interface_getc();
 0050           ;       //if a byte has been received -> process it
 0050           ;       if(rec_data!=-1)
 0050           ;       {
 0050           ;               interface_putc(rec_data);
 0050           ;               LED_GN_TOG;
 0050           ;               LED_RT_TOG;
 0050           ;       }
 0050           ;   }
 0050           ;   */
 0050           ; 
 0050           ;   while (2)
 0050           ;     {
 0050                   .dbline 108
 0050           ;       
 0050           ;       rec_data=interface_getc();
 0050 0E940000          xcall _interface_getc
 0054 5801              movw R10,R16
 0056                   .dbline 112
 0056           ;       
 0056           ;       
 0056           ;       //if a aviliable byte has been received -> process it.
 0056           ;       if (rec_data!=-1)
 0056 C501              movw R24,R10
 0058 0F3F              cpi R16,255
 005A EFEF              ldi R30,255
 005C 1E07              cpc R17,R30
 005E 09F4              brne X14
 0060 63C0              xjmp L8
 0062           X14:
 0062           X1:
 0062                   .dbline 113
 0062           ;         {
 0062                   .dbline 114
 0062           ;           t=rec_data&0xFF;
 0062 9070              andi R25,0
 0064 A82E              mov R10,R24
 0066                   .dbline 116
 0066           ; 
 0066           ;           if (state==ST_START)
 0066 4030              cpi R20,0
 0068 E0EF              ldi R30,240
 006A 5E07              cpc R21,R30
 006C 39F4              brne L10
 006E           X2:
 006E                   .dbline 117
 006E           ;             {
 006E                   .dbline 118
 006E           ;               if (t==MESSAGE_START)
 006E 8B31              cpi R24,27
 0070 09F0              breq X15
 0072 5AC0              xjmp L11
 0074           X15:
 0074           X3:
 0074                   .dbline 119
 0074           ;                 {
 0074                   .dbline 120
 0074           ;                   state = ST_GET_SEQ_NUM;
 0074 41E0              ldi R20,61441
 0076 50EF              ldi R21,240
 0078                   .dbline 121
 0078           ;                   checksum = MESSAGE_START^0;
 0078 6BE1              ldi R22,27
 007A                   .dbline 122
 007A           ;                 }
 007A                   .dbline 123
 007A           ;             }
 007A 56C0              xjmp L11
 007C           L10:
 007C                   .dbline 124
 007C           ;           else if (state==ST_GET_SEQ_NUM)
 007C 4130              cpi R20,1
 007E E0EF              ldi R30,240
 0080 5E07              cpc R21,R30
 0082 29F4              brne L14
 0084           X4:
 0084                   .dbline 125
 0084           ;             {
 0084                   .dbline 126
 0084           ;               seq_num = t;
 0084 AA82              std y+2,R10
 0086                   .dbline 127
 0086           ;               state = ST_MSG_SIZE_1;
 0086 42E0              ldi R20,61442
 0088 50EF              ldi R21,240
 008A                   .dbline 128
 008A           ;               checksum ^= t;
 008A 6A25              eor R22,R10
 008C                   .dbline 129
 008C           ;             }
 008C 4DC0              xjmp L15
 008E           L14:
 008E                   .dbline 130
 008E           ;           else if (state==ST_MSG_SIZE_1)
 008E 4230              cpi R20,2
 0090 E0EF              ldi R30,240
 0092 5E07              cpc R21,R30
 0094 41F4              brne L16
 0096           X5:
 0096                   .dbline 131
 0096           ;             {
 0096                   .dbline 132
 0096           ;               msg_size = t<<8;
 0096 CA2C              mov R12,R10
 0098 DD24              clr R13
 009A DC2C              mov R13,R12
 009C CC24              clr R12
 009E                   .dbline 133
 009E           ;               state = ST_MSG_SIZE_2;
 009E 43E0              ldi R20,61443
 00A0 50EF              ldi R21,240
 00A2                   .dbline 134
 00A2           ;               checksum ^= t;
 00A2 6A25              eor R22,R10
 00A4                   .dbline 135
 00A4           ;             }
 00A4 41C0              xjmp L17
 00A6           L16:
 00A6                   .dbline 136
 00A6           ;           else if (state==ST_MSG_SIZE_2)
 00A6 4330              cpi R20,3
 00A8 E0EF              ldi R30,240
 00AA 5E07              cpc R21,R30
 00AC 41F4              brne L18
 00AE           X6:
 00AE                   .dbline 137
 00AE           ;             {
 00AE                   .dbline 138
 00AE           ;               msg_size |= t;
 00AE 2A2C              mov R2,R10
 00B0 3324              clr R3
 00B2 C228              or R12,R2
 00B4 D328              or R13,R3
 00B6                   .dbline 139
 00B6           ;               state = ST_GET_TOKEN;
 00B6 44E0              ldi R20,61444
 00B8 50EF              ldi R21,240
 00BA                   .dbline 140
 00BA           ;               checksum ^= t;
 00BA 6225              eor R22,R2
 00BC                   .dbline 141
 00BC           ;             }
 00BC 35C0              xjmp L19
 00BE           L18:
 00BE                   .dbline 142
 00BE           ;           else if (state==ST_GET_TOKEN)
 00BE 4430              cpi R20,4
 00C0 E0EF              ldi R30,240
 00C2 5E07              cpc R21,R30
 00C4 71F4              brne L20
 00C6           X7:
 00C6                   .dbline 143
 00C6           ;             {
 00C6                   .dbline 144
 00C6           ;               if (t==TOKEN)
 00C6 8A2D              mov R24,R10
 00C8 8E30              cpi R24,14
 00CA 41F4              brne L22
 00CC           X8:
 00CC                   .dbline 145
 00CC           ;                 {
 00CC                   .dbline 146
 00CC           ;                   state = ST_GET_DATA;
 00CC 45E0              ldi R20,61445
 00CE 50EF              ldi R21,240
 00D0                   .dbline 147
 00D0           ;                   checksum ^= t;
 00D0 6827              eor R22,R24
 00D2                   .dbline 148
 00D2           ;                   i=0;
 00D2 0024              clr R0
 00D4 1124              clr R1
 00D6 1982              std y+1,R1
 00D8 0882              std y+0,R0
 00DA                   .dbline 149
 00DA           ;                 }
 00DA 26C0              xjmp L21
 00DC           L22:
 00DC                   .dbline 150

⌨️ 快捷键说明

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