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

📄 main.lis

📁 bootloader
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 8
 0000           ; //ICC-AVR application builder : 2006-11-11 12:55:39
 0000           ; // Target : M16
 0000           ; // Crystal: 7.3728Mhz
 0000           ; 
 0000           ; #include "config.h"
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 9
 0000           ;  PORTA = 0x03;
 0000 83E0              ldi R24,3
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 10
 0004           ;  DDRA  = 0x03;
 0004 8ABB              out 0x1a,R24
 0006                   .dbline 11
 0006           ;  PORTB = 0x00;
 0006 2224              clr R2
 0008 28BA              out 0x18,R2
 000A                   .dbline 12
 000A           ;  DDRB  = 0x00;
 000A 27BA              out 0x17,R2
 000C                   .dbline 13
 000C           ;  PORTC = 0x00; //m103 output only
 000C 25BA              out 0x15,R2
 000E                   .dbline 14
 000E           ;  DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 15
 0010           ;  PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012                   .dbline 16
 0012           ;  DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014           L2:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e init_devices _init_devices fV
                        .even
 0016           _init_devices::
 0016                   .dbline -1
 0016                   .dbline 21
 0016           ; }
 0016           ; 
 0016           ; //call this routine to initialize all peripherals
 0016           ; void init_devices(void)
 0016           ; {
 0016                   .dbline 23
 0016           ;  //stop errant interrupts until set up
 0016           ;  CLI(); //disable all interrupts
 0016 F894              cli
 0018                   .dbline 24
 0018           ;  port_init();
 0018 F3DF              xcall _port_init
 001A                   .dbline 26
 001A           ; 
 001A           ;  MCUCR = 0x00;
 001A 2224              clr R2
 001C 25BE              out 0x35,R2
 001E                   .dbline 27
 001E           ;  GICR  = 0x00;
 001E 2BBE              out 0x3b,R2
 0020                   .dbline 28
 0020           ;  TIMSK = 0x00; //timer interrupt sources
 0020 29BE              out 0x39,R2
 0022                   .dbline 29
 0022           ;  Com_init();  //串行口初始化
 0022 0E940000          xcall _Com_init
 0026                   .dbline 30
 0026           ;  SEI(); //re-enable interrupts
 0026 7894              sei
 0028                   .dbline -2
 0028           L3:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e Delay _Delay fV
 002A           ;              i -> R16
 002A           ;              j -> R18
                        .even
 002A           _Delay::
 002A                   .dbline -1
 002A                   .dbline 35
 002A           ;  //all peripherals are now initialized
 002A           ; }
 002A           ; 
 002A           ; void Delay(void)  //软件延时
 002A           ; {
 002A                   .dbline 37
 002A           ;  unsigned char i,j;
 002A           ;   for(i=200;i>0;i--)
 002A 08EC              ldi R16,200
 002C 0DC0              xjmp L8
 002E           L5:
 002E                   .dbline 38
 002E           ;    {
 002E                   .dbline 39
 002E           ;       for(j=200;j>0;j--)
 002E 28EC              ldi R18,200
 0030 01C0              xjmp L12
 0032           L9:
 0032                   .dbline 40
 0032           L10:
 0032                   .dbline 39
 0032 2A95              dec R18
 0034           L12:
 0034                   .dbline 39
 0034 2224              clr R2
 0036 2216              cp R2,R18
 0038 E0F3              brlo L9
 003A                   .dbline 41
 003A           ;       ;
 003A           ;       for(j=200;j>0;j--)
 003A 28EC              ldi R18,200
 003C 01C0              xjmp L16
 003E           L13:
 003E                   .dbline 42
 003E           L14:
 003E                   .dbline 41
 003E 2A95              dec R18
 0040           L16:
 0040                   .dbline 41
 0040 2224              clr R2
 0042 2216              cp R2,R18
 0044 E0F3              brlo L13
 0046                   .dbline 43
 0046           L6:
 0046                   .dbline 37
 0046 0A95              dec R16
 0048           L8:
 0048                   .dbline 37
 0048 2224              clr R2
 004A 2016              cp R2,R16
 004C 80F3              brlo L5
 004E                   .dbline -2
 004E           L4:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbsym r i 16 c
 0050                   .dbsym r j 18 c
 0050                   .dbend
 0050                   .dbfunc e main _main fV
 0050           ;       SIO_buff -> y+2
                        .even
 0050           _main::
 0050 2697              sbiw R28,6
 0052                   .dbline -1
 0052                   .dbline 47
 0052           ;       ;
 0052           ;    }
 0052           ; }
 0052           ; 
 0052           ; void main(void)
 0052           ; {
 0052                   .dbline 49
 0052           ;   uint8 SIO_buff[4];  //定义串口数据缓冲区
 0052           ;   init_devices();
 0052 E1DF              xcall _init_devices
 0054                   .dbline 51
 0054           ;   //指示单片机正常开始工作,一亮,二亮,都亮,都灭
 0054           ;   PORTA = 0x02;       //1脚为高,0脚为低,0脚灯亮
 0054 82E0              ldi R24,2
 0056 8BBB              out 0x1b,R24
 0058                   .dbline 52
 0058           ;   Delay();           //延时
 0058 E8DF              xcall _Delay
 005A                   .dbline 53
 005A           ;   PORTA = 0x01;            //0脚为高,1脚为低,1脚灯亮
 005A 81E0              ldi R24,1
 005C 8BBB              out 0x1b,R24
 005E                   .dbline 54
 005E           ;   Delay();           //延时
 005E E5DF              xcall _Delay
 0060                   .dbline 55
 0060           ;   PORTA = 0x00;      //同时亮
 0060 2224              clr R2
 0062 2BBA              out 0x1b,R2
 0064                   .dbline 56
 0064           ;   Delay();           //延时
 0064 E2DF              xcall _Delay
 0066                   .dbline 57
 0066           ;   PORTA = 0x03;      //同时灭
 0066 83E0              ldi R24,3
 0068 8BBB              out 0x1b,R24
 006A                   .dbline 59
 006A           ;   
 006A           ;   Com_putstring ("ww",2,&RTbuf_UART0); //输出一个字符串到串行口
 006A 80E0              ldi R24,<_RTbuf_UART0
 006C 90E0              ldi R25,>_RTbuf_UART0
 006E 9983              std y+1,R25
 0070 8883              std y+0,R24
 0072 22E0              ldi R18,2
 0074 00E0              ldi R16,<L18
 0076 10E0              ldi R17,>L18
 0078 0E940000          xcall _Com_putstring
 007C 2FC0              xjmp L20
 007E           L19:
 007E                   .dbline 62
 007E           ; 
 007E           ;   while(1)
 007E           ;   {
 007E                   .dbline 63
 007E           ;    if(Com_R_count(&RTbuf_UART0)!=0)
 007E 00E0              ldi R16,<_RTbuf_UART0
 0080 10E0              ldi R17,>_RTbuf_UART0
 0082 0E940000          xcall _Com_R_count
 0086 0023              tst R16
 0088 F9F0              breq L22
 008A                   .dbline 64
 008A           ;      {
 008A                   .dbline 65
 008A           ;            Com_getstring (SIO_buff,1,&RTbuf_UART0);
 008A 80E0              ldi R24,<_RTbuf_UART0
 008C 90E0              ldi R25,>_RTbuf_UART0
 008E 9983              std y+1,R25
 0090 8883              std y+0,R24
 0092 21E0              ldi R18,1
 0094 8E01              movw R16,R28
 0096 0E5F              subi R16,254  ; offset = 2
 0098 1F4F              sbci R17,255
 009A 0E940000          xcall _Com_getstring
 009E                   .dbline 66
 009E           ;                Com_Rbuf_Clear(&RTbuf_UART0); //清空buffer
 009E 00E0              ldi R16,<_RTbuf_UART0
 00A0 10E0              ldi R17,>_RTbuf_UART0
 00A2 0E940000          xcall _Com_Rbuf_Clear
 00A6                   .dbline 67
 00A6           ;                if(SIO_buff[0]==1)  //接收到一个一
 00A6 8A81              ldd R24,y+2
 00A8 8130              cpi R24,1
 00AA 71F4              brne L24
 00AC                   .dbline 68
 00AC           ;                {
 00AC                   .dbline 69
 00AC           ;                   Com_putstring ("ok!!",4,&RTbuf_UART0); //输出一个字符串到串行口
 00AC 80E0              ldi R24,<_RTbuf_UART0
 00AE 90E0              ldi R25,>_RTbuf_UART0
 00B0 9983              std y+1,R25
 00B2 8883              std y+0,R24
 00B4 24E0              ldi R18,4
 00B6 00E0              ldi R16,<L26
 00B8 10E0              ldi R17,>L26
 00BA 0E940000          xcall _Com_putstring
 00BE                   .dbline 70
 00BE           ;                   PORTA = 0x00;      //同时亮
 00BE 2224              clr R2
 00C0 2BBA              out 0x1b,R2
 00C2                   .dbline 71
 00C2           ;                       Delay();           //延时
 00C2 B3DF              xcall _Delay
 00C4                   .dbline 72
 00C4           ;                       PORTA = 0x03;      //同时灭
 00C4 83E0              ldi R24,3
 00C6 8BBB              out 0x1b,R24
 00C8                   .dbline 73
 00C8           ;                }
 00C8           L24:
 00C8                   .dbline 74
 00C8           ;      } //end of if(Com_R_count(&RTbuf_UART0)!=0)
 00C8           L22:
 00C8                   .dbline 75
 00C8 B0DF              xcall _Delay
 00CA                   .dbline 76
 00CA 80E0              ldi R24,<_RTbuf_UART0
 00CC 90E0              ldi R25,>_RTbuf_UART0
 00CE 9983              std y+1,R25
 00D0 8883              std y+0,R24
 00D2 24E0              ldi R18,4
 00D4 00E0              ldi R16,<L27
 00D6 10E0              ldi R17,>L27
 00D8 0E940000          xcall _Com_putstring
 00DC                   .dbline 77
 00DC           L20:
 00DC                   .dbline 61
 00DC D0CF              xjmp L19
 00DE           X0:
 00DE                   .dbline -2
 00DE           L17:
 00DE 2696              adiw R28,6
 00E0                   .dbline 0 ; func end
 00E0 0895              ret
 00E2                   .dbsym l SIO_buff 2 A[4:4]c
 00E2                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
 0000           L27:
 0000                   .blkb 5
                        .area idata
 0000 7777303000        .byte 'w,'w,48,48,0
                        .area data(ram, con, rel)
 0005                   .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
 0005           L26:
 0005                   .blkb 5
                        .area idata
 0005 6F6B212100        .byte 'o,'k,33,33,0
                        .area data(ram, con, rel)
 000A                   .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
 000A           L18:
 000A                   .blkb 3
                        .area idata
 000A 777700            .byte 'w,'w,0
                        .area data(ram, con, rel)
 000D                   .dbfile D:\桌面\avr程序设计\串口通讯范例\main.c

⌨️ 快捷键说明

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