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

📄 uart.lst

📁 万能遥控器解码
💻 LST
字号:
__text_start:
__start:
      11 E5CF      LDI	R28,0x5F
      12 E0D2      LDI	R29,2
      13 BFCD      OUT	0x3D,R28
      14 BFDE      OUT	0x3E,R29
      15 51CE      SUBI	R28,0x1E
      16 40D0      SBCI	R29,0
      17 EA0A      LDI	R16,0xAA
      18 8308      STD	Y+0,R16
      19 2400      CLR	R0
      1A E6E0      LDI	R30,0x60
      1B E0F0      LDI	R31,0
      1C E010      LDI	R17,0
      1D 36E0      CPI	R30,0x60
      1E 07F1      CPC	R31,R17
      1F F011      BEQ	0x0022
      20 9201      ST	R0,Z+
      21 CFFB      RJMP	0x001D
      22 8300      STD	Z+0,R16
      23 E2E2      LDI	R30,0x22
      24 E0F0      LDI	R31,0
      25 E6A0      LDI	R26,0x60
      26 E0B0      LDI	R27,0
      27 E010      LDI	R17,0
      28 E000      LDI	R16,0
      29 BF0B      OUT	0x3B,R16
      2A 32E2      CPI	R30,0x22
      2B 07F1      CPC	R31,R17
      2C F021      BEQ	0x0031
      2D 95C8      LPM
      2E 9631      ADIW	R30,1
      2F 920D      ST	R0,X+
      30 CFF9      RJMP	0x002A
      31 D047      RCALL	_main
_exit:
      32 CFFF      RJMP	_exit
_delay_nus:
  i                    --> R20
  n                    --> R16
      33 934A      ST	R20,-Y
      34 935A      ST	R21,-Y
FILE: C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\uart\uart.c
(0001) //ICC-AVR application builder : 2008-8-5 14:38:41
(0002) // Target : M8515
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom8515v.h>
(0006) #include <macros.h>
(0007) 
(0008) #define uchar unsigned char
(0009) #define uint unsigned int
(0010) void delay_nus(unsigned int n)//n微秒延时函数 
(0011) { 
(0012) unsigned int i; 
(0013) for (i=0;i<n;i++) 
      35 2744      CLR	R20
      36 2755      CLR	R21
      37 C003      RJMP	0x003B
(0014)   { 
(0015)       asm("nop"); 
      38 0000      NOP
      39 5F4F      SUBI	R20,0xFF
      3A 4F5F      SBCI	R21,0xFF
      3B 1740      CP	R20,R16
      3C 0751      CPC	R21,R17
      3D F3D0      BCS	0x0038
      3E 9159      LD	R21,Y+
      3F 9149      LD	R20,Y+
      40 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      41 D040      RCALL	push_xgset300C
      42 0158      MOVW	R10,R16
(0016)   } 
(0017) } 
(0018) void delay_nms(unsigned int n)//n毫秒延时函数 
(0019) { 
(0020)   unsigned int i; 
(0021)   for (i=0;i<n;i++) //执行n次1毫秒延时 
      43 2744      CLR	R20
      44 2755      CLR	R21
      45 C005      RJMP	0x004B
(0022)   delay_nus(1000);  
      46 EE08      LDI	R16,0xE8
      47 E013      LDI	R17,3
      48 DFEA      RCALL	_delay_nus
      49 5F4F      SUBI	R20,0xFF
      4A 4F5F      SBCI	R21,0xFF
      4B 154A      CP	R20,R10
      4C 055B      CPC	R21,R11
      4D F3C0      BCS	0x0046
      4E C038      RJMP	pop_xgset300C
(0023) }             
(0024) void port_init(void)
(0025) {
(0026)  PORTA = 0x00;
_port_init:
      4F 2422      CLR	R2
      50 BA2B      OUT	0x1B,R2
(0027)  DDRA  = 0x00;
      51 BA2A      OUT	0x1A,R2
(0028)  PORTB = 0x00;
      52 BA28      OUT	0x18,R2
(0029)  DDRB  = 0x00;
      53 BA27      OUT	0x17,R2
(0030)  PORTC = 0x00;
      54 BA25      OUT	0x15,R2
(0031)  DDRC  = 0x00;
      55 BA24      OUT	0x14,R2
(0032)  PORTD = 0x00;
      56 BA22      OUT	0x12,R2
(0033)  DDRD  = 0x00; 
      57 BA21      OUT	0x11,R2
(0034)  PORTE = 0x00;
      58 B827      OUT	0x07,R2
(0035)  DDRE  = 0x00; 
      59 B826      OUT	0x06,R2
      5A 9508      RET
(0036) }
(0037) 
(0038) //UART0 initialize
(0039) // desired baud rate: 9600
(0040) // actual: baud rate:9615 (0.2%)
(0041) void uart0_init(void)
(0042) {
(0043)  UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
      5B 2422      CLR	R2
      5C B82A      OUT	0x0A,R2
(0044)  UCSRA = 0x00;
      5D B82B      OUT	0x0B,R2
(0045)  UCSRC = BIT(URSEL) | 0x26;
      5E EA86      LDI	R24,0xA6
      5F BD80      OUT	0x20,R24
(0046)  UBRRL = 0x33; //set baud rate lo
      60 E383      LDI	R24,0x33
      61 B989      OUT	0x09,R24
(0047)  UBRRH = 0x00; //set baud rate hi
      62 BC20      OUT	0x20,R2
(0048)  UCSRB = 0x18;
      63 E188      LDI	R24,0x18
      64 B98A      OUT	0x0A,R24
      65 9508      RET
(0049) }
(0050) 
(0051) 
(0052) void sendchar(uchar num)
(0053)   { 	   
(0054)       UDR=num;
_sendchar:
  num                  --> R16
      66 B90C      OUT	0x0C,R16
(0055)       while(!(UCSRA&(1<<TXC)));
      67 9B5E      SBIS	0x0B,6
      68 CFFE      RJMP	0x0067
(0056) 	  UCSRA |= (1<<TXC);
      69 9A5E      SBI	0x0B,6
      6A 9508      RET
_PutChar:
  c                    --> R20
      6B 934A      ST	R20,-Y
      6C 2F40      MOV	R20,R16
(0057)   }
(0058) int PutChar(char c)
(0059) {
(0060)     if(c == '\n')
      6D 304A      CPI	R20,0xA
      6E F411      BNE	0x0071
(0061)     {
(0062)         PutChar('\r');
      6F E00D      LDI	R16,0xD
      70 DFFA      RCALL	_PutChar
(0063)     }
(0064)     UDR = c;
      71 B94C      OUT	0x0C,R20
(0065)     while(!(UCSRA &(1<<UDRE)));
      72 9B5D      SBIS	0x0B,5
      73 CFFE      RJMP	0x0072
(0066)     UCSRA |= (1<<UDRE);
      74 9A5D      SBI	0x0B,5
(0067)     return 0;
      75 2700      CLR	R16
      76 2711      CLR	R17
      77 9149      LD	R20,Y+
      78 9508      RET
(0068) }
(0069) 
(0070) void main(void)
(0071) {
(0072)     uchar i,j;
(0073)     uart0_init();
_main:
  j                    --> Y,+1
  i                    --> Y,+1
      79 DFE1      RCALL	_uart0_init
      7A C005      RJMP	0x0080
(0074) while(1)
(0075)    {
(0076)      delay_nms(500);
      7B EF04      LDI	R16,0xF4
      7C E011      LDI	R17,1
      7D DFC3      RCALL	_delay_nms
(0077) 	 sendchar(0xaa);
FILE: <library>
      7E EA0A      LDI	R16,0xAA
      7F DFE6      RCALL	_sendchar
      80 CFFA      RJMP	0x007B
      81 9508      RET
push_xgset300C:
      82 935A      ST	R21,-Y
      83 934A      ST	R20,-Y
      84 92BA      ST	R11,-Y
      85 92AA      ST	R10,-Y
      86 9508      RET
pop_xgset300C:
      87 90A9      LD	R10,Y+
      88 90B9      LD	R11,Y+
      89 9149      LD	R20,Y+
      8A 9159      LD	R21,Y+
      8B 9508      RET

⌨️ 快捷键说明

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