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

📄 usart.lis

📁 M16-Mp3.rar
💻 LIS
字号:
                        .module Usart.c
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\..\..\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\Usart.c
 0000                   .dbfile C:\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\Usart.c
 0000                   .dbfunc e Usart_Init _Usart_Init fV
 0000           ;           temp -> R10,R11
 0000           ;           baud -> R10,R11
                        .even
 0000           _Usart_Init::
 0000 0E940000          xcall push_xgsetF00C
 0004 5801              movw R10,R16
 0006                   .dbline -1
 0006                   .dbline 22
 0006           ; 
 0006           ; //---------------------------- USART串口驱动程序 ----------------------------
 0006           ; //
 0006           ; //USART串口驱动程序:发送与接收
 0006           ; //整理日期:2009.7.8
 0006           ; //
 0006           ; //----------------------------------------------------------------------------
 0006           ; 
 0006           ; #include "Usart.h"
 0006           ; 
 0006           ; //定义fosc频率
 0006           ; #define fosc 16000000  
 0006           ; 
 0006           ; 
 0006           ; //---------------------------------
 0006           ; //
 0006           ; // USART初始化函数 
 0006           ; // baud:波特率
 0006           ; //
 0006           ; //---------------------------------
 0006           ; void Usart_Init(unsigned int baud)
 0006           ; {
 0006                   .dbline 24
 0006           ; unsigned int temp;
 0006           ; temp = fosc/16/baud-1;
 0006 1501              movw R2,R10
 0008 4424              clr R4
 000A 5524              clr R5
 000C 40E4              ldi R20,64
 000E 52E4              ldi R21,66
 0010 6FE0              ldi R22,15
 0012 70E0              ldi R23,0
 0014 5A92              st -y,R5
 0016 4A92              st -y,R4
 0018 3A92              st -y,R3
 001A 2A92              st -y,R2
 001C 8A01              movw R16,R20
 001E 9B01              movw R18,R22
 0020 0E940000          xcall div32s
 0024 41E0              ldi R20,1
 0026 50E0              ldi R21,0
 0028 60E0              ldi R22,0
 002A 70E0              ldi R23,0
 002C 1801              movw R2,R16
 002E 2901              movw R4,R18
 0030 241A              sub R2,R20
 0032 350A              sbc R3,R21
 0034 460A              sbc R4,R22
 0036 570A              sbc R5,R23
 0038 5101              movw R10,R2
 003A                   .dbline 25
 003A           ; UBRRH=(unsigned char )(temp>>8);
 003A 232C              mov R2,R3
 003C 3324              clr R3
 003E 20BC              out 0x20,R2
 0040                   .dbline 26
 0040           ; UBRRL=(unsigned char) (temp);
 0040 A9B8              out 0x9,R10
 0042                   .dbline 27
 0042           ; UCSRB=(1<<RXEN)|(1<<TXEN);
 0042 88E1              ldi R24,24
 0044 8AB9              out 0xa,R24
 0046                   .dbline 28
 0046           ; UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
 0046 8EE8              ldi R24,142
 0048 80BD              out 0x20,R24
 004A                   .dbline -2
 004A           L1:
 004A                   .dbline 0 ; func end
 004A 0C940000          xjmp pop_xgsetF00C
 004E                   .dbsym r temp 10 i
 004E                   .dbsym r baud 10 i
 004E                   .dbend
 004E                   .dbfunc e Usart_Transmit _Usart_Transmit fV
 004E           ;           data -> R16
                        .even
 004E           _Usart_Transmit::
 004E                   .dbline -1
 004E                   .dbline 39
 004E           ; }
 004E           ; 
 004E           ; 
 004E           ; //-----------------------------------
 004E           ; //
 004E           ; // USART发送函数 
 004E           ; // data:要发送的数据
 004E           ; //
 004E           ; //-----------------------------------
 004E           ; void Usart_Transmit(unsigned char data)
 004E           ; {
 004E           L3:
 004E                   .dbline 40
 004E           ; while(!(UCSRA&(1<<UDRE)));
 004E           L4:
 004E                   .dbline 40
 004E 5D9B              sbis 0xb,5
 0050 FECF              rjmp L3
 0052           X0:
 0052                   .dbline 41
 0052           ; UDR=data;
 0052 0CB9              out 0xc,R16
 0054                   .dbline -2
 0054           L2:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbsym r data 16 c
 0056                   .dbend
 0056                   .dbfunc e Usart_Receive _Usart_Receive fc
                        .even
 0056           _Usart_Receive::
 0056                   .dbline -1
 0056                   .dbline 52
 0056           ; }
 0056           ; 
 0056           ; 
 0056           ; //-----------------------------------
 0056           ; //
 0056           ; // USART接收函数 
 0056           ; // UDR:返回的数据
 0056           ; //
 0056           ; //-----------------------------------
 0056           ; unsigned char Usart_Receive(void)
 0056           ; {
 0056           L7:
 0056                   .dbline 53
 0056           ; while(!(UCSRA&(1<<RXC)));
 0056           L8:
 0056                   .dbline 53
 0056 5F9B              sbis 0xb,7
 0058 FECF              rjmp L7
 005A           X1:
 005A                   .dbline 54
 005A           ; return UDR;
 005A 0CB1              in R16,0xc
 005C                   .dbline -2
 005C           L6:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbend
 005E           ; }

⌨️ 快捷键说明

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