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

📄 usart.lst

📁 单片机应用 1.1602LCD 2.2004LCD源码 3.ATmega16 PWM源码 4.ATmega8 LED源码 5.无线影音Nrf2401源码 6.AVR串口源码
💻 LST
字号:
__text_start:
__start:
    003B E5CF      LDI	R28,0x5F
    003C E0D8      LDI	R29,0x8
    003D BFCD      OUT	0x3D,R28
    003E BFDE      OUT	0x3E,R29
    003F 51C0      SUBI	R28,0x10
    0040 40D0      SBCI	R29,0
    0041 EA0A      LDI	R16,0xAA
    0042 8308      STD	Y+0,R16
    0043 2400      CLR	R0
    0044 E8E2      LDI	R30,0x82
    0045 E0F0      LDI	R31,0
    0046 E010      LDI	R17,0
    0047 38E4      CPI	R30,0x84
    0048 07F1      CPC	R31,R17
    0049 F011      BEQ	0x004C
    004A 9201      ST	R0,Z+
    004B CFFB      RJMP	0x0047
    004C 8300      STD	Z+0,R16
    004D E5E4      LDI	R30,0x54
    004E E0F0      LDI	R31,0
    004F E6A0      LDI	R26,0x60
    0050 E0B0      LDI	R27,0
    0051 E010      LDI	R17,0
    0052 37E6      CPI	R30,0x76
    0053 07F1      CPC	R31,R17
    0054 F021      BEQ	0x0059
    0055 95C8      LPM
    0056 9631      ADIW	R30,1
    0057 920D      ST	R0,X+
    0058 CFF9      RJMP	0x0052
    0059 940E008D  CALL	_main
_exit:
    005B CFFF      RJMP	_exit
FILE: C:\DOCUME~1\pas\桌面\test\USART\USART.C
(0001) #include <iom32v.h>
(0002) #include <macros.h>
(0003) #include <stdio.h>
(0004) void port_init(void)
(0005) {
(0006)  PORTA = 0x00;
_port_init:
    005C 2422      CLR	R2
    005D BA2B      OUT	0x1B,R2
(0007)  DDRA  = 0x00;
    005E BA2A      OUT	0x1A,R2
(0008)  PORTB = 0x00;
    005F BA28      OUT	0x18,R2
(0009)  DDRB  = 0x00;
    0060 BA27      OUT	0x17,R2
(0010)  PORTC = 0x00; //m103 output only
    0061 BA25      OUT	0x15,R2
(0011)  DDRC  = 0x00;
    0062 BA24      OUT	0x14,R2
(0012)  PORTD = 0x02;
    0063 E082      LDI	R24,2
    0064 BB82      OUT	0x12,R24
(0013)  DDRD  = 0xff;
    0065 EF8F      LDI	R24,0xFF
    0066 BB81      OUT	0x11,R24
    0067 9508      RET
(0014) }
(0015) 
(0016) //UART0 initialize
(0017) // desired baud rate: 9600
(0018) // actual: baud rate:9615 (0.2%)
(0019) // char size: 8 bit
(0020) // parity: Disabled
(0021) void uart0_init(void)
(0022) {
(0023)  UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
    0068 2422      CLR	R2
    0069 B82A      OUT	0x0A,R2
(0024)  UCSRA = 0x00;
    006A B82B      OUT	0x0B,R2
(0025)  UCSRC = BIT(URSEL) | 0x06;
    006B E886      LDI	R24,0x86
    006C BD80      OUT	0x20,R24
(0026)  UBRRL = 0x2F; //set baud rate lo
    006D E28F      LDI	R24,0x2F
    006E B989      OUT	0x09,R24
(0027)  UBRRH = 0x00; //set baud rate hi
    006F BC20      OUT	0x20,R2
(0028)  UCSRB = 0x18;
    0070 E188      LDI	R24,0x18
    0071 B98A      OUT	0x0A,R24
    0072 9508      RET
(0029) }
(0030) 
(0031) //call this routine to initialize all peripherals
(0032) void init_devices(void)
(0033) {
(0034)  //stop errant interrupts until set up
(0035)  CLI(); //disable all interrupts
_init_devices:
    0073 94F8      BCLR	7
(0036)  port_init();
    0074 DFE7      RCALL	_port_init
(0037)  uart0_init();
    0075 DFF2      RCALL	_uart0_init
(0038) 
(0039)  MCUCR = 0x00;
    0076 2422      CLR	R2
    0077 BE25      OUT	0x35,R2
(0040)  GICR  = 0x00;
    0078 BE2B      OUT	0x3B,R2
(0041)  TIMSK = 0x00; //timer interrupt sources
    0079 BE29      OUT	0x39,R2
(0042)  SEI(); //re-enable interrupts
    007A 9478      BSET	7
    007B 9508      RET
_Puts:
  s                    --> R20
    007C 940E00A0  CALL	push_gset1
    007E 01A8      MOVW	R20,R16
(0043)  //all peripherals are now initialized
(0044) }
(0045) void Puts( unsigned char *s) // \arg pointer to a string ending by \0
(0046) {
    007F C006      RJMP	0x0086
(0047)   
(0048) 	 while (*s) 
(0049)       {
(0050) 	 putchar(*s);
    0080 01FA      MOVW	R30,R20
    0081 8100      LDD	R16,Z+0
    0082 940E00B7  CALL	_putchar
(0051) 	 s++;
    0084 5F4F      SUBI	R20,0xFF
    0085 4F5F      SBCI	R21,0xFF
    0086 01FA      MOVW	R30,R20
    0087 8020      LDD	R2,Z+0
    0088 2022      TST	R2
    0089 F7B1      BNE	0x0080
    008A 940E00A3  CALL	pop_gset1
    008C 9508      RET
(0052)       }
(0053) }
(0054) 
(0055) void main(void)
(0056) {
(0057)  init_devices();
_main:
    008D DFE5      RCALL	_init_devices
    008E C004      RJMP	0x0093
(0058)  while(1)
(0059)  {
(0060) puts("WWW.OURAVR.COM MY NAME IS PASYONG");
FILE: <library>
    008F E600      LDI	R16,0x60
    0090 E010      LDI	R17,0
    0091 940E00CE  CALL	_puts
    0093 CFFB      RJMP	0x008F
    0094 9508      RET
pop_gset2:
    0095 E0E2      LDI	R30,2
    0096 940C00A4  JMP	pop
push_gset5:
    0098 92FA      ST	R15,-Y
    0099 92EA      ST	R14,-Y
push_gset4:
    009A 92DA      ST	R13,-Y
    009B 92CA      ST	R12,-Y
push_gset3:
    009C 92BA      ST	R11,-Y
    009D 92AA      ST	R10,-Y
push_gset2:
    009E 937A      ST	R23,-Y
    009F 936A      ST	R22,-Y
push_gset1:
    00A0 935A      ST	R21,-Y
    00A1 934A      ST	R20,-Y
    00A2 9508      RET
pop_gset1:
    00A3 E0E1      LDI	R30,1
pop:
    00A4 9149      LD	R20,Y+
    00A5 9159      LD	R21,Y+
    00A6 FDE0      SBRC	R30,0
    00A7 9508      RET
    00A8 9169      LD	R22,Y+
    00A9 9179      LD	R23,Y+
    00AA FDE1      SBRC	R30,1
    00AB 9508      RET
    00AC 90A9      LD	R10,Y+
    00AD 90B9      LD	R11,Y+
    00AE FDE2      SBRC	R30,2
    00AF 9508      RET
    00B0 90C9      LD	R12,Y+
    00B1 90D9      LD	R13,Y+
    00B2 FDE3      SBRC	R30,3
    00B3 9508      RET
    00B4 90E9      LD	R14,Y+
    00B5 90F9      LD	R15,Y+
    00B6 9508      RET
_putchar:
    00B7 940E00A0  CALL	push_gset1
    00B9 2F40      MOV	R20,R16
    00BA 90200082  LDS	R2,_textmode
    00BC 90300083  LDS	R3,_textmode+1
    00BE 2022      TST	R2
    00BF F411      BNE	0x00C2
    00C0 2033      TST	R3
    00C1 F021      BEQ	0x00C6
    00C2 304A      CPI	R20,0xA
    00C3 F411      BNE	0x00C6
    00C4 E00D      LDI	R16,0xD
    00C5 DFF1      RCALL	_putchar
    00C6 9B5D      SBIS	0x0B,5
    00C7 CFFE      RJMP	0x00C6
    00C8 B94C      OUT	0x0C,R20
    00C9 2F04      MOV	R16,R20
    00CA 2711      CLR	R17
    00CB 940E00A3  CALL	pop_gset1
    00CD 9508      RET
_puts:
    00CE 940E009E  CALL	push_gset2
    00D0 2F60      MOV	R22,R16
    00D1 2F71      MOV	R23,R17
    00D2 2744      CLR	R20
    00D3 2755      CLR	R21
    00D4 C009      RJMP	0x00DE
    00D5 2FE6      MOV	R30,R22
    00D6 2FF7      MOV	R31,R23
    00D7 8100      LDD	R16,Z+0
    00D8 940E00B7  CALL	_putchar
    00DA 5F4F      SUBI	R20,0xFF
    00DB 4F5F      SBCI	R21,0xFF
    00DC 5F6F      SUBI	R22,0xFF
    00DD 4F7F      SBCI	R23,0xFF
    00DE 2FE6      MOV	R30,R22
    00DF 2FF7      MOV	R31,R23
    00E0 8020      LDD	R2,Z+0
    00E1 2022      TST	R2
    00E2 F791      BNE	0x00D5
    00E3 E00A      LDI	R16,0xA
    00E4 940E00B7  CALL	_putchar
    00E6 E001      LDI	R16,1
    00E7 E010      LDI	R17,0
    00E8 940E0095  CALL	pop_gset2
    00EA 9508      RET

⌨️ 快捷键说明

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