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

📄 led.lst

📁 atmega8的关于LED的代码
💻 LST
字号:
__start:
__text_start:
    0013 E5CF      LDI	R28,0x5F
    0014 E0D4      LDI	R29,4
    0015 BFCD      OUT	0x3D,R28
    0016 BFDE      OUT	0x3E,R29
    0017 51C0      SUBI	R28,0x10
    0018 40D0      SBCI	R29,0
    0019 EA0A      LDI	R16,0xAA
    001A 8308      STD	Y+0,R16
    001B 2400      CLR	R0
    001C E6E0      LDI	R30,0x60
    001D E0F0      LDI	R31,0
    001E E010      LDI	R17,0
    001F 36E0      CPI	R30,0x60
    0020 07F1      CPC	R31,R17
    0021 F011      BEQ	0x0024
    0022 9201      ST	R0,Z+
    0023 CFFB      RJMP	0x001F
    0024 8300      STD	Z+0,R16
    0025 E2E6      LDI	R30,0x26
    0026 E0F0      LDI	R31,0
    0027 E6A0      LDI	R26,0x60
    0028 E0B0      LDI	R27,0
    0029 E010      LDI	R17,0
    002A 32E6      CPI	R30,0x26
    002B 07F1      CPC	R31,R17
    002C F021      BEQ	0x0031
    002D 95C8      LPM
    002E 9631      ADIW	R30,1
    002F 920D      ST	R0,X+
    0030 CFF9      RJMP	0x002A
    0031 D04F      RCALL	_main
_exit:
    0032 CFFF      RJMP	_exit
FILE: F:\辛涛\实验板\实验板程序\数码管显示\LED.C
(0001) /*********************************************
(0002) ************PC0==>DATA
(0003) ************PC1==>SCLK
(0004) ************PC2==>C0
(0005) ************PC3==>C1
(0006) ************PC4==>C2
(0007) ************PC5==>C3
(0008) ************PC6==>C4
(0009) **********************************************/
(0010) //ICC-AVR application builder : 2007-4-4 15:05:58
(0011) // Target : M8
(0012) // Crystal: 11.059Mhz
(0013) 
(0014) #include <iom8v.h>
(0015) #include <macros.h>
(0016) 
(0017) void port_init(void)
(0018) {
(0019)  PORTB = 0xFF;
_port_init:
    0033 EF8F      LDI	R24,0xFF
    0034 BB88      OUT	0x18,R24
(0020)  DDRB  = 0x00;
    0035 2422      CLR	R2
    0036 BA27      OUT	0x17,R2
(0021)  PORTC = 0x7F; //m103 output only
    0037 E78F      LDI	R24,0x7F
    0038 BB85      OUT	0x15,R24
(0022)  DDRC  = 0x7F;
    0039 BB84      OUT	0x14,R24
(0023)  PORTD = 0xFF;
    003A EF8F      LDI	R24,0xFF
    003B BB82      OUT	0x12,R24
(0024)  DDRD  = 0x00;
    003C BA21      OUT	0x11,R2
(0025) }
    003D 9508      RET
(0026) /*****************************延时函数**************************************/
(0027) void delay_1ms(void)//1ms延时函数
(0028) {
(0029)  unsigned int i;
(0030)  for (i=1;i<1571;i++)
_delay_1ms:
  i                    --> R16
    003E E001      LDI	R16,1
    003F E010      LDI	R17,0
    0040 C002      RJMP	0x0043
    0041 5F0F      SUBI	R16,0xFF
    0042 4F1F      SBCI	R17,0xFF
    0043 3203      CPI	R16,0x23
    0044 E0E6      LDI	R30,6
    0045 071E      CPC	R17,R30
    0046 F3D0      BCS	0x0041
(0031)  ;
(0032) }
    0047 9508      RET
_delay_ms:
  i                    --> R20
  n                    --> R22
    0048 D056      RCALL	push_gset2
    0049 01B8      MOVW	R22,R16
(0033) void delay_ms (unsigned int n)
(0034) {
(0035)  unsigned int i=0;
    004A 2744      CLR	R20
    004B 2755      CLR	R21
(0036)  for (i=0;i<n;i++)
    004C C003      RJMP	0x0050
(0037)  delay_1ms();
    004D DFF0      RCALL	_delay_1ms
    004E 5F4F      SUBI	R20,0xFF
    004F 4F5F      SBCI	R21,0xFF
    0050 1746      CP	R20,R22
    0051 0757      CPC	R21,R23
    0052 F3D0      BCS	0x004D
(0038) } 
    0053 D030      RCALL	pop_gset2
    0054 9508      RET
_VUART0:
  count1               --> Y+1
  VBUF                 --> R20
  count2               --> R22
  bit_ctr              --> R10
  Display              --> R22
    0055 D04C      RCALL	push_gset3
    0056 2F60      MOV	R22,R16
(0039) /************************虚拟串行显示通道0***************************/
(0040) unsigned char VUART0 (unsigned char Display)
(0041) {
(0042)  unsigned char VBUF,bit_ctr,count1,count2;
(0043)   VBUF=Display;
(0044)   bit_ctr=0x01;
(0045)   for (count2=0;count2<8;count2++)
    0057 2F46      MOV	R20,R22
    0058 24AA      CLR	R10
    0059 94A3      INC	R10
    005A 2766      CLR	R22
    005B C019      RJMP	0x0075
(0046)   {
(0047)   if ((VBUF&bit_ctr)==0x00)
    005C 2E24      MOV	R2,R20
    005D 202A      AND	R2,R10
    005E F469      BNE	0x006C
(0048)    {//数据为0   
(0049)     PORTC=0b00111100;//PC0=RXD数据
    005F E38C      LDI	R24,0x3C
    0060 BB85      OUT	0x15,R24
(0050) 	delay_ms (2);	    
    0061 E002      LDI	R16,2
    0062 E010      LDI	R17,0
    0063 DFE4      RCALL	_delay_ms
(0051) 	PORTC=0b00111110;//PC1=TXD时钟	
    0064 E38E      LDI	R24,0x3E
    0065 BB85      OUT	0x15,R24
(0052) 	delay_ms (2);
    0066 E002      LDI	R16,2
    0067 E010      LDI	R17,0
    0068 DFDF      RCALL	_delay_ms
(0053)     PORTC=0b00111111;//PC1=TXD时钟
    0069 E38F      LDI	R24,0x3F
    006A BB85      OUT	0x15,R24
(0054)    }
    006B C007      RJMP	0x0073
(0055)   else
(0056)    {//数据为1
(0057)     PORTC=0b00111101;//PC0=RXD数据
    006C E38D      LDI	R24,0x3D
    006D BB85      OUT	0x15,R24
(0058) 	delay_ms (2);
    006E E002      LDI	R16,2
    006F E010      LDI	R17,0
    0070 DFD7      RCALL	_delay_ms
(0059)     PORTC=0b00111111;//PC1=TXD时钟    
    0071 E38F      LDI	R24,0x3F
    0072 BB85      OUT	0x15,R24
(0060)    }
(0061)    bit_ctr<<=1;
    0073 0CAA      LSL	R10
    0074 9563      INC	R22
    0075 3068      CPI	R22,0x8
    0076 F328      BCS	0x005C
(0062)   }
(0063) 
(0064) }
    0077 D00E      RCALL	pop_gset3
    0078 9508      RET
(0065) //call this routine to initialise all peripherals
(0066) void init_devices(void)
(0067) {
(0068)  //stop errant interrupts until set up
(0069)  CLI(); //disable all interrupts
_init_devices:
    0079 94F8      BCLR	7
(0070)  port_init();
    007A DFB8      RCALL	_port_init
(0071) 
(0072)  MCUCR = 0x00;
    007B 2422      CLR	R2
    007C BE25      OUT	0x35,R2
(0073)  GICR  = 0x00;
    007D BE2B      OUT	0x3B,R2
(0074)  TIMSK = 0x00; //timer interrupt sources
    007E BE29      OUT	0x39,R2
(0075)  SEI(); //re-enable interrupts
    007F 9478      BSET	7
(0076)  //all peripherals are now initialised
(0077) }
    0080 9508      RET
(0078) void main()
(0079) {
(0080)  init_devices(); 
_main:
    0081 DFF7      RCALL	_init_devices
(0081)  
(0082)  //while(1) 
(0083)  // {
(0084)     VUART0 (0xff);
    0082 EF0F      LDI	R16,0xFF
(0085)   //}	
(0086) }
FILE: <library>
    0083 CFD1      RJMP	_VUART0
pop_gset2:
    0084 E0E2      LDI	R30,2
    0085 C006      RJMP	pop
pop_gset3:
    0086 E0E4      LDI	R30,4
    0087 C004      RJMP	pop
push_gset1:
    0088 935A      ST	R21,-Y
    0089 934A      ST	R20,-Y
    008A 9508      RET
pop_gset1:
    008B E0E1      LDI	R30,1
pop:
    008C 9149      LD	R20,Y+
    008D 9159      LD	R21,Y+
    008E FDE0      SBRC	R30,0
    008F 9508      RET
    0090 9169      LD	R22,Y+
    0091 9179      LD	R23,Y+
    0092 FDE1      SBRC	R30,1
    0093 9508      RET
    0094 90A9      LD	R10,Y+
    0095 90B9      LD	R11,Y+
    0096 FDE2      SBRC	R30,2
    0097 9508      RET
    0098 90C9      LD	R12,Y+
    0099 90D9      LD	R13,Y+
    009A FDE3      SBRC	R30,3
    009B 9508      RET
    009C 90E9      LD	R14,Y+
    009D 90F9      LD	R15,Y+
    009E 9508      RET
push_gset2:
    009F 937A      ST	R23,-Y
    00A0 936A      ST	R22,-Y
    00A1 CFE6      RJMP	push_gset1
push_gset3:
    00A2 92BA      ST	R11,-Y
    00A3 92AA      ST	R10,-Y
    00A4 CFFA      RJMP	push_gset2

⌨️ 快捷键说明

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