📄 uart.s
字号:
.module UART.C
.area vector(rom, abs)
.org 44
jmp _USART_Recive_Complete_handler
.org 48
jmp _USART_Data_Register_Empty_handler
.org 52
jmp _USART_Transmit_Complete_handler
.area text(rom, con, rel)
.dbfile F:\自编程序\M16\4-4keyboard\UART.C
.dbfunc e USART_Init _USART_Init fV
.even
_USART_Init::
.dbline -1
.dbline 6
; #include <iom16v.h>
; #pragma interrupt_handler USART_Recive_Complete_handler:12
; #pragma interrupt_handler USART_Data_Register_Empty_handler:13
; #pragma interrupt_handler USART_Transmit_Complete_handler:14
; void USART_Init(void)
; {
.dbline 14
; //{{WIZARD_MAP(UART)
; // crystal: 8M
; // Baud Rate: 9600
; // Character Size: 8-bit
; // Mode: Asynchronous
; // Parity: Disabled
; // Stop Bit: 1-bit
; UBRRL = 0x33;
ldi R24,51
out 0x9,R24
.dbline 15
; UBRRH = 0x00;
clr R2
out 0x20,R2
.dbline 16
; UCSRA = 0x00;
out 0xb,R2
.dbline 17
; UCSRC = 0x86;
ldi R24,134
out 0x20,R24
.dbline 18
; UCSRB = 0x18;
ldi R24,24
out 0xa,R24
.dbline -2
.dbline 22
; //UCSRB|=0X80;//开接收结束中断
; //UCSRB|=0X40;//开发送结束中断
; //UCSRB|=0X20;//开数据寄存器空中断
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e USART_Transmit _USART_Transmit fV
; data -> R16
.even
_USART_Transmit::
.dbline -1
.dbline 24
; void USART_Transmit(unsigned char data)
; {
L3:
.dbline 26
L4:
.dbline 26
; /* 等待发送缓冲器为空 */
; while ( !( UCSRA & (1<<UDRE)) );
sbis 0xb,5
rjmp L3
.dbline 28
; /* 将数据放入缓冲器,发送数据 */
; UDR = data;
out 0xc,R16
.dbline -2
.dbline 29
; }
L2:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e USART_Recive _USART_Recive fc
.even
_USART_Recive::
.dbline -1
.dbline 31
; unsigned char USART_Recive(void)
; {
L7:
.dbline 33
L8:
.dbline 33
; /* 等待接收数据*/
; while ( !(UCSRA & (1<<RXC)) );
sbis 0xb,7
rjmp L7
.dbline 35
; /* 从缓冲器中获取并返回数据*/
; return UDR;
in R16,0xc
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
.dbfunc e USART_Recive_Complete_handler _USART_Recive_Complete_handler fV
.even
_USART_Recive_Complete_handler::
.dbline -1
.dbline 38
; }
; void USART_Recive_Complete_handler(void)
; {
.dbline -2
.dbline 40
;
; }
L10:
.dbline 0 ; func end
reti
.dbend
.dbfunc e USART_Data_Register_Empty_handler _USART_Data_Register_Empty_handler fV
.even
_USART_Data_Register_Empty_handler::
.dbline -1
.dbline 42
; void USART_Data_Register_Empty_handler(void)
; {
.dbline -2
.dbline 44
;
; }void USART_Transmit_Complete_handler(void)
L11:
.dbline 0 ; func end
reti
.dbend
.dbfunc e USART_Transmit_Complete_handler _USART_Transmit_Complete_handler fV
.even
_USART_Transmit_Complete_handler::
.dbline -1
.dbline 45
; {
.dbline -2
.dbline 47
;
; }
L12:
.dbline 0 ; func end
reti
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -