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

📄 init.lis

📁 ATEMEL AVR128 BOOT程序
💻 LIS
字号:
                        .module init.c
                        .area data(ram, con, rel)
 0000           _flag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\019-BOOT\init.c
 0001                   .dbsym e flag _flag c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\019-BOOT\init.c
 0000                   .dbfunc e io_init _io_init fV
                        .even
 0000           _io_init::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; #include "init.h"
 0000           ; 
 0000           ; /*参数声明*/
 0000           ; unsigned char msg_buffer[300];                                //消息体
 0000           ; unsigned char seqNumber;                                      //顺序数
 0000           ; unsigned char checkSum;                                       //和校验
 0000           ; unsigned char clockSpeed;                                     //时钟速度
 0000           ; unsigned char resetPolarity;                          //复位极性
 0000           ; unsigned char paramControllerInit;                    //参数控制器初始化
 0000           ; unsigned char prgMode;                                                //编程模式
 0000           ; unsigned char statusMachine;                          //状态机
 0000           ; unsigned int msgSize;                                         //消息尺寸
 0000           ; unsigned char flag = 0;                                               //接收到消息
 0000           ; 
 0000           ; unsigned long address;                                        //地址
 0000           ; 
 0000           ; /*IO口初始化函数*/
 0000           ; void io_init(void) {
 0000                   .dbline 20
 0000           ; 
 0000           ;       DDRA = 0x00;                                                    /*方向输入*/
 0000 2224              clr R2
 0002 2ABA              out 0x1a,R2
 0004                   .dbline 21
 0004           ;       PORTA = 0xFF;                                                   /*打开上拉*/
 0004 8FEF              ldi R24,255
 0006 8BBB              out 0x1b,R24
 0008                   .dbline 22
 0008           ;       DDRB = 0x00;                                                    /*方向输出*/
 0008 27BA              out 0x17,R2
 000A                   .dbline 23
 000A           ;       PORTB = 0xFF;                                                   /*输出高电平*/
 000A 88BB              out 0x18,R24
 000C                   .dbline 24
 000C           ;       DDRC = 0x00;                                                    /*不用的IO口建议设置为输入带上拉*/
 000C 24BA              out 0x14,R2
 000E                   .dbline 25
 000E           ;       PORTC = 0xFF;
 000E 85BB              out 0x15,R24
 0010                   .dbline 26
 0010           ;       DDRD = 0x00;
 0010 21BA              out 0x11,R2
 0012                   .dbline 27
 0012           ;       PORTD = 0xFF;
 0012 82BB              out 0x12,R24
 0014                   .dbline 28
 0014           ;       DDRE = 0x00;
 0014 22B8              out 0x2,R2
 0016                   .dbline 29
 0016           ;       PORTE = 0xFF;
 0016 83B9              out 0x3,R24
 0018                   .dbline 30
 0018           ;       DDRF = 0x00;
 0018 20926100          sts 97,R2
 001C                   .dbline 31
 001C           ;       PORTF = 0xFF;
 001C 80936200          sts 98,R24
 0020                   .dbline 32
 0020           ;       DDRG = 0x00;
 0020 20926400          sts 100,R2
 0024                   .dbline 33
 0024           ;       PORTG = 0xFF;
 0024 80936500          sts 101,R24
 0028                   .dbline -2
 0028           L1:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e timer1_init _timer1_init fV
                        .even
 002A           _timer1_init::
 002A                   .dbline -1
 002A                   .dbline 36
 002A           ; }
 002A           ; 
 002A           ; void timer1_init(void) {
 002A                   .dbline 37
 002A           ;       TCCR1B = 0x00;
 002A 2224              clr R2
 002C 2EBC              out 0x2e,R2
 002E                   .dbline 38
 002E           ;       TCNT1H = 0x00;
 002E 2DBC              out 0x2d,R2
 0030                   .dbline 39
 0030           ;       TCNT1L = 0x00;
 0030 2CBC              out 0x2c,R2
 0032                   .dbline 40
 0032           ;       TCCR1A = 0x00;
 0032 2FBC              out 0x2f,R2
 0034                   .dbline 41
 0034           ;       TCCR1B = 0x05;
 0034 85E0              ldi R24,5
 0036 8EBD              out 0x2e,R24
 0038                   .dbline -2
 0038           L2:
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbend
 003A                   .dbfunc e init _init fV
                        .even
 003A           _init::
 003A                   .dbline -1
 003A                   .dbline 43
 003A           ; }
 003A           ; void init(void) {
 003A                   .dbline 45
 003A           ;       
 003A           ;       CLI();                                                                  /*关闭中断源 */
 003A F894              cli
 003C                   .dbline 46
 003C           ;       statusMachine = ST_START;                               /*变量初始化*/
 003C 80EF              ldi R24,240
 003E 80930600          sts _statusMachine,R24
 0042                   .dbline 47
 0042           ;       paramControllerInit=0x00;
 0042 2224              clr R2
 0044 20920800          sts _paramControllerInit,R2
 0048                   .dbline 48
 0048           ;       prgMode=0;
 0048 20920700          sts _prgMode,R2
 004C                   .dbline 50
 004C           ; 
 004C           ;       io_init();
 004C D9DF              xcall _io_init
 004E                   .dbline 58
 004E           ;       
 004E           ;       /*入口判断*/
 004E           ;       /*
 004E           ;       在执行强行跳转指令"jmp 0x0000"前,对寄存器MCUCR的操作是将中断向量地址
 004E           ;       迁移回应用程序区的头部,因为在ICCAVR环境中编译Bootloader程序时,其自动
 004E           ;       把中断向量地址迁移到了Bootloader区的头部。
 004E           ;       */
 004E           ;       if (PINE & (1 << PE7)) {                                /*判断按键是否按下*/
 004E 0F9B              sbis 0x1,7
 0050 07C0              rjmp L4
 0052                   .dbline 58
 0052                   .dbline 59
 0052           ;               MCUCR = 0x01;
 0052 81E0              ldi R24,1
 0054 85BF              out 0x35,R24
 0056                   .dbline 60
 0056           ;               MCUCR = 0x00;                                           /*将中断向量表迁移到应用程序区头部*/
 0056 2224              clr R2
 0058 25BE              out 0x35,R2
 005A                   .dbline 61
 005A           ;               RAMPZ = 0x00;                                           /*RAMPZ清零初始化*/
 005A 2BBE              out 0x3b,R2
 005C                   .dbline 62
 005C           ;               asm("jmp 0x000000\n");;                         /*进入应用程序区*/
 005C 0C940000          jmp 0x000000
 0060                   
 0060                   .dbline 62
 0060                   .dbline 63
 0060           ;               }
 0060           L4:
 0060                   .dbline 65
 0060           ; 
 0060           ;       DDRB = 0xFF;
 0060 8FEF              ldi R24,255
 0062 87BB              out 0x17,R24
 0064                   .dbline 66
 0064           ;       uart0_init();                                                   /*串口初始化函数*/
 0064 0E940000          xcall _uart0_init
 0068                   .dbline 67
 0068           ;       timer1_init();                                                  /*定时器T初始化*/
 0068 E0DF              xcall _timer1_init
 006A                   .dbline -2
 006A           L3:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\019-BOOT\init.c
 0000           _address::
 0000                   .blkb 4
 0004                   .dbsym e address _address l
 0004           _msgSize::
 0004                   .blkb 2
 0006                   .dbsym e msgSize _msgSize i
 0006           _statusMachine::
 0006                   .blkb 1
 0007                   .dbsym e statusMachine _statusMachine c
 0007           _prgMode::
 0007                   .blkb 1
 0008                   .dbsym e prgMode _prgMode c
 0008           _paramControllerInit::
 0008                   .blkb 1
 0009                   .dbsym e paramControllerInit _paramControllerInit c
 0009           _resetPolarity::
 0009                   .blkb 1
 000A                   .dbsym e resetPolarity _resetPolarity c
 000A           _clockSpeed::
 000A                   .blkb 1
 000B                   .dbsym e clockSpeed _clockSpeed c
 000B           _checkSum::
 000B                   .blkb 1
 000C                   .dbsym e checkSum _checkSum c
 000C           _seqNumber::
 000C                   .blkb 1
 000D                   .dbsym e seqNumber _seqNumber c
 000D           _msg_buffer::
 000D                   .blkb 300
 0139                   .dbsym e msg_buffer _msg_buffer A[300:300]c

⌨️ 快捷键说明

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