📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _Enter::
0000 .blkb 2
.area idata
0000 E03E .byte 224,62
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 E3EE .byte 227,238
.area data(ram, con, rel)
0004 .dbfile G:\ly\mega\m16rs\main.c
0004 .dbsym e Enter _Enter A[4:4]c
0004 _RunBuffer::
0004 .blkb 2
.area idata
0004 8344 .byte 131,'D
.area data(ram, con, rel)
0006 .dbfile G:\ly\mega\m16rs\main.c
0006 .blkb 2
.area idata
0006 357E .byte 53,126
.area data(ram, con, rel)
0008 .dbfile G:\ly\mega\m16rs\main.c
0008 .dbsym e RunBuffer _RunBuffer A[4:4]c
0008 _StopBuffer::
0008 .blkb 2
.area idata
0008 7D5E .byte 125,94
.area data(ram, con, rel)
000A .dbfile G:\ly\mega\m16rs\main.c
000A .blkb 2
.area idata
000A E59E .byte 229,158
.area data(ram, con, rel)
000C .dbfile G:\ly\mega\m16rs\main.c
000C .dbsym e StopBuffer _StopBuffer A[4:4]c
000C _n:
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile G:\ly\mega\m16rs\main.c
000D .dbsym s n _n c
000D _RxBuffer::
000D .blkb 2
.area idata
000D 0000 .byte 0,0
.area data(ram, con, rel)
000F .dbfile G:\ly\mega\m16rs\main.c
000F .blkb 2
.area idata
000F 0000 .byte 0,0
.area data(ram, con, rel)
0011 .dbfile G:\ly\mega\m16rs\main.c
0011 .dbsym e RxBuffer _RxBuffer A[4:4]c
.area text(rom, con, rel)
0000 .dbfile G:\ly\mega\m16rs\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 42
0000 ; //ICC-AVR application builder : 2008-4-9 17:20:49
0000 ; // Target : M16
0000 ; // Crystal: 16.000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define DataR 0x90
0000 ; #define RSTA1 0x4a
0000 ; #define RSTA2 0x30
0000 ;
0000 ; #define TSTA1 0x6b
0000 ; #define TSTA2 0x4c
0000 ; #define DataT 0xaf
0000 ;
0000 ; #define En 0xe0
0000 ; #define Run 0x83
0000 ; #define Stop 0x7d
0000 ;
0000 ; #define OK 1
0000 ; #define NG 0
0000 ; #define ONE 0x90
0000 ; #define TWO 0x91
0000 ; #define THREE 0x92
0000 ; #define FOUR 0x93
0000 ; #define COMM 0x94
0000 ;
0000 ; unsigned char Enter[4] = {En,0x3e,0xe3,0xee};
0000 ; unsigned char RunBuffer[4] = {Run,0x44,0x35,0x7e};
0000 ; unsigned char StopBuffer[4] = {Stop,0x5e,0xe5,0x9e};
0000 ;
0000 ; static unsigned char n = 0;
0000 ; static unsigned char len;
0000 ; static unsigned char flag;
0000 ;
0000 ; unsigned char RxBuffer[4] = {0,0,0,0};
0000 ; unsigned char TxBuffer[4];
0000 ;
0000 ; enum COMCHE{ENTER,RUN,STOP}comcheck;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 43
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 44
0004 ; DDRA = 0xff;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 45
0008 ; PORTB = 0x00;
0008 28BA out 0x18,R2
000A .dbline 46
000A ; DDRB = 0x00;
000A 27BA out 0x17,R2
000C .dbline 47
000C ; PORTC = 0x00; //m103 output only
000C 25BA out 0x15,R2
000E .dbline 48
000E ; DDRC = 0xff;
000E 84BB out 0x14,R24
0010 .dbline 49
0010 ; PORTD = 0x00;
0010 22BA out 0x12,R2
0012 .dbline 50
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e uart0_init _uart0_init fV
.even
0016 _uart0_init::
0016 .dbline -1
0016 .dbline 59
0016 ; }
0016 ;
0016 ; //UART0 initialize
0016 ; // desired baud rate: 9600
0016 ; // actual: baud rate:9615 (0.2%)
0016 ; // char size: 8 bit
0016 ; // parity: Disabled
0016 ; void uart0_init(void)
0016 ; {
0016 .dbline 60
0016 ; UCSRB = 0x00; //disable while setting baud rate
0016 2224 clr R2
0018 2AB8 out 0xa,R2
001A .dbline 61
001A ; UCSRA = 0x00;
001A 2BB8 out 0xb,R2
001C .dbline 62
001C ; UCSRC = BIT(URSEL) | 0x06;
001C 86E8 ldi R24,134
001E 80BD out 0x20,R24
0020 .dbline 63
0020 ; UBRRL = 0x67; //set baud rate lo
0020 87E6 ldi R24,103
0022 89B9 out 0x9,R24
0024 .dbline 64
0024 ; UBRRH = 0x00; //set baud rate hi
0024 20BC out 0x20,R2
0026 .dbline 65
0026 ; UCSRB = 0xD8;
0026 88ED ldi R24,216
0028 8AB9 out 0xa,R24
002A .dbline -2
002A L2:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
.area vector(rom, abs)
.org 44
002C 0C941600 jmp _uart0_rx_isr
.area text(rom, con, rel)
002C .dbfile G:\ly\mega\m16rs\main.c
002C .dbfunc e uart0_rx_isr _uart0_rx_isr fV
002C ; temp -> <dead>
.even
002C _uart0_rx_isr::
002C 2A92 st -y,R2
002E 0A93 st -y,R16
0030 1A93 st -y,R17
0032 8A93 st -y,R24
0034 9A93 st -y,R25
0036 EA93 st -y,R30
0038 2FB6 in R2,0x3f
003A 2A92 st -y,R2
003C .dbline -1
003C .dbline 70
003C ; }
003C ;
003C ; #pragma interrupt_handler uart0_rx_isr:12
003C ; void uart0_rx_isr(void)
003C ; {unsigned char temp;
003C .dbline 71
003C ; if (flag == NG){
003C 20900500 lds R2,_flag
0040 2220 tst R2
0042 09F0 breq X2
0044 79C0 xjmp L4
0046 X2:
0046 .dbline 71
0046 .dbline 72
0046 00910C00 lds R16,_n
004A 1127 clr R17
004C 0030 cpi R16,0
004E 0107 cpc R16,R17
0050 E9F0 breq L9
0052 X0:
0052 0130 cpi R16,1
0054 E0E0 ldi R30,0
0056 1E07 cpc R17,R30
0058 19F1 breq L12
005A 0230 cpi R16,2
005C E0E0 ldi R30,0
005E 1E07 cpc R17,R30
0060 61F1 breq L15
0062 0330 cpi R16,3
0064 E0E0 ldi R30,0
0066 1E07 cpc R17,R30
0068 09F4 brne X3
006A 3BC0 xjmp L18
006C X3:
006C 0430 cpi R16,4
006E E0E0 ldi R30,0
0070 1E07 cpc R17,R30
0072 09F4 brne X4
0074 3FC0 xjmp L19
0076 X4:
0076 0530 cpi R16,5
0078 E0E0 ldi R30,0
007A 1E07 cpc R17,R30
007C 09F4 brne X5
007E 43C0 xjmp L21
0080 X5:
0080 0630 cpi R16,6
0082 E0E0 ldi R30,0
0084 1E07 cpc R17,R30
0086 09F4 brne X6
0088 47C0 xjmp L23
008A X6:
008A 56C0 xjmp L7
008C X1:
008C .dbline 72
008C ; switch (n){
008C L9:
008C .dbline 73
008C ; case 0: if (UDR == RSTA1) n++;break; //头1
008C 8CB1 in R24,0xc
008E 8A34 cpi R24,74
0090 09F0 breq X7
0092 52C0 xjmp L7
0094 X7:
0094 .dbline 73
0094 80910C00 lds R24,_n
0098 8F5F subi R24,255 ; addi 1
009A 80930C00 sts _n,R24
009E .dbline 73
009E 4CC0 xjmp L7
00A0 L12:
00A0 .dbline 74
00A0 ; case 1: if (UDR == RSTA2) n++; //头2
00A0 8CB1 in R24,0xc
00A2 8033 cpi R24,48
00A4 31F4 brne L13
00A6 .dbline 74
00A6 80910C00 lds R24,_n
00AA 8F5F subi R24,255 ; addi 1
00AC 80930C00 sts _n,R24
00B0 43C0 xjmp L7
00B2 L13:
00B2 .dbline 75
00B2 ; else n = 0; break;
00B2 2224 clr R2
00B4 20920C00 sts _n,R2
00B8 .dbline 75
00B8 3FC0 xjmp L7
00BA L15:
00BA .dbline 76
00BA ; case 2: if (UDR >= ONE && UDR <= COMM)//长度
00BA 8CB1 in R24,0xc
00BC 8039 cpi R24,144
00BE 68F0 brlo L16
00C0 84E9 ldi R24,148
00C2 2CB0 in R2,0xc
00C4 8215 cp R24,R2
00C6 48F0 brlo L16
00C8 .dbline 77
00C8 ; {len = UDR; n++;}
00C8 .dbline 77
00C8 2CB0 in R2,0xc
00CA 20920600 sts _len,R2
00CE .dbline 77
00CE 80910C00 lds R24,_n
00D2 8F5F subi R24,255 ; addi 1
00D4 80930C00 sts _n,R24
00D8 .dbline 77
00D8 2FC0 xjmp L7
00DA L16:
00DA .dbline 78
00DA ; else n = 0;
00DA 2224 clr R2
00DC 20920C00 sts _n,R2
00E0 .dbline 79
00E0 ; break;
00E0 2BC0 xjmp L7
00E2 L18:
00E2 .dbline 80
00E2 ; case 3: RxBuffer[0] = UDR; n++; break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -