📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_GET_TxBUF1::
.blkb 18
.area idata
.byte 'w,'w,'w,46,'a,'d,'e,'m,'b,'e,'d,46,'c,'o,'m,32
.byte 32,32
.area data(ram, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTTX~1\main.c
.dbsym e GET_TxBUF1 _GET_TxBUF1 A[18:18]c
_GET_TxBUF2::
.blkb 18
.area idata
.byte 'U,'A,'R,'T,32,'T,'x,32,'T,'e,'s,'t,46,46,46,46
.byte 46,46
.area data(ram, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTTX~1\main.c
.dbsym e GET_TxBUF2 _GET_TxBUF2 A[18:18]c
.area text(rom, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTTX~1\main.c
.dbfunc e Delay_us _Delay_us fV
; time -> R16,R17
.even
_Delay_us::
.dbline -1
.dbline 42
; /****************************************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 Tx 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_TxNum;
; unsigned char GET_TxBUF1[18]="www.adembed.com ";
; unsigned char GET_TxBUF2[18]="UART Tx Test......";
;
;
; void Uart_Init(void);
; void USART_TXD(uint8 data);
;
; void Delay_us(unsigned int time)
; {
L2:
.dbline 43
L3:
.dbline 43
; while(time--);
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L2
tst R3
brne L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r time 16 i
.dbend
.dbfunc e Delay_ms _Delay_ms fV
; time -> R20,R21
.even
_Delay_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 47
; }
;
; void Delay_ms(unsigned int time)
; {
xjmp L7
L6:
.dbline 49
.dbline 50
ldi R16,1000
ldi R17,3
xcall _Delay_us
.dbline 51
L7:
.dbline 48
; while(time--)
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L6
tst R3
brne L6
X1:
.dbline -2
L5:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 55
; {
; Delay_us(1000);
; }
; }
;
; void main(void)
; {
.dbline 56
; Uart_Init(); //TART初始化
xcall _Uart_Init
.dbline 57
; SEI(); //全局中断使能
sei
xjmp L11
L10:
.dbline 59
; while(1)
; {
.dbline 60
; for(GET_TxNum=0;GET_TxNum<18;GET_TxNum++)
clr R2
sts _GET_TxNum,R2
xjmp L16
L13:
.dbline 61
.dbline 62
ldi R24,<_GET_TxBUF1
ldi R25,>_GET_TxBUF1
lds R30,_GET_TxNum
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _USART_TXD
.dbline 63
L14:
.dbline 60
lds R24,_GET_TxNum
subi R24,255 ; addi 1
sts _GET_TxNum,R24
L16:
.dbline 60
lds R24,_GET_TxNum
cpi R24,18
brlo L13
.dbline 64
; {
; USART_TXD(GET_TxBUF1[GET_TxNum]);
; }
; for(GET_TxNum=0;GET_TxNum<18;GET_TxNum++)
clr R2
sts _GET_TxNum,R2
xjmp L20
L17:
.dbline 65
.dbline 66
ldi R24,<_GET_TxBUF2
ldi R25,>_GET_TxBUF2
lds R30,_GET_TxNum
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _USART_TXD
.dbline 67
L18:
.dbline 64
lds R24,_GET_TxNum
subi R24,255 ; addi 1
sts _GET_TxNum,R24
L20:
.dbline 64
lds R24,_GET_TxNum
cpi R24,18
brlo L17
.dbline 68
ldi R16,10
xcall _USART_TXD
.dbline 69
ldi R16,2000
ldi R17,7
xcall _Delay_ms
.dbline 70
L11:
.dbline 58
xjmp L10
X2:
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Uart_Init _Uart_Init fV
.even
_Uart_Init::
.dbline -1
.dbline 75
; {
; USART_TXD(GET_TxBUF2[GET_TxNum]);
; }
; USART_TXD(0x0A);
; Delay_ms(2000);
; }
; }
;
; //===============================================================
; void Uart_Init(void) //UART初始化
; {
.dbline 79
;
; //设置侦格式
; //异步,8位数据,无奇偶校验,一个停止位,无倍速
; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
ldi R24,134
out 0x20,R24
.dbline 82
;
; //设置波特率
; UBRRL= (F_osc/Baud_rate/16-1)%256;
ldi R24,47
out 0x9,R24
.dbline 83
; UBRRH= (F_osc/Baud_rate/16-1)/256;
clr R2
out 0x20,R2
.dbline 86
;
; //使能接收中断,使能接收,使能发送
; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
ldi R24,152
out 0xa,R24
.dbline -2
L21:
.dbline 0 ; func end
ret
.dbend
.dbfunc e USART_TXD _USART_TXD fV
; data -> R16
.even
_USART_TXD::
.dbline -1
.dbline 92
; }
;
;
; //===============================================================
; void USART_TXD(uint8 data) //发送采用查询方式
; {
L23:
.dbline 93
L24:
.dbline 93
; while( !(UCSRA & BIT(UDRE)) );
sbis 0xb,5
rjmp L23
.dbline 94
; UDR=data;
out 0xc,R16
L26:
.dbline 95
L27:
.dbline 95
; while( !(UCSRA & BIT(TXC )) );
sbis 0xb,6
rjmp L26
.dbline 96
; UCSRA|=BIT(TXC);
sbi 0xb,6
.dbline -2
L22:
.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程序包\完成整理\UARTTX~1\main.c
.dbfunc e USART_RXC _USART_RXC fV
.even
_USART_RXC::
.dbline -1
.dbline 103
; }
;
; //=======================================================================
;
; #pragma interrupt_handler USART_RXC:12
; void USART_RXC(void)
; {
.dbline -2
L29:
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTTX~1\main.c
_GET_TxNum::
.blkb 1
.dbsym e GET_TxNum _GET_TxNum c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -