📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile ..\source\bms\main.c
.area data(ram, con, rel)
0000 .dbfile ..\source\bms\main.c
0000 _StartTaskStack::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile ..\source\bms\main.c
0001 .blkb 169
.area idata
0001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
003D 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0079 00000000000000000000 .word 0,0,0,0,0
0083 00000000000000000000 .word 0,0,0,0,0
008D 00000000000000000000 .word 0,0,0,0,0
0097 00000000000000000000 .word 0,0,0,0,0
00A1 000000000000000000 .byte 0,0,0,0,0,0,0,0,0
.area data(ram, con, rel)
00AA .dbfile ..\source\bms\main.c
00AA .dbfile C:\DOCUME~1\Administrator\桌面\MEGA16\source\bms\main.c
00AA .dbsym e StartTaskStack _StartTaskStack A[170:170]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\MEGA16\source\bms\main.c
0000 .dbfunc e OSTick_Init _OSTick_Init fV
.even
0000 _OSTick_Init::
0000 .dbline -1
0000 .dbline 10
0000 ; #include "..\source\CPU_source\includes.h"
0000 ;
0000 ; void StartTask(void *pdata);
0000 ; OS_STK StartTaskStack[OS_TASK_START_STK_SIZE]={0};
0000 ; /*
0000 ; ******************************************************************************
0000 ; * Timer0 overflow 用于系统时钟节拍
0000 ; *****************************************************************************
0000 ; */
0000 ; void OSTick_Init (void){
0000 .dbline 11
0000 ; OS_ENTER_CRITICAL();
0000 0A93 st -y,r16
0002 0FB7 in r16,0x3F
0004 F894 cli
0006 0F93 push r16
0008 0991 ld r16,y+
000A .dbline 11
000A .dbline 15
000A ; //WDTCR=(1<<WDTOE)|(1<<WDE);
000A ; //WDTCR=(1<<WDE); //17ms看门狗
000A ;
000A ; TIMSK &= ~(BIT(TOIE0) /* | BIT(OCIE0) */); /*disable TC0 interrupts */
000A 89B7 in R24,0x39
000C 8E7F andi R24,254
000E 89BF out 0x39,R24
0010 .dbline 16
0010 ; TCCR0 = 0x02; /* /8 */
0010 82E0 ldi R24,2
0012 83BF out 0x33,R24
0014 .dbline 17
0014 ; TCNT0 = 0x05; /* Counter overflow initial , 0.5ms @ 4MHz */
0014 85E0 ldi R24,5
0016 82BF out 0x32,R24
0018 .dbline 18
0018 ; TIMSK |= BIT(TOIE0); /* enable OVF-interrupt */
0018 89B7 in R24,0x39
001A 8160 ori R24,1
001C 89BF out 0x39,R24
001E .dbline 19
001E ; OS_EXIT_CRITICAL(); // enable global interrupt
001E 0A93 st -y,r16
0020 0F91 pop r16
0022 0FBF out 0x3F,r16
0024 0991 ld r16,y+
0026 .dbline 19
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e UartInit _UartInit fV
0028 ; temp -> R10,R11
0028 ; divisor -> R10,R11
0028 ; baud_rate -> y+6
.even
0028 _UartInit::
0028 0E940000 xcall push_arg4
002C 0E940000 xcall push_xgsetF00C
0030 .dbline -1
0030 .dbline 23
0030 ; }
0030 ; //串口的初始化
0030 ; void UartInit(INT32U baud_rate)
0030 ; {
0030 .dbline 26
0030 ; INT16U divisor;
0030 ; INT16U temp; /* -------- INITIALIZE THE SERIAL PORT ---------- */
0030 ; temp = (CPU_CLK_FREQ * 2) / (16 * baud_rate);
0030 2E80 ldd R2,y+6
0032 3F80 ldd R3,y+7
0034 4884 ldd R4,y+8
0036 5984 ldd R5,y+9
0038 40E1 ldi R20,16
003A 50E0 ldi R21,0
003C 60E0 ldi R22,0
003E 70E0 ldi R23,0
0040 5A92 st -y,R5
0042 4A92 st -y,R4
0044 3A92 st -y,R3
0046 2A92 st -y,R2
0048 8A01 movw R16,R20
004A 9B01 movw R18,R22
004C 0E940000 xcall empy32u
0050 40E0 ldi R20,0
0052 52E1 ldi R21,18
0054 6AE7 ldi R22,122
0056 70E0 ldi R23,0
0058 3A93 st -y,R19
005A 2A93 st -y,R18
005C 1A93 st -y,R17
005E 0A93 st -y,R16
0060 8A01 movw R16,R20
0062 9B01 movw R18,R22
0064 0E940000 xcall div32u
0068 5801 movw R10,R16
006A .dbline 27
006A ; divisor = (temp + 1) / 2 - 1; /* Compute baud rate divisor and round off */
006A C501 movw R24,R10
006C 0196 adiw R24,1
006E 9695 lsr R25
0070 8795 ror R24
0072 0197 sbiw R24,1
0074 5C01 movw R10,R24
0076 .dbline 29
0076 ;
0076 ; UCSRB = 0x00; //disable while setting baud rate
0076 2224 clr R2
0078 2AB8 out 0xa,R2
007A .dbline 30
007A ; UCSRA = 0x00;
007A 2BB8 out 0xb,R2
007C .dbline 31
007C ; UCSRC = 0x06;
007C 86E0 ldi R24,6
007E 80BD out 0x20,R24
0080 .dbline 32
0080 ; UBRRL = divisor & 0x00FF; //set baud rate lo 19.2k
0080 C501 movw R24,R10
0082 9070 andi R25,0
0084 89B9 out 0x9,R24
0086 .dbline 33
0086 ; UBRRH = divisor >> 8;; //set baud rate hi
0086 1501 movw R2,R10
0088 232C mov R2,R3
008A 3324 clr R3
008C 20BC out 0x20,R2
008E .dbline 33
008E .dbline 34
008E ; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
008E 88E9 ldi R24,152
0090 8AB9 out 0xa,R24
0092 .dbline -2
0092 L2:
0092 .dbline 0 ; func end
0092 0E940000 xcall pop_xgsetF00C
0096 2496 adiw R28,4
0098 0895 ret
009A .dbsym r temp 10 i
009A .dbsym r divisor 10 i
009A .dbsym l baud_rate 6 l
009A .dbend
009A .dbfunc e System_Init _System_Init fV
.even
009A _System_Init::
009A .dbline -1
009A .dbline 40
009A ; // Uart0RingBuf.RxIndex=0;
009A ;
009A ; }
009A ;
009A ; void System_Init(void)
009A ; {
009A .dbline 42
009A ; //端口的初始化
009A ; PORTA = 0x00; //output
009A 2224 clr R2
009C 2BBA out 0x1b,R2
009E .dbline 43
009E ; DDRA = 0xff;
009E 8FEF ldi R24,255
00A0 8ABB out 0x1a,R24
00A2 .dbline 45
00A2 ;
00A2 ; PORTB = 0xFF; //output
00A2 88BB out 0x18,R24
00A4 .dbline 46
00A4 ; DDRB = 0xFF;
00A4 87BB out 0x17,R24
00A6 .dbline 48
00A6 ;
00A6 ; PORTC = 0x00; // output only
00A6 25BA out 0x15,R2
00A8 .dbline 49
00A8 ; DDRC = 0xFF;
00A8 84BB out 0x14,R24
00AA .dbline 51
00AA ;
00AA ; PORTD = 0X00; //串口
00AA 22BA out 0x12,R2
00AC .dbline 52
00AC ; DDRD = 0X02;
00AC 82E0 ldi R24,2
00AE 81BB out 0x11,R24
00B0 .dbline 55
00B0 ;
00B0 ; //串口的初始化
00B0 ; UartInit(9600);
00B0 00E8 ldi R16,128
00B2 15E2 ldi R17,37
00B4 20E0 ldi R18,0
00B6 30E0 ldi R19,0
00B8 B7DF xcall _UartInit
00BA .dbline 59
00BA ; //ad采集的初始化
00BA ;
00BA ; /*蜂鸣器*/
00BA ; PORTA&=~(1<<PA6);
00BA DE98 cbi 0x1b,6
00BC .dbline 60
00BC ; delay_nms(100);
00BC 04E6 ldi R16,100
00BE 10E0 ldi R17,0
00C0 0E940000 xcall _delay_nms
00C4 .dbline 61
00C4 ; PORTA|=(1<<PA6); //PB2控制蜂鸣器
00C4 DE9A sbi 0x1b,6
00C6 .dbline -2
00C6 L3:
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbend
00C8 .dbfunc e main _main fV
.even
00C8 _main::
00C8 2397 sbiw R28,3
00CA .dbline -1
00CA .dbline 66
00CA ;
00CA ; }
00CA ; // Start
00CA ; void main(void)
00CA ; {
00CA .dbline 67
00CA ; System_Init();
00CA E7DF xcall _System_Init
00CC .dbline 69
00CC ;
00CC ; OSTaskStkSize = OS_TASK_IDLE_STK_SIZE; /* Setup the default stack size */
00CC 84E6 ldi R24,100
00CE 90E0 ldi R25,0
00D0 90930100 sts _OSTaskStkSize+1,R25
00D4 80930000 sts _OSTaskStkSize,R24
00D8 .dbline 70
00D8 ; OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD; /* Setup the default hardware stack size */
00D8 84E1 ldi R24,20
00DA 90930100 sts _OSTaskStkSizeHard+1,R25
00DE 80930000 sts _OSTaskStkSizeHard,R24
00E2 .dbline 71
00E2 ; OSInit(); // OS init
00E2 0E940000 xcall _OSInit
00E6 .dbline 73
00E6 ;
00E6 ; OSTaskStkSize = OS_TASK_START_STK_SIZE; /* Setup the total stack size */
00E6 8AEA ldi R24,170
00E8 90E0 ldi R25,0
00EA 90930100 sts _OSTaskStkSize+1,R25
00EE 80930000 sts _OSTaskStkSize,R24
00F2 .dbline 74
00F2 ; OSTaskStkSizeHard = OS_TASK_START_STK_SIZE_HARD; /* Setup the hardware stack size */
00F2 80E2 ldi R24,32
00F4 90930100 sts _OSTaskStkSizeHard+1,R25
00F8 80930000 sts _OSTaskStkSizeHard,R24
00FC .dbline 75
00FC ; OSTaskCreate( StartTask,
00FC 81E0 ldi R24,1
00FE 8A83 std y+2,R24
0100 80E0 ldi R24,<_StartTaskStack
0102 90E0 ldi R25,>_StartTaskStack
0104 E0910000 lds R30,_OSTaskStkSize
0108 F0910100 lds R31,_OSTaskStkSize+1
010C 3197 sbiw R30,1
010E E80F add R30,R24
0110 F91F adc R31,R25
0112 F983 std y+1,R31
0114 E883 std y+0,R30
0116 2227 clr R18
0118 3327 clr R19
011A 00E0 ldi R16,<PL_StartTask
011C 10E0 ldi R17,>PL_StartTask
011E 0E940000 xcall _OSTaskCreate
0122 .dbline 80
0122 ; (void *)0,
0122 ; (OS_STK *)&StartTaskStack[OSTaskStkSize - 1],
0122 ; OS_TASK_START_PRIO);
0122 ;
0122 ; OSStart();
0122 0E940000 xcall _OSStart
0126 .dbline -2
0126 L4:
0126 .dbline 0 ; func end
0126 2396 adiw R28,3
0128 0895 ret
012A .dbend
012A ; }
.area func_lit
0000 0000 PL_StartTask: .word `_StartTask
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -