📄 init.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 + -