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

📄 ac10-1.lst

📁 AVR学习资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    0031 E5CF      LDI	R28,0x5F
    0032 E0D4      LDI	R29,4
    0033 BFCD      OUT	0x3D,R28
    0034 BFDE      OUT	0x3E,R29
    0035 51C0      SUBI	R28,0x10
    0036 40D0      SBCI	R29,0
    0037 EA0A      LDI	R16,0xAA
    0038 8308      STD	Y+0,R16
    0039 2400      CLR	R0
    003A E6E0      LDI	R30,0x60
    003B E0F0      LDI	R31,0
    003C E010      LDI	R17,0
    003D 36E6      CPI	R30,0x66
    003E 07F1      CPC	R31,R17
    003F F011      BEQ	0x0042
    0040 9201      ST	R0,Z+
    0041 CFFB      RJMP	0x003D
    0042 8300      STD	Z+0,R16
    0043 E6E2      LDI	R30,0x62
    0044 E0F0      LDI	R31,0
    0045 E6A0      LDI	R26,0x60
    0046 E0B0      LDI	R27,0
    0047 E010      LDI	R17,0
    0048 36E2      CPI	R30,0x62
    0049 07F1      CPC	R31,R17
    004A F021      BEQ	0x004F
    004B 95C8      LPM
    004C 9631      ADIW	R30,1
    004D 920D      ST	R0,X+
    004E CFF9      RJMP	0x0048
    004F 940E0154  CALL	_main
_exit:
    0051 CFFF      RJMP	_exit
FILE: d:\MYDOCU~1\ac10-1\ac10-1.c
(0001) #include <iom16v.h>			
(0002) #define uchar unsigned char	
(0003) #define uint  unsigned int	
(0004) uchar const SEG7[10]={0x3f,0x06,0x5b, 
(0005) 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0006) uchar const ACT[4]={0xfe,0xfd,0xfb,0xf7};
(0007) uint adc_val,dis_val;	
(0008) uchar i,cnt;				
(0009) /************************************************/
(0010) void port_init(void)	
(0011) {						
(0012)  PORTA = 0x7F;			
_port_init:
    0052 E78F      LDI	R24,0x7F
    0053 BB8B      OUT	0x1B,R24
(0013)  DDRA  = 0x7F;			
    0054 BB8A      OUT	0x1A,R24
(0014)  PORTB = 0xFF;
    0055 EF8F      LDI	R24,0xFF
    0056 BB88      OUT	0x18,R24
(0015)  DDRB  = 0xFF;		
    0057 BB87      OUT	0x17,R24
(0016)  PORTC = 0xFF; 
    0058 BB85      OUT	0x15,R24
(0017)  DDRC  = 0xFF;		
    0059 BB84      OUT	0x14,R24
(0018)  PORTD = 0xFF;		
    005A BB82      OUT	0x12,R24
(0019)  DDRD  = 0xFF;		
    005B BB81      OUT	0x11,R24
    005C 9508      RET
(0020) }				
(0021) /************************************************/
(0022) void adc_init(void)	
(0023) {					
(0024) ADCSRA = 0xE3; 		
_adc_init:
    005D EE83      LDI	R24,0xE3
    005E B986      OUT	0x06,R24
(0025) ADMUX = 0xC7;		
    005F EC87      LDI	R24,0xC7
    0060 B987      OUT	0x07,R24
    0061 9508      RET
(0026) }			
(0027) //***************************
(0028) void timer0_init(void)	
(0029) {					
(0030) TCNT0 = 0x83; 		
_timer0_init:
    0062 E883      LDI	R24,0x83
    0063 BF82      OUT	0x32,R24
(0031) TCCR0 = 0x03; 		
    0064 E083      LDI	R24,3
    0065 BF83      OUT	0x33,R24
(0032) TIMSK = 0x01; 		
    0066 E081      LDI	R24,1
    0067 BF89      OUT	0x39,R24
    0068 9508      RET
(0033) }				
(0034) /*********************************************/
(0035) void init_devices(void)	
(0036) {							
(0037)  port_init();	
_init_devices:
    0069 DFE8      RCALL	_port_init
(0038)  timer0_init();			
    006A DFF7      RCALL	_timer0_init
(0039)  adc_init();			
    006B DFF1      RCALL	_adc_init
(0040)  SREG=0x80;	
    006C E880      LDI	R24,0x80
    006D BF8F      OUT	0x3F,R24
    006E 9508      RET
_timer0_ovf_isr:
    006F 922A      ST	R2,-Y
    0070 930A      ST	R16,-Y
    0071 931A      ST	R17,-Y
    0072 932A      ST	R18,-Y
    0073 933A      ST	R19,-Y
    0074 938A      ST	R24,-Y
    0075 939A      ST	R25,-Y
    0076 93EA      ST	R30,-Y
    0077 93FA      ST	R31,-Y
    0078 B62F      IN	R2,0x3F
    0079 922A      ST	R2,-Y
    007A 940E0238  CALL	push_gset1
(0041) }							
(0042) //***************************
(0043) #pragma interrupt_handler timer0_ovf_isr:10
(0044) void timer0_ovf_isr(void)	
(0045) {							
(0046)  TCNT0 = 0x83; 				
    007C E883      LDI	R24,0x83
    007D BF82      OUT	0x32,R24
(0047)  cnt++;				
    007E 91800060  LDS	R24,cnt
    0080 5F8F      SUBI	R24,0xFF
    0081 93800060  STS	cnt,R24
(0048)  if(++i>3)i=0;			
    0083 91800061  LDS	R24,i
    0085 5F8F      SUBI	R24,0xFF
    0086 2E28      MOV	R2,R24
    0087 92200061  STS	i,R2
    0089 E083      LDI	R24,3
    008A 1582      CP	R24,R2
    008B F418      BCC	0x008F
    008C 2422      CLR	R2
    008D 92200061  STS	i,R2
(0049)  switch(i)	
    008F 91400061  LDS	R20,i
    0091 2755      CLR	R21
    0092 3040      CPI	R20,0
    0093 0745      CPC	R20,R21
    0094 F079      BEQ	0x00A4
    0095 3041      CPI	R20,1
    0096 E0E0      LDI	R30,0
    0097 075E      CPC	R21,R30
    0098 F0F9      BEQ	0x00B8
    0099 3042      CPI	R20,2
    009A E0E0      LDI	R30,0
    009B 075E      CPC	R21,R30
    009C F409      BNE	0x009E
    009D C032      RJMP	0x00D0
    009E 3043      CPI	R20,3
    009F E0E0      LDI	R30,0
    00A0 075E      CPC	R21,R30
    00A1 F409      BNE	0x00A3
    00A2 C045      RJMP	0x00E8
    00A3 C057      RJMP	0x00FB
(0050)  {
(0051)  case 0:PORTA=SEG7[dis_val%10];PORTC=ACT[0];break;
    00A4 E02A      LDI	R18,0xA
    00A5 E030      LDI	R19,0
    00A6 91000062  LDS	R16,dis_val
    00A8 91100063  LDS	R17,dis_val+1
    00AA 940E016D  CALL	mod16u
    00AC 01F8      MOVW	R30,R16
    00AD E584      LDI	R24,0x54
    00AE E090      LDI	R25,0
    00AF 0FE8      ADD	R30,R24
    00B0 1FF9      ADC	R31,R25
    00B1 91E4      LPM	R30,0(Z)
    00B2 BBEB      OUT	0x1B,R30
    00B3 E5EE      LDI	R30,0x5E
    00B4 E0F0      LDI	R31,0
    00B5 91E4      LPM	R30,0(Z)
    00B6 BBE5      OUT	0x15,R30
    00B7 C043      RJMP	0x00FB
(0052)  case 1:PORTA=SEG7[(dis_val/10)%10];PORTC=ACT[1];break;
    00B8 E02A      LDI	R18,0xA
    00B9 E030      LDI	R19,0
    00BA 91000062  LDS	R16,dis_val
    00BC 91100063  LDS	R17,dis_val+1
    00BE 940E016F  CALL	div16u
    00C0 E02A      LDI	R18,0xA
    00C1 E030      LDI	R19,0
    00C2 940E016D  CALL	mod16u
    00C4 01F8      MOVW	R30,R16
    00C5 E584      LDI	R24,0x54
    00C6 E090      LDI	R25,0
    00C7 0FE8      ADD	R30,R24
    00C8 1FF9      ADC	R31,R25
    00C9 91E4      LPM	R30,0(Z)
    00CA BBEB      OUT	0x1B,R30
    00CB E5EF      LDI	R30,0x5F
    00CC E0F0      LDI	R31,0
    00CD 91E4      LPM	R30,0(Z)
    00CE BBE5      OUT	0x15,R30
    00CF C02B      RJMP	0x00FB
(0053)  case 2:PORTA=SEG7[(dis_val/100)%10];PORTC=ACT[2];break;
    00D0 E624      LDI	R18,0x64
    00D1 E030      LDI	R19,0
    00D2 91000062  LDS	R16,dis_val
    00D4 91100063  LDS	R17,dis_val+1
    00D6 940E016F  CALL	div16u
    00D8 E02A      LDI	R18,0xA
    00D9 E030      LDI	R19,0
    00DA 940E016D  CALL	mod16u
    00DC 01F8      MOVW	R30,R16
    00DD E584      LDI	R24,0x54
    00DE E090      LDI	R25,0
    00DF 0FE8      ADD	R30,R24
    00E0 1FF9      ADC	R31,R25
    00E1 91E4      LPM	R30,0(Z)
    00E2 BBEB      OUT	0x1B,R30
    00E3 E6E0      LDI	R30,0x60
    00E4 E0F0      LDI	R31,0
    00E5 91E4      LPM	R30,0(Z)
    00E6 BBE5      OUT	0x15,R30
    00E7 C013      RJMP	0x00FB
(0054)  case 3:PORTA=SEG7[dis_val/1000];PORTC=ACT[3];break;
    00E8 EE28      LDI	R18,0xE8
    00E9 E033      LDI	R19,3
    00EA 91000062  LDS	R16,dis_val
    00EC 91100063  LDS	R17,dis_val+1
    00EE 940E016F  CALL	div16u
    00F0 01F8      MOVW	R30,R16
    00F1 E584      LDI	R24,0x54
    00F2 E090      LDI	R25,0
    00F3 0FE8      ADD	R30,R24
    00F4 1FF9      ADC	R31,R25
    00F5 91E4      LPM	R30,0(Z)
    00F6 BBEB      OUT	0x1B,R30
    00F7 E6E1      LDI	R30,0x61
    00F8 E0F0      LDI	R31,0
    00F9 91E4      LPM	R30,0(Z)
    00FA BBE5      OUT	0x15,R30
(0055)  default:break;
    00FB 940E023B  CALL	pop_gset1
    00FD 9029      LD	R2,Y+
    00FE BE2F      OUT	0x3F,R2
    00FF 91F9      LD	R31,Y+
    0100 91E9      LD	R30,Y+
    0101 9199      LD	R25,Y+
    0102 9189      LD	R24,Y+
    0103 9139      LD	R19,Y+
    0104 9129      LD	R18,Y+
    0105 9119      LD	R17,Y+
    0106 9109      LD	R16,Y+
    0107 9029      LD	R2,Y+
    0108 9518      RETI
(0056)  }
(0057) }
(0058) //=========================
(0059) uint ADC_Convert(void)		
(0060) {uint temp1,temp2;		
(0061)  temp1=(uint)ADCL;			
_ADC_Convert:
  temp1                --> R18
  temp2                --> R16
    0109 B124      IN	R18,0x04
    010A 2733      CLR	R19
(0062)  temp2=(uint)ADCH;
    010B B105      IN	R16,0x05
    010C 2711      CLR	R17
(0063)  temp2=(temp2<<8)+temp1;	
    010D 0118      MOVW	R2,R16
    010E 2C32      MOV	R3,R2
    010F 2422      CLR	R2
    0110 0E22      ADD	R2,R18
    0111 1E33      ADC	R3,R19
    0112 0181      MOVW	R16,R2
(0064)  return(temp2);			
    0113 9508      RET
_conv:
  y                    --> R10
  x                    --> Y+0
  i                    --> R10
    0114 940E0234  CALL	push_gset3
    0116 0158      MOVW	R10,R16
    0117 9724      SBIW	R28,4
(0065) }
(0066) /**************************/
(0067) uint conv(uint i)		
(0068) {
(0069) long x;				
(0070) uint y;				
(0071) x=(5000*(long)i)/1023;	
    0118 0115      MOVW	R2,R10
    0119 2444      CLR	R4
    011A 2455      CLR	R5
    011B E848      LDI	R20,0x88
    011C E153      LDI	R21,0x13
    011D E060      LDI	R22,0
    011E E070      LDI	R23,0
    011F 925A      ST	R5,-Y
    0120 924A      ST	R4,-Y
    0121 923A      ST	R3,-Y
    0122 922A      ST	R2,-Y
    0123 018A      MOVW	R16,R20
    0124 019B      MOVW	R18,R22
    0125 940E01FA  CALL	empy32s
    0127 EF4F      LDI	R20,0xFF
    0128 E053      LDI	R21,3
    0129 E060      LDI	R22,0
    012A E070      LDI	R23,0
    012B 937A      ST	R23,-Y
    012C 936A      ST	R22,-Y
    012D 935A      ST	R21,-Y
    012E 934A      ST	R20,-Y
    012F 940E018F  CALL	div32s
    0131 01FE      MOVW	R30,R28
    0132 8300      STD	Z+0,R16
    0133 8311      STD	Z+1,R17
    0134 8322      STD	Z+2,R18
    0135 8333      STD	Z+3,R19
(0072) y=(uint)x;	
    0136 01FE      MOVW	R30,R28
    0137 80A0      LDD	R10,Z+0
    0138 80B1      LDD	R11,Z+1
(0073) return y;	
    0139 0185      MOVW	R16,R10
    013A 9624      ADIW	R28,4
    013B 940E022D  CALL	pop_gset3
    013D 9508      RET
_delay:
  i                    --> R20
  j                    --> R22
  k                    --> R16
    013E 940E0236  CALL	push_gset2
(0074) } 
(0075) /***********************/
(0076) void delay(uint k)	
(0077) {
(0078) uint i,j;
(0079) 	 for(i=0;i<k;i++)
    0140 2744      CLR	R20

⌨️ 快捷键说明

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