📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTEC~1\main.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 41
0000 ; /****************************************Copyright (c)**************************************************
0000 ; ** ADEmbed Development Co.,LTD.
0000 ; ** http://www.adembed.com
0000 ; **--------------File Info-------------------------------------------------------------------------------
0000 ; ** File name: main.c
0000 ; ** Last modified Date: 2008-12-13
0000 ; ** Last Version: 1.0
0000 ; ** Descriptions: UART Echo Test.
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; ** Created by: junbolu
0000 ; ** Created date: 2008-12-13
0000 ; ** Version: 1.0
0000 ; ** Descriptions:
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; ** Modified by:
0000 ; ** Modified date:
0000 ; ** Version:
0000 ; ** Descriptions:
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; **ICC-AVR application builder : 2008-12-13
0000 ; **Target : M16
0000 ; **Crystal: 7.3728Mhz
0000 ; *******************************************************************************************************/
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "main.h"
0000 ; #include "Define.h"
0000 ;
0000 ; unsigned char GET_Rx;
0000 ; unsigned char GET_RxNum;
0000 ; unsigned char GET_RxBUF[10];
0000 ;
0000 ; void Uart_Init(void);
0000 ; void USART_TXD(uint8 data);
0000 ;
0000 ; void main(void)
0000 ; {
0000 .dbline 42
0000 ; Uart_Init(); //TART初始化
0000 10D0 xcall _Uart_Init
0002 .dbline 43
0002 ; SEI(); //全局中断使能
0002 7894 sei
0004 .dbline 45
0004 ;
0004 ; GET_Rx=False;
0004 2224 clr R2
0006 20920B00 sts _GET_Rx,R2
000A .dbline 46
000A ; for(;;)
000A L2:
000A .dbline 47
000A .dbline 48
000A 80910B00 lds R24,_GET_Rx
000E 8130 cpi R24,1
0010 E1F7 brne L2
0012 .dbline 49
0012 .dbline 50
0012 00910000 lds R16,_GET_RxBUF
0016 0ED0 xcall _USART_TXD
0018 .dbline 51
0018 2224 clr R2
001A 20920B00 sts _GET_Rx,R2
001E .dbline 52
001E .dbline 53
001E .dbline 46
001E .dbline 46
001E F5CF xjmp L2
0020 X0:
0020 .dbline -2
0020 L1:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
0022 .dbfunc e Uart_Init _Uart_Init fV
.even
0022 _Uart_Init::
0022 .dbline -1
0022 .dbline 58
0022 ; {
0022 ; if(GET_Rx==True)
0022 ; {
0022 ; USART_TXD(GET_RxBUF[0]);
0022 ; GET_Rx=False;
0022 ; }
0022 ; }
0022 ; }
0022 ;
0022 ; //===============================================================
0022 ; void Uart_Init(void) //UART初始化
0022 ; {
0022 .dbline 62
0022 ;
0022 ; //设置侦格式
0022 ; //异步,8位数据,无奇偶校验,一个停止位,无倍速
0022 ; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
0022 86E8 ldi R24,134
0024 80BD out 0x20,R24
0026 .dbline 65
0026 ;
0026 ; //设置波特率
0026 ; UBRRL= (F_osc/Baud_rate/16-1)%256;
0026 8FE2 ldi R24,47
0028 89B9 out 0x9,R24
002A .dbline 66
002A ; UBRRH= (F_osc/Baud_rate/16-1)/256;
002A 2224 clr R2
002C 20BC out 0x20,R2
002E .dbline 69
002E ;
002E ; //使能接收中断,使能接收,使能发送
002E ; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
002E 88E9 ldi R24,152
0030 8AB9 out 0xa,R24
0032 .dbline -2
0032 L8:
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbend
0034 .dbfunc e USART_TXD _USART_TXD fV
0034 ; data -> R16
.even
0034 _USART_TXD::
0034 .dbline -1
0034 .dbline 75
0034 ; }
0034 ;
0034 ;
0034 ; //===============================================================
0034 ; void USART_TXD(uint8 data) //发送采用查询方式
0034 ; {
0034 L10:
0034 .dbline 76
0034 L11:
0034 .dbline 76
0034 ; while( !(UCSRA & BIT(UDRE)) );
0034 5D9B sbis 0xb,5
0036 FECF rjmp L10
0038 .dbline 77
0038 ; UDR=data;
0038 0CB9 out 0xc,R16
003A L13:
003A .dbline 78
003A L14:
003A .dbline 78
003A ; while( !(UCSRA & BIT(TXC )) );
003A 5E9B sbis 0xb,6
003C FECF rjmp L13
003E .dbline 79
003E ; UCSRA|=BIT(TXC);
003E 5E9A sbi 0xb,6
0040 .dbline -2
0040 L9:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbsym r data 16 c
0042 .dbend
.area vector(rom, abs)
.org 44
002C 0C942100 jmp _USART_RXC
.area text(rom, con, rel)
0042 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTEC~1\main.c
0042 .dbfunc e USART_RXC _USART_RXC fV
.even
0042 _USART_RXC::
0042 2A92 st -y,R2
0044 8A93 st -y,R24
0046 2FB6 in R2,0x3f
0048 2A92 st -y,R2
004A .dbline -1
004A .dbline 86
004A ; }
004A ;
004A ; //=======================================================================
004A ;
004A ; #pragma interrupt_handler USART_RXC:12
004A ; void USART_RXC(void)
004A ; {
004A .dbline 87
004A ; GET_RxBUF[0]=UDR;
004A 2CB0 in R2,0xc
004C 20920000 sts _GET_RxBUF,R2
0050 .dbline 88
0050 ; GET_Rx=True;
0050 81E0 ldi R24,1
0052 80930B00 sts _GET_Rx,R24
0056 .dbline -2
0056 L16:
0056 2990 ld R2,y+
0058 2FBE out 0x3f,R2
005A 8991 ld R24,y+
005C 2990 ld R2,y+
005E .dbline 0 ; func end
005E 1895 reti
0060 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\UARTEC~1\main.c
0000 _GET_RxBUF::
0000 .blkb 10
000A .dbsym e GET_RxBUF _GET_RxBUF A[10:10]c
000A _GET_RxNum::
000A .blkb 1
000B .dbsym e GET_RxNum _GET_RxNum c
000B _GET_Rx::
000B .blkb 1
000C .dbsym e GET_Rx _GET_Rx c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -