📄 uart.lis
字号:
.module UART.C
.area vector(rom, abs)
.org 44
002C 0C941100 jmp _USART_Recive_Complete_handler
.org 48
0030 0C941200 jmp _USART_Data_Register_Empty_handler
.org 52
0034 0C941300 jmp _USART_Transmit_Complete_handler
.area text(rom, con, rel)
0000 .dbfile J:\自编程序\M16\485bus\UART.C
0000 .dbfunc e USART_Init _USART_Init fV
.even
0000 _USART_Init::
0000 .dbline -1
0000 .dbline 7
0000 ; #include<iom16v.h>
0000 ; #include<macros.h>
0000 ; #pragma interrupt_handler USART_Recive_Complete_handler:12
0000 ; #pragma interrupt_handler USART_Data_Register_Empty_handler:13
0000 ; #pragma interrupt_handler USART_Transmit_Complete_handler:14
0000 ; void USART_Init(void)
0000 ; {
0000 .dbline 15
0000 ; //{{WIZARD_MAP(UART)
0000 ; // crystal: 8M
0000 ; // Baud Rate: 9600
0000 ; // Character Size: 8-bit
0000 ; // Mode: Asynchronous
0000 ; // Parity: Disabled
0000 ; // Stop Bit: 1-bit
0000 ; UBRR= 0x33;
0000 83E3 ldi R24,51
0002 89B9 out 0x9,R24
0004 .dbline 17
0004 ;
0004 ; UCSRA = 0x00;
0004 2224 clr R2
0006 2BB8 out 0xb,R2
0008 .dbline 18
0008 ; UCSRC = 0x86;
0008 86E8 ldi R24,134
000A 80BD out 0x20,R24
000C .dbline 19
000C ; UCSRB = 0x18;
000C 88E1 ldi R24,24
000E 8AB9 out 0xa,R24
0010 .dbline -2
0010 .dbline 23
0010 ; //UCSRB|=0X80;//开接收结束中断
0010 ; //UCSRB|=0X40;//开发送结束中断
0010 ; //UCSRB|=0X20;//开数据寄存器空中断
0010 ; }
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e USART_Transmit _USART_Transmit fV
0012 ; data -> R16
.even
0012 _USART_Transmit::
0012 .dbline -1
0012 .dbline 25
0012 ; void USART_Transmit(unsigned char data)
0012 ; {
0012 L3:
0012 .dbline 27
0012 L4:
0012 .dbline 27
0012 ; /* 等待发送缓冲器为空 */
0012 ; while ( !( UCSRA & (1<<UDRE)) );
0012 5D9B sbis 0xb,5
0014 FECF rjmp L3
0016 .dbline 29
0016 ; /* 将数据放入缓冲器,发送数据 */
0016 ; UDR = data;
0016 0CB9 out 0xc,R16
0018 .dbline -2
0018 .dbline 30
0018 ; }
0018 L2:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r data 16 c
001A .dbend
001A .dbfunc e USART_Recive _USART_Recive fc
.even
001A _USART_Recive::
001A .dbline -1
001A .dbline 32
001A ; unsigned char USART_Recive(void)
001A ; {
001A L7:
001A .dbline 34
001A L8:
001A .dbline 34
001A ; /* 等待接收数据*/
001A ; while ( !(UCSRA & (1<<RXC)) );
001A 5F9B sbis 0xb,7
001C FECF rjmp L7
001E .dbline 36
001E ; /* 从缓冲器中获取并返回数据*/
001E ; return UDR;
001E 0CB1 in R16,0xc
0020 .dbline -2
0020 L6:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
0022 .dbfunc e USART_Recive_Complete_handler _USART_Recive_Complete_handler fV
.even
0022 _USART_Recive_Complete_handler::
0022 .dbline -1
0022 .dbline 39
0022 ; }
0022 ; void USART_Recive_Complete_handler(void)
0022 ; {
0022 .dbline -2
0022 .dbline 41
0022 ;
0022 ; }
0022 L10:
0022 .dbline 0 ; func end
0022 1895 reti
0024 .dbend
0024 .dbfunc e USART_Data_Register_Empty_handler _USART_Data_Register_Empty_handler fV
.even
0024 _USART_Data_Register_Empty_handler::
0024 .dbline -1
0024 .dbline 43
0024 ; void USART_Data_Register_Empty_handler(void)
0024 ; {
0024 .dbline -2
0024 .dbline 45
0024 ;
0024 ; }void USART_Transmit_Complete_handler(void)
0024 L11:
0024 .dbline 0 ; func end
0024 1895 reti
0026 .dbend
0026 .dbfunc e USART_Transmit_Complete_handler _USART_Transmit_Complete_handler fV
.even
0026 _USART_Transmit_Complete_handler::
0026 .dbline -1
0026 .dbline 46
0026 ; {
0026 .dbline -2
0026 .dbline 48
0026 ;
0026 ; }
0026 L12:
0026 .dbline 0 ; func end
0026 1895 reti
0028 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -