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

📄 uart.lst

📁 AtMega169芯片上的串口的C语言测试的程序
💻 LST
字号:
__text_start:
__start:
    002E EFCF      LDI	R28,0xFF
    002F E0D4      LDI	R29,4
    0030 BFCD      OUT	0x3D,R28
    0031 BFDE      OUT	0x3E,R29
    0032 51C0      SUBI	R28,0x10
    0033 40D0      SBCI	R29,0
    0034 EA0A      LDI	R16,0xAA
    0035 8308      STD	Y+0,R16
    0036 2400      CLR	R0
    0037 E0E0      LDI	R30,0
    0038 E0F1      LDI	R31,1
    0039 E011      LDI	R17,1
    003A 30E0      CPI	R30,0
    003B 07F1      CPC	R31,R17
    003C F011      BEQ	0x003F
    003D 9201      ST	R0,Z+
    003E CFFB      RJMP	0x003A
    003F 8300      STD	Z+0,R16
    0040 E5EC      LDI	R30,0x5C
    0041 E0F0      LDI	R31,0
    0042 E0A0      LDI	R26,0
    0043 E0B1      LDI	R27,1
    0044 E010      LDI	R17,0
    0045 35EC      CPI	R30,0x5C
    0046 07F1      CPC	R31,R17
    0047 F021      BEQ	0x004C
    0048 95C8      LPM
    0049 9631      ADIW	R30,1
    004A 920D      ST	R0,X+
    004B CFF9      RJMP	0x0045
    004C 940E0072  CALL	_main
_exit:
    004E CFFF      RJMP	_exit
FILE: C:\TDdownload\zxy\169demo\169UART\uart.c
(0001) // **************************************************************
(0002) // *** 		         广 州 天 河 双 龙 电 子 公 司 	            ***
(0003) // ***                   http://www.sl.com.cn                 ***
(0004) // ***                  实验: UART                           ***
(0005) // ***                  作者:zxy@sl.com.cn                   ***
(0006) // ***                       2006年3月28日                    ***
(0007) // ***         目标MCU:MEGA169    晶振:内部(INT)8MHZ         ***
(0008) // **************************************************************
(0009) //本实验需相关软件配合如:comdebug.exe
(0010) #include <iom169v.h>
(0011) #include <macros.h>
(0012) #define fosc 8000000 
(0013) #define baud 19200	
(0014) 
(0015) void port_init()
(0016)            {
(0017)             PORTE=0xff;
_port_init:
    004F EF8F      LDI	R24,0xFF
    0050 B98E      OUT	0x0E,R24
(0018)             DDRE=0xff;            
    0051 B98D      OUT	0x0D,R24
    0052 9508      RET
(0019)            }
(0020) 
(0021) //URAT的1口
(0022) void uart1_init(void)
(0023) {
(0024)  UCSR0B = 0x00; //设置波特率时关闭发送和接收
_uart1_init:
    0053 2422      CLR	R2
    0054 922000C1  STS	0xC1,R2
(0025)  UCSR0A = 0x00;
    0056 922000C0  STS	0xC0,R2
(0026)  UBRRL=(fosc/16/(baud+1))%256;
    0058 E18A      LDI	R24,0x1A
    0059 938000C4  STS	0xC4,R24
(0027)  UBRRH=(fosc/16/(baud+1))/256;//设置波特率
    005B 922000C5  STS	0xC5,R2
(0028)  UCSR0C =(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 
    005D E086      LDI	R24,6
    005E 938000C2  STS	0xC2,R24
(0029)  UCSR0B =(1<<RXEN)|(1<<TXEN);//允许发送和接收
    0060 E188      LDI	R24,0x18
    0061 938000C1  STS	0xC1,R24
    0063 9508      RET
(0030) }
(0031) void putchar1(unsigned char c)
(0032) 	{	 
(0033)      while (!(UCSRA&(1<<UDRE0)));//判断上次发送是否完成
_putchar1:
  c                    --> R16
    0064 902000C0  LDS	R2,0xC0
    0066 FE25      SBRS	R2,5
    0067 CFFC      RJMP	_putchar1
(0034) 	   UDR0=c;                      //发送数据    
    0068 930000C6  STS	0xC6,R16
    006A 9508      RET
(0035) 	}	
(0036) unsigned char getchar1(void)
(0037)   	{
(0038) 	    while(!(UCSRA&(1<<RXC0)));//判断是否接收到数据
_getchar1:
    006B 902000C0  LDS	R2,0xC0
    006D FE27      SBRS	R2,7
    006E CFFC      RJMP	_getchar1
(0039)        return UDR0;                //接收数据
    006F 910000C6  LDS	R16,0xC6
    0071 9508      RET
(0040) 	  }	
(0041) //URAT的1口
(0042) 
(0043) void main(void)
(0044) {
(0045)  unsigned char i;
(0046)  port_init();
_main:
  i                    --> R20
    0072 DFDC      RCALL	_port_init
(0047)  uart1_init();
    0073 DFDF      RCALL	_uart1_init
    0074 C003      RJMP	0x0078
(0048)  while(1)
(0049)     {  
(0050) 	   i=getchar1();
    0075 DFF5      RCALL	_getchar1
    0076 2F40      MOV	R20,R16
(0051) 	   putchar1(i);	   		
FILE: <library>
    0077 DFEC      RCALL	_putchar1
    0078 CFFC      RJMP	0x0075
    0079 9508      RET

⌨️ 快捷键说明

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