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

📄 main.lis

📁 mega16的rs232通讯程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 + -