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

📄 usart1.lis

📁 AVR单片机串口异步通信,通过电脑串口助手使电脑和单片机运行简单的数据通讯
💻 LIS
字号:
                        .module usart1.c
                        .area data(ram, con, rel)
 0000           _strings::
 0000                   .blkb 19
                        .area idata
 0000 B4F3D1A7C9FAB5E7D7D3B4B4D0C2D0AD  .byte 180,243,209,167,201,250,181,231,215,211,180,180,208,194,208,173
 0010 BBE100            .byte 187,225,0
                        .area data(ram, con, rel)
 0013                   .dbfile F:\LX\USART\usart1.c
 0013                   .dbsym e strings _strings A[19:19]c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\LX\USART\usart1.c
 0000                   .dbfunc e main _main fV
 0000           ;            rec -> <dead>
 0000           ;              i -> R20
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 11
 0000           ; #include<iom16v.h>
 0000           ; #define key (PIND&0x04)          //定义按键PD2
 0000           ; /*****************函数原型声明************************/
 0000           ; void USART_Init(unsigned int baud);
 0000           ; void USART_Transmit(unsigned char dat);
 0000           ; void delayms(unsigned int t);
 0000           ; unsigned char USART_Receive(void);
 0000           ; unsigned char strings[]="大学生电子创新协会";
 0000           ; /******************主函数****************************/
 0000           ; void main(void)
 0000           ;  { unsigned char rec,i;
 0000                   .dbline 12
 0000           ;     PORTB=0xff;
 0000 8FEF              ldi R24,255
 0002 88BB              out 0x18,R24
 0004                   .dbline 13
 0004           ;     DDRB=0xff;
 0004 87BB              out 0x17,R24
 0006                   .dbline 14
 0006           ;     PORTD=0x07;
 0006 87E0              ldi R24,7
 0008 82BB              out 0x12,R24
 000A                   .dbline 15
 000A           ;       DDRD=0x02;
 000A 82E0              ldi R24,2
 000C 81BB              out 0x11,R24
 000E                   .dbline 16
 000E           ;     USART_Init(71);//波特为9600,外部晶振11.0592
 000E 07E4              ldi R16,71
 0010 10E0              ldi R17,0
 0012 0FD0              xcall _USART_Init
 0014                   .dbline 17
 0014           ;       for(i=0;i<18;i++)
 0014 4427              clr R20
 0016 09C0              xjmp L5
 0018           L2:
 0018                   .dbline 18
 0018 80E0              ldi R24,<_strings
 001A 90E0              ldi R25,>_strings
 001C E42F              mov R30,R20
 001E FF27              clr R31
 0020 E80F              add R30,R24
 0022 F91F              adc R31,R25
 0024 0081              ldd R16,z+0
 0026 0BD0              xcall _USART_Transmit
 0028           L3:
 0028                   .dbline 17
 0028 4395              inc R20
 002A           L5:
 002A                   .dbline 17
 002A 4231              cpi R20,18
 002C A8F3              brlo L2
 002E           L6:
 002E                   .dbline 20
 002E                   .dbline 34
 002E           L7:
 002E                   .dbline 19
 002E FFCF              xjmp L6
 0030           X0:
 0030                   .dbline -2
 0030           L1:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym l rec 1 c
 0032                   .dbsym r i 20 c
 0032                   .dbend
 0032                   .dbfunc e USART_Init _USART_Init fV
 0032           ;           baud -> R16,R17
                        .even
 0032           _USART_Init::
 0032                   .dbline -1
 0032                   .dbline 38
 0032           ;    USART_Transmit(strings[i]);
 0032           ;     while(1)
 0032           ;       { /*    
 0032           ;         if(key==0){    //按键按下发送一字节数据
 0032           ;            delayms(10);
 0032           ;                if(key==0){
 0032           ;                while(!key);
 0032           ;                for(i=0;i<18;i++)
 0032           ;                USART_Transmit(strings[i]);
 0032           ;                       }
 0032           ;             }
 0032           ;     if(UCSRA&(1<<RXC))    //如果接收缓存区有数据*********
 0032           ;   {
 0032           ;    rec=USART_Receive(); 
 0032           ;    USART_Transmit(rec); 
 0032           ;          }*/
 0032           ;    }           
 0032           ; }     
 0032           ; /******************USART初始化***********************/    
 0032           ; void USART_Init(unsigned int baud)
 0032           ;  {
 0032                   .dbline 40
 0032           ;   //UBRRH=(unsigned char)(baud/256);
 0032           ;   UBRRL=(unsigned char)baud;  //设定波特率
 0032 09B9              out 0x9,R16
 0034                   .dbline 41
 0034           ;   UCSRB=0x18;                 //使能接收和发送
 0034 88E1              ldi R24,24
 0036 8AB9              out 0xa,R24
 0038                   .dbline 42
 0038           ;   UCSRC=0x8e;                 //设置帧格式8数据位,2停止位
 0038 8EE8              ldi R24,142
 003A 80BD              out 0x20,R24
 003C                   .dbline -2
 003C           L9:
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r baud 16 i
 003E                   .dbend
 003E                   .dbfunc e USART_Transmit _USART_Transmit fV
 003E           ;            dat -> R16
                        .even
 003E           _USART_Transmit::
 003E                   .dbline -1
 003E                   .dbline 46
 003E           ;  }
 003E           ; /************发送函数****************************/
 003E           ; void USART_Transmit(unsigned char dat)
 003E           ;  {
 003E           L11:
 003E                   .dbline 47
 003E           L12:
 003E                   .dbline 47
 003E           ;    while(!(UCSRA&(1<<UDRE)));
 003E 5D9B              sbis 0xb,5
 0040 FECF              rjmp L11
 0042                   .dbline 48
 0042           ;    UDR=dat;
 0042 0CB9              out 0xc,R16
 0044                   .dbline -2
 0044           L10:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbsym r dat 16 c
 0046                   .dbend
 0046                   .dbfunc e USART_Receive _USART_Receive fc
                        .even
 0046           _USART_Receive::
 0046                   .dbline -1
 0046                   .dbline 52
 0046           ;  }
 0046           ; /************接收函数*****************************/
 0046           ; unsigned char USART_Receive(void)
 0046           ;  {
 0046           L15:
 0046                   .dbline 53
 0046           L16:
 0046                   .dbline 53
 0046           ;   while(!(UCSRA&(1<<RXC)));
 0046 5F9B              sbis 0xb,7
 0048 FECF              rjmp L15
 004A                   .dbline 54
 004A           ;   return UDR;
 004A 0CB1              in R16,0xc
 004C                   .dbline -2
 004C           L14:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbend
 004E                   .dbfunc e delayms _delayms fV
 004E           ;              i -> R20,R21
 004E           ;              j -> R22,R23
 004E           ;              t -> R16,R17
                        .even
 004E           _delayms::
 004E 0E940000          xcall push_gset2
 0052                   .dbline -1
 0052                   .dbline 58
 0052           ;  }
 0052           ; /**********延时*********************************/
 0052           ; void delayms(unsigned int t)
 0052           ;  {
 0052                   .dbline 60
 0052           ;    unsigned int i,j;
 0052           ;    for(i=0;i<t;i++)
 0052 4427              clr R20
 0054 5527              clr R21
 0056 0BC0              xjmp L22
 0058           L19:
 0058                   .dbline 61
 0058 6627              clr R22
 005A 7727              clr R23
 005C 02C0              xjmp L26
 005E           L23:
 005E                   .dbline 61
 005E           L24:
 005E                   .dbline 61
 005E 6F5F              subi R22,255  ; offset = 1
 0060 7F4F              sbci R23,255
 0062           L26:
 0062                   .dbline 61
 0062 6436              cpi R22,100
 0064 E0E0              ldi R30,0
 0066 7E07              cpc R23,R30
 0068 D0F3              brlo L23
 006A           L20:
 006A                   .dbline 60
 006A 4F5F              subi R20,255  ; offset = 1
 006C 5F4F              sbci R21,255
 006E           L22:
 006E                   .dbline 60
 006E 4017              cp R20,R16
 0070 5107              cpc R21,R17
 0072 90F3              brlo L19
 0074                   .dbline -2
 0074           L18:
 0074 0E940000          xcall pop_gset2
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r i 20 i
 007A                   .dbsym r j 22 i
 007A                   .dbsym r t 16 i
 007A                   .dbend

⌨️ 快捷键说明

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