📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTEC~1\main.c
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 41
; /****************************************Copyright (c)**************************************************
; ** ADEmbed Development Co.,LTD.
; ** http://www.adembed.com
; **--------------File Info-------------------------------------------------------------------------------
; ** File name: main.c
; ** Last modified Date: 2008-12-13
; ** Last Version: 1.0
; ** Descriptions: UART Echo Test.
; **
; **------------------------------------------------------------------------------------------------------
; ** Created by: junbolu
; ** Created date: 2008-12-13
; ** Version: 1.0
; ** Descriptions:
; **
; **------------------------------------------------------------------------------------------------------
; ** Modified by:
; ** Modified date:
; ** Version:
; ** Descriptions:
; **
; **------------------------------------------------------------------------------------------------------
; **ICC-AVR application builder : 2008-12-13
; **Target : M16
; **Crystal: 7.3728Mhz
; *******************************************************************************************************/
;
; #include <iom16v.h>
; #include <macros.h>
; #include "main.h"
; #include "Define.h"
;
; unsigned char GET_Rx;
; unsigned char GET_RxNum;
; unsigned char GET_RxBUF[10];
;
; void Uart_Init(void);
; void USART_TXD(uint8 data);
;
; void main(void)
; {
.dbline 42
; Uart_Init(); //TART初始化
xcall _Uart_Init
.dbline 43
; SEI(); //全局中断使能
sei
.dbline 45
;
; GET_Rx=False;
clr R2
sts _GET_Rx,R2
.dbline 46
; for(;;)
L2:
.dbline 47
.dbline 48
lds R24,_GET_Rx
cpi R24,1
brne L2
.dbline 49
.dbline 50
lds R16,_GET_RxBUF
xcall _USART_TXD
.dbline 51
clr R2
sts _GET_Rx,R2
.dbline 52
.dbline 53
.dbline 46
.dbline 46
xjmp L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Uart_Init _Uart_Init fV
.even
_Uart_Init::
.dbline -1
.dbline 58
; {
; if(GET_Rx==True)
; {
; USART_TXD(GET_RxBUF[0]);
; GET_Rx=False;
; }
; }
; }
;
; //===============================================================
; void Uart_Init(void) //UART初始化
; {
.dbline 62
;
; //设置侦格式
; //异步,8位数据,无奇偶校验,一个停止位,无倍速
; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
ldi R24,134
out 0x20,R24
.dbline 65
;
; //设置波特率
; UBRRL= (F_osc/Baud_rate/16-1)%256;
ldi R24,47
out 0x9,R24
.dbline 66
; UBRRH= (F_osc/Baud_rate/16-1)/256;
clr R2
out 0x20,R2
.dbline 69
;
; //使能接收中断,使能接收,使能发送
; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
ldi R24,152
out 0xa,R24
.dbline -2
L8:
.dbline 0 ; func end
ret
.dbend
.dbfunc e USART_TXD _USART_TXD fV
; data -> R16
.even
_USART_TXD::
.dbline -1
.dbline 75
; }
;
;
; //===============================================================
; void USART_TXD(uint8 data) //发送采用查询方式
; {
L10:
.dbline 76
L11:
.dbline 76
; while( !(UCSRA & BIT(UDRE)) );
sbis 0xb,5
rjmp L10
.dbline 77
; UDR=data;
out 0xc,R16
L13:
.dbline 78
L14:
.dbline 78
; while( !(UCSRA & BIT(TXC )) );
sbis 0xb,6
rjmp L13
.dbline 79
; UCSRA|=BIT(TXC);
sbi 0xb,6
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.area vector(rom, abs)
.org 44
jmp _USART_RXC
.area text(rom, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTEC~1\main.c
.dbfunc e USART_RXC _USART_RXC fV
.even
_USART_RXC::
st -y,R2
st -y,R24
in R2,0x3f
st -y,R2
.dbline -1
.dbline 86
; }
;
; //=======================================================================
;
; #pragma interrupt_handler USART_RXC:12
; void USART_RXC(void)
; {
.dbline 87
; GET_RxBUF[0]=UDR;
in R2,0xc
sts _GET_RxBUF,R2
.dbline 88
; GET_Rx=True;
ldi R24,1
sts _GET_Rx,R24
.dbline -2
L16:
ld R2,y+
out 0x3f,R2
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTEC~1\main.c
_GET_RxBUF::
.blkb 10
.dbsym e GET_RxBUF _GET_RxBUF A[10:10]c
_GET_RxNum::
.blkb 1
.dbsym e GET_RxNum _GET_RxNum c
_GET_Rx::
.blkb 1
.dbsym e GET_Rx _GET_Rx c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -