📄 uart.s
字号:
.module uart.c
.area vector(rom, abs)
.org 72
jmp _uart0_rx_isr
.area text(rom, con, rel)
.dbfile D:\new_sd\uart.c
.dbfunc e uart0_rx_isr _uart0_rx_isr fV
; status -> R16
; data -> R16
.even
_uart0_rx_isr::
st -y,R16
in R16,0x3f
st -y,R16
.dbline -1
.dbline 16
;
; #include "GLO.H"
; #include "uart.h"
; //--------------------------------------------------------------------
; /*
; uart0接收结束中断 与PL-2303通信
; */
; //中断向量
; //协议帧格式
; //SYNC + LENGTH(2 byte) + COMMAND + DATA + CHECKSUM
; //
; //--------------------------------------------------------------------
; #pragma interrupt_handler uart0_rx_isr:19
;
; void uart0_rx_isr(void)
; {
.dbline 18
; unsigned char status,data;
; status = UCSR0A;
in R16,0xb
.dbline 19
; data = UDR0;
in R16,0xc
.dbline 25
; /* if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
; {
; }
; // PORTA = led_7[data];
; */
; data = UDR0;
in R16,0xc
.dbline -2
L1:
ld R16,y+
out 0x3f,R16
ld R16,y+
.dbline 0 ; func end
reti
.dbsym r status 16 c
.dbsym r data 16 c
.dbend
.dbfunc e USART_Transmit _USART_Transmit fV
; data -> R16
.even
_USART_Transmit::
.dbline -1
.dbline 44
; }
; //--------------------------------------------------------------------
; /*
; uart0 寄存器空中断(发送中断)
; */
; //--------------------------------------------------------------------
; /*
; #pragma interrupt_handler uart0_udre_isr:20
;
; void uart0_udre_isr(void)
; {
; while (!(UCSRA & DATA_REGISTER_EMPTY)); // 等待发送寄存器空
; UDR = data;
;
; }
; */
;
; void USART_Transmit(unsigned char data)
; {
L3:
.dbline 45
L4:
.dbline 45
; while (!(UCSR0A & DATA_REGISTER_EMPTY)); // 等待发送寄存器空
sbis 0xb,5
rjmp L3
.dbline 46
; UDR0 = data; // 发送数据
out 0xc,R16
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -