⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart_back.lst

📁 ATmega128串口通信,在ICC AVR下编译成功
💻 LST
字号:
__start:
__text_start:
    0030 EFCF      LDI	R28,0xFF
    0031 E0DF      LDI	R29,0xF
    0032 BFCD      OUT	0x3D,R28
    0033 BFDE      OUT	0x3E,R29
    0034 51C0      SUBI	R28,0x10
    0035 40D0      SBCI	R29,0
    0036 EA0A      LDI	R16,0xAA
    0037 8308      STD	Y+0,R16
    0038 2400      CLR	R0
    0039 E6E0      LDI	R30,0x60
    003A E0F0      LDI	R31,0
    003B E010      LDI	R17,0
    003C 36E0      CPI	R30,0x60
    003D 07F1      CPC	R31,R17
    003E F011      BEQ	0x0041
    003F 9201      ST	R0,Z+
    0040 CFFB      RJMP	0x003C
    0041 8300      STD	Z+0,R16
    0042 E6E0      LDI	R30,0x60
    0043 E0F0      LDI	R31,0
    0044 E6A0      LDI	R26,0x60
    0045 E0B0      LDI	R27,0
    0046 E010      LDI	R17,0
    0047 36E0      CPI	R30,0x60
    0048 07F1      CPC	R31,R17
    0049 F021      BEQ	0x004E
    004A 95C8      LPM
    004B 9631      ADIW	R30,1
    004C 920D      ST	R0,X+
    004D CFF9      RJMP	0x0047
    004E 940E0065  CALL	_main
_exit:
    0050 CFFF      RJMP	_exit
FILE: E:\AVR单~1\NewProject\串口通信\ATmega128\数据回发\UART_Back.c
(0001) /****************************************************
(0002) **晶振:内部7.3728MHz
(0003) **实现功能:将从PC机接受的字符返回PC机
(0004) **设置:波特率9600, 8 bit, 1 stop bit, 无校验
(0005) ****************************************************/
(0006) #include <iom128.h>
(0007) #include <macros.h>
(0008) 
(0009) #define uchar unsigned char 
(0010) #define uint  unsigned int
(0011) 
(0012) void UART_init(void)
(0013) {
(0014) 	UCSR0A = 0x00;		/*倍速					*/
_UART_init:
    0051 2422      CLR	R2
    0052 B82B      OUT	0x0B,R2
(0015) 	UCSR0B = 0x18;		/*允许接收和发送*/
    0053 E188      LDI	R24,0x18
    0054 B98A      OUT	0x0A,R24
(0016) 	UCSR0C = 0x0E;		/*8位数据,1位停止位,无校验位				*/
    0055 E08E      LDI	R24,0xE
    0056 93800095  STS	0x95,R24
(0017) 	UBRR0H = 0x00;
    0058 92200090  STS	0x90,R2
(0018) 	UBRR0L = 0x47;		/*9600					*/
    005A E487      LDI	R24,0x47
    005B B989      OUT	0x09,R24
    005C 9508      RET
(0019) }
(0020) 
(0021) uchar UART_recive(void)
(0022) {
(0023)     while (!(UCSR0A&(1<<RXC0))); /* 等待接收数据*/
_UART_recive:
    005D 9B5F      SBIS	0x0B,7
    005E CFFE      RJMP	_UART_recive
(0024)     return UDR0;                 /* 获取并返回数据*/
    005F B10C      IN	R16,0x0C
    0060 9508      RET
(0025) }
(0026) 
(0027) void UART_transmit(uchar data)
(0028) {
(0029)     while(!(UCSR0A&(1<<UDRE0)));
_UART_transmit:
  data                 --> R16
    0061 9B5D      SBIS	0x0B,5
    0062 CFFE      RJMP	_UART_transmit
(0030)     UDR0=data;
    0063 B90C      OUT	0x0C,R16
    0064 9508      RET
(0031) }
(0032) 
(0033) void main(void)
(0034) {
(0035)     uchar j;
(0036)     CLI();
_main:
  j                    --> R20
    0065 94F8      BCLR	7
(0037)     WDR();
    0066 95A8      WDR
(0038)     UART_init();
    0067 DFE9      RCALL	_UART_init
(0039)     SEI();
    0068 9478      BSET	7
    0069 C003      RJMP	0x006D
(0040)     while(1)
(0041)       {
(0042)       j=UART_recive(); 
    006A DFF2      RCALL	_UART_recive
    006B 2F40      MOV	R20,R16
(0043)       UART_transmit(j);
FILE: <library>
    006C DFF4      RCALL	_UART_transmit
    006D CFFC      RJMP	0x006A
    006E 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -