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

📄 main.lis

📁 M16控制,从键盘输入字符,当输入字符达到10个的时候,终端和LCD都显示所接收到的字符
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
                        .area data(ram, con, rel)
 0000                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0000           _data::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0002                   .blkb 2
                        .area idata
 0002 0000              .byte 0,0
                        .area data(ram, con, rel)
 0004                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0004                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0004                   .dbsym e data _data A[4:4]c
 0004           _CNT::
 0004                   .blkb 1
                        .area idata
 0004 00                .byte 0
                        .area data(ram, con, rel)
 0005                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0005                   .dbsym e CNT _CNT c
 0005           _RsBytes::
 0005                   .blkb 2
                        .area idata
 0005 0000              .word 0
                        .area data(ram, con, rel)
 0007                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0007                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0007                   .dbsym e RsBytes _RsBytes I
 0007           _flag::
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data(ram, con, rel)
 0008                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0008                   .dbsym e flag _flag c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0000                   .dbfunc e main _main fV
 0000           ;            msg -> R20,R21
                        .even
 0000           _main::
 0000 2297              sbiw R28,2
 0002                   .dbline -1
 0002                   .dbline 15
 0002           ; #define MAIN_C
 0002           ; #include "includes.h"
 0002           ; /***************************/
 0002           ; /*串口通信*/
 0002           ; /*晶振为4MHz*/
 0002           ; /*波特率为9600bps*/
 0002           ; /*发送采用查询方式,中断采用接收方式*/
 0002           ; /*当收到的字符达到所定义的长度时,则在LCD上显示收到的字符*/
 0002           ; /***************************/
 0002           ; #define BufSize 1
 0002           ; unsigned char RsBuf[BufSize];  //定义接收缓冲器
 0002           ; int RsBytes = 0;
 0002           ; unsigned char flag = 0;
 0002           ; void main(void)
 0002           ; {
 0002                   .dbline 16
 0002           ;     unsigned char *msg = "Usart Test!\n";    
 0002 40E0              ldi R20,<L2
 0004 50E0              ldi R21,>L2
 0006                   .dbline 17
 0006           ;     SREG |= (1<<7);  //使能全局中断
 0006 7894              bset 7
 0008                   .dbline 18
 0008           ;     UsartInit();
 0008 0E940000          xcall _UsartInit
 000C                   .dbline 19
 000C           ;     Init_LCD();
 000C 0E940000          xcall _Init_LCD
 0010                   .dbline 20
 0010           ;     SendNbyte(msg,12);
 0010 2CE0              ldi R18,12
 0012 8A01              movw R16,R20
 0014 0E940000          xcall _SendNbyte
 0018                   .dbline 21
 0018           ;     PutStr("Test Ok\n");   
 0018 00E0              ldi R16,<L3
 001A 10E0              ldi R17,>L3
 001C 0E940000          xcall _PutStr
 0020                   .dbline 22
 0020           ;     LCD_DisplayString(1,1,"Usart Test!");
 0020 80E0              ldi R24,<L4
 0022 90E0              ldi R25,>L4
 0024 9983              std y+1,R25
 0026 8883              std y+0,R24
 0028 21E0              ldi R18,1
 002A 01E0              ldi R16,1
 002C 0E940000          xcall _LCD_DisplayString
 0030                   .dbline 23
 0030           ;     delay_nms(2000);
 0030 00ED              ldi R16,2000
 0032 17E0              ldi R17,7
 0034 0E940000          xcall _delay_nms
 0038                   .dbline 24
 0038           ;     LCD_Clear();
 0038 0E940000          xcall _LCD_Clear
 003C                   .dbline 25
 003C           ;     LCD_DisplayString(1,1,"Recive is :");    
 003C 80E0              ldi R24,<L5
 003E 90E0              ldi R25,>L5
 0040 9983              std y+1,R25
 0042 8883              std y+0,R24
 0044 21E0              ldi R18,1
 0046 01E0              ldi R16,1
 0048 0E940000          xcall _LCD_DisplayString
 004C 16C0              xjmp L7
 004E           L6:
 004E                   .dbline 27
 004E           ;     while(1)
 004E           ;     {
 004E                   .dbline 28
 004E           ;         if(flag)
 004E 20900700          lds R2,_flag
 0052 2220              tst R2
 0054 91F0              breq L9
 0056           X0:
 0056                   .dbline 29
 0056           ;         {
 0056                   .dbline 30
 0056           ;            PutStr(RsBuf);
 0056 00E0              ldi R16,<_RsBuf
 0058 10E0              ldi R17,>_RsBuf
 005A 0E940000          xcall _PutStr
 005E                   .dbline 31
 005E           ;            LCD_DisplayString(2,1,RsBuf);           
 005E 80E0              ldi R24,<_RsBuf
 0060 90E0              ldi R25,>_RsBuf
 0062 9983              std y+1,R25
 0064 8883              std y+0,R24
 0066 21E0              ldi R18,1
 0068 02E0              ldi R16,2
 006A 0E940000          xcall _LCD_DisplayString
 006E                   .dbline 32
 006E           ;            PutChar('\n');
 006E 0AE0              ldi R16,10
 0070 0E940000          xcall _PutChar
 0074                   .dbline 33
 0074           ;            flag = 0;
 0074 2224              clr R2
 0076 20920700          sts _flag,R2
 007A                   .dbline 34
 007A           ;         }
 007A           L9:
 007A                   .dbline 35
 007A           ;     }
 007A           L7:
 007A                   .dbline 26
 007A E9CF              xjmp L6
 007C           X1:
 007C                   .dbline -2
 007C           L1:
 007C                   .dbline 0 ; func end
 007C 2296              adiw R28,2
 007E 0895              ret
 0080                   .dbsym r msg 20 pc
 0080                   .dbend
                        .area vector(rom, abs)
                        .org 44
 002C 0C944000          jmp _uart0_rx_isr
                        .area text(rom, con, rel)
 0080                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0080                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
                        .even
 0080           _uart0_rx_isr::
 0080 2A92              st -y,R2
 0082 3A92              st -y,R3
 0084 8A93              st -y,R24
 0086 9A93              st -y,R25
 0088 EA93              st -y,R30
 008A FA93              st -y,R31
 008C 2FB6              in R2,0x3f
 008E 2A92              st -y,R2
 0090                   .dbline -1
 0090                   .dbline 43
 0090           ; }
 0090           ; 
 0090           ; //接收中断子程序  
 0090           ; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
 0090           ; void uart0_rx_isr(void)
 0090           ; //#pragma vector = USART_RXC_vect
 0090           ;     //__interrupt void RXC_isr( void )
 0090           ; {
 0090                   .dbline 44
 0090           ;     RsBuf[RsBytes] = UDR;
 0090 80E0              ldi R24,<_RsBuf
 0092 90E0              ldi R25,>_RsBuf
 0094 E0910500          lds R30,_RsBytes
 0098 F0910600          lds R31,_RsBytes+1
 009C E80F              add R30,R24
 009E F91F              adc R31,R25
 00A0 2CB0              in R2,0xc
 00A2 2082              std z+0,R2
 00A4                   .dbline 45
 00A4           ;     RsBytes ++;
 00A4 80910500          lds R24,_RsBytes
 00A8 90910600          lds R25,_RsBytes+1
 00AC 0196              adiw R24,1
 00AE 90930600          sts _RsBytes+1,R25
 00B2 80930500          sts _RsBytes,R24
 00B6                   .dbline 47
 00B6           ;     //PutChar(RsBuf[RsBytes]); //回显
 00B6           ;     if(RsBytes > BufSize)
 00B6 81E0              ldi R24,1
 00B8 90E0              ldi R25,0
 00BA 20900500          lds R2,_RsBytes
 00BE 30900600          lds R3,_RsBytes+1
 00C2 8215              cp R24,R2
 00C4 9305              cpc R25,R3
 00C6 44F4              brge L12
 00C8           X2:
 00C8                   .dbline 48
 00C8           ;     {   
 00C8                   .dbline 49
 00C8           ;         flag = 1;
 00C8 80930700          sts _flag,R24
 00CC                   .dbline 50
 00CC           ;         RsBytes = 0;
 00CC 2224              clr R2
 00CE 3324              clr R3
 00D0 30920600          sts _RsBytes+1,R3
 00D4 20920500          sts _RsBytes,R2
 00D8                   .dbline 51
 00D8           ;     }
 00D8           L12:
 00D8                   .dbline -2
 00D8           L11:
 00D8                   .dbline 0 ; func end
 00D8 2990              ld R2,y+
 00DA 2FBE              out 0x3f,R2
 00DC F991              ld R31,y+
 00DE E991              ld R30,y+
 00E0 9991              ld R25,y+
 00E2 8991              ld R24,y+
 00E4 3990              ld R3,y+
 00E6 2990              ld R2,y+
 00E8 1895              reti
 00EA                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\新建文件夹\usart_icc\cfile\main.c
 0000           _RsBuf::
 0000                   .blkb 1
 0001                   .dbsym e RsBuf _RsBuf A[1:1]c
 0001           _KeyDown::
 0001                   .blkb 1
 0002                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0002                   .dbsym e KeyDown _KeyDown c
 0002           _KeyUp::
 0002                   .blkb 1
 0003                   .dbsym e KeyUp _KeyUp c
                        .area data(ram, con, rel)
 0008                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0008           L5:
 0008                   .blkb 12
                        .area idata
 0008 526563697665206973203A00  .byte 'R,'e,'c,'i,'v,'e,32,'i,'s,32,58,0
                        .area data(ram, con, rel)
 0014                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0014           L4:
 0014                   .blkb 12
                        .area idata
 0014 557361727420546573742100  .byte 'U,'s,'a,'r,'t,32,'T,'e,'s,'t,33,0
                        .area data(ram, con, rel)
 0020                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0020           L3:
 0020                   .blkb 9
                        .area idata
 0020 54657374204F6B0A00        .byte 'T,'e,'s,'t,32,'O,'k,10,0
                        .area data(ram, con, rel)
 0029                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0029           L2:
 0029                   .blkb 13
                        .area idata
 0029 55736172742054657374210A00        .byte 'U,'s,'a,'r,'t,32,'T,'e,'s,'t,33,10,0
                        .area data(ram, con, rel)
 0036                   .dbfile E:\新建文件夹\usart_icc\includes\main.h
 0036           ; }  
 0036           ; 

⌨️ 快捷键说明

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