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

📄 ac11-1.lst

📁 AVR学习资料
💻 LST
字号:
__text_start:
__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 36E5      CPI	R30,0x65
    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 940E00F0  CALL	_main
_exit:
    0051 CFFF      RJMP	_exit
_delay_ms:
  i                    --> R20
  j                    --> R22
  k                    --> R16
    0052 940E0164  CALL	push_gset2
FILE: d:\MYDOCU~1\ac11-1\ac11-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) uchar val,DispBuff[4];		
(0008) //*************************************
(0009) void delay_ms(uint k) 	
(0010) {
(0011) uint i,j;			
(0012)     for(i=0;i<k;i++)
    0054 2744      CLR	R20
    0055 2755      CLR	R21
    0056 C00B      RJMP	0x0062
(0013)     {
(0014)        for(j=0;j<1140;j++)
    0057 2766      CLR	R22
    0058 2777      CLR	R23
    0059 C002      RJMP	0x005C
    005A 5F6F      SUBI	R22,0xFF
    005B 4F7F      SBCI	R23,0xFF
    005C 3764      CPI	R22,0x74
    005D E0E4      LDI	R30,4
    005E 077E      CPC	R23,R30
    005F F3D0      BCS	0x005A
    0060 5F4F      SUBI	R20,0xFF
    0061 4F5F      SBCI	R21,0xFF
    0062 1740      CP	R20,R16
    0063 0751      CPC	R21,R17
    0064 F390      BCS	0x0057
    0065 940E015B  CALL	pop_gset2
    0067 9508      RET
(0015)        ;
(0016)     }
(0017) }
(0018) //***************写EEPROM子函数*****************
(0019) void W_EEP(uint add,uchar dat) 
(0020) {
(0021) while(EECR&(1<<EEWE));	
_W_EEP:
  dat                  --> R18
  add                  --> R16
    0068 99E1      SBIC	0x1C,1
    0069 CFFE      RJMP	_W_EEP
(0022) EEAR=add;				
    006A BB1F      OUT	0x1F,R17
    006B BB0E      OUT	0x1E,R16
(0023) EEDR=dat;				
    006C BB2D      OUT	0x1D,R18
(0024) EECR|=(1<<EEMWE);
    006D 9AE2      SBI	0x1C,2
(0025) EECR|=(1<<EEWE);	
    006E 9AE1      SBI	0x1C,1
    006F 9508      RET
(0026) }
(0027) //****************读EEPROM子函数*******************
(0028) uchar R_EEP(uint add)	
(0029) {
(0030) while(EECR&(1<<EEWE));
_R_EEP:
  add                  --> R16
    0070 99E1      SBIC	0x1C,1
    0071 CFFE      RJMP	_R_EEP
(0031) EEAR=add;				
    0072 BB1F      OUT	0x1F,R17
    0073 BB0E      OUT	0x1E,R16
(0032) EECR|=(1<<EERE);		
    0074 9AE0      SBI	0x1C,0
(0033) return EEDR;		
    0075 B30D      IN	R16,0x1D
    0076 9508      RET
_conv:
  i                    --> R20
    0077 940E0166  CALL	push_gset1
    0079 2F40      MOV	R20,R16
(0034) }
(0035) //****************数据转换子函数*********************
(0036) void conv(uchar i)	
(0037) {
(0038) DispBuff[3]=i/1000;
    007A EE28      LDI	R18,0xE8
    007B E033      LDI	R19,3
    007C 2F04      MOV	R16,R20
    007D 2711      CLR	R17
    007E 940E010D  CALL	div16s
    0080 93000063  STS	DispBuff+3,R16
(0039) DispBuff[2]=(i%1000)/100;
    0082 EE28      LDI	R18,0xE8
    0083 E033      LDI	R19,3
    0084 2F04      MOV	R16,R20
    0085 2711      CLR	R17
    0086 940E0109  CALL	mod16s
    0088 E624      LDI	R18,0x64
    0089 E030      LDI	R19,0
    008A 940E010D  CALL	div16s
    008C 93000062  STS	DispBuff+2,R16
(0040) DispBuff[1]=(i%100)/10;
    008E E614      LDI	R17,0x64
    008F 2F04      MOV	R16,R20
    0090 940E0143  CALL	mod8u
    0092 E01A      LDI	R17,0xA
    0093 940E0145  CALL	div8u
    0095 93000061  STS	DispBuff+1,R16
(0041) DispBuff[0]=i%10;
    0097 E01A      LDI	R17,0xA
    0098 2F04      MOV	R16,R20
    0099 940E0143  CALL	mod8u
    009B 93000060  STS	DispBuff,R16
    009D 940E0169  CALL	pop_gset1
    009F 9508      RET
_display:
  p                    --> R20
    00A0 940E0166  CALL	push_gset1
    00A2 01A8      MOVW	R20,R16
(0042) }
(0043) //*************************************
(0044) void display(uchar p[4]) 
(0045) {
(0046) PORTA=SEG7[p[0]];
    00A3 E584      LDI	R24,0x54
    00A4 E090      LDI	R25,0
    00A5 01FA      MOVW	R30,R20
    00A6 81E0      LDD	R30,Z+0
    00A7 27FF      CLR	R31
    00A8 0FE8      ADD	R30,R24
    00A9 1FF9      ADC	R31,R25
    00AA 91E4      LPM	R30,0(Z)
    00AB BBEB      OUT	0x1B,R30
(0047) PORTC=ACT[0];
    00AC E5EE      LDI	R30,0x5E
    00AD E0F0      LDI	R31,0
    00AE 91E4      LPM	R30,0(Z)
    00AF BBE5      OUT	0x15,R30
(0048) delay_ms(1);
    00B0 E001      LDI	R16,1
    00B1 E010      LDI	R17,0
    00B2 DF9F      RCALL	_delay_ms
(0049) PORTA=SEG7[p[1]];
    00B3 E584      LDI	R24,0x54
    00B4 E090      LDI	R25,0
    00B5 01FA      MOVW	R30,R20
    00B6 81E1      LDD	R30,Z+1
    00B7 27FF      CLR	R31
    00B8 0FE8      ADD	R30,R24
    00B9 1FF9      ADC	R31,R25
    00BA 91E4      LPM	R30,0(Z)
    00BB BBEB      OUT	0x1B,R30
(0050) PORTC=ACT[1];
    00BC E5EF      LDI	R30,0x5F
    00BD E0F0      LDI	R31,0
    00BE 91E4      LPM	R30,0(Z)
    00BF BBE5      OUT	0x15,R30
(0051) delay_ms(1);
    00C0 E001      LDI	R16,1
    00C1 E010      LDI	R17,0
    00C2 DF8F      RCALL	_delay_ms
(0052) PORTA=SEG7[p[2]];
    00C3 E584      LDI	R24,0x54
    00C4 E090      LDI	R25,0
    00C5 01FA      MOVW	R30,R20
    00C6 81E2      LDD	R30,Z+2
    00C7 27FF      CLR	R31
    00C8 0FE8      ADD	R30,R24
    00C9 1FF9      ADC	R31,R25
    00CA 91E4      LPM	R30,0(Z)
    00CB BBEB      OUT	0x1B,R30
(0053) PORTC=ACT[2];
    00CC E6E0      LDI	R30,0x60
    00CD E0F0      LDI	R31,0
    00CE 91E4      LPM	R30,0(Z)
    00CF BBE5      OUT	0x15,R30
(0054) delay_ms(1);
    00D0 E001      LDI	R16,1
    00D1 E010      LDI	R17,0
    00D2 DF7F      RCALL	_delay_ms
(0055) PORTA=SEG7[p[3]];
    00D3 E584      LDI	R24,0x54
    00D4 E090      LDI	R25,0
    00D5 01FA      MOVW	R30,R20
    00D6 81E3      LDD	R30,Z+3
    00D7 27FF      CLR	R31
    00D8 0FE8      ADD	R30,R24
    00D9 1FF9      ADC	R31,R25
    00DA 91E4      LPM	R30,0(Z)
    00DB BBEB      OUT	0x1B,R30
(0056) PORTC=ACT[3];
    00DC E6E1      LDI	R30,0x61
    00DD E0F0      LDI	R31,0
    00DE 91E4      LPM	R30,0(Z)
    00DF BBE5      OUT	0x15,R30
(0057) delay_ms(1);
    00E0 E001      LDI	R16,1
    00E1 E010      LDI	R17,0
    00E2 DF6F      RCALL	_delay_ms
    00E3 940E0169  CALL	pop_gset1
    00E5 9508      RET
(0058) }
(0059) //*************************************
(0060) void port_init(void)
(0061) {							
(0062)  PORTA = 0xFF;			
_port_init:
    00E6 EF8F      LDI	R24,0xFF
    00E7 BB8B      OUT	0x1B,R24
(0063)  DDRA  = 0xFF;			
    00E8 BB8A      OUT	0x1A,R24
(0064)  PORTB = 0xFF;			
    00E9 BB88      OUT	0x18,R24
(0065)  DDRB  = 0xFF;		
    00EA BB87      OUT	0x17,R24
(0066)  PORTC = 0xFF; 			
    00EB BB85      OUT	0x15,R24
(0067)  DDRC  = 0xFF;	
    00EC BB84      OUT	0x14,R24
(0068)  PORTD = 0xFF;			
    00ED BB82      OUT	0x12,R24
(0069)  DDRD  = 0xFF;			
    00EE BB81      OUT	0x11,R24
    00EF 9508      RET
(0070) }							
(0071) //*************************************
(0072) void main(void)			
(0073) {
(0074) port_init();		
_main:
    00F0 DFF5      RCALL	_port_init
(0075) W_EEP(488,21);delay_ms(10);	
    00F1 E125      LDI	R18,0x15
    00F2 EE08      LDI	R16,0xE8
    00F3 E011      LDI	R17,1
    00F4 DF73      RCALL	_W_EEP
    00F5 E00A      LDI	R16,0xA
    00F6 E010      LDI	R17,0
    00F7 DF5A      RCALL	_delay_ms
(0076) val=R_EEP(488);delay_ms(10);
    00F8 EE08      LDI	R16,0xE8
    00F9 E011      LDI	R17,1
    00FA DF75      RCALL	_R_EEP
    00FB 93000064  STS	val,R16
    00FD E00A      LDI	R16,0xA
    00FE E010      LDI	R17,0
    00FF DF52      RCALL	_delay_ms
(0077) conv(val);				
    0100 91000064  LDS	R16,val
    0102 DF74      RCALL	_conv
    0103 C003      RJMP	0x0107
(0078) while(1)	
(0079) {
(0080) display(DispBuff);	
FILE: <library>
    0104 E600      LDI	R16,0x60
    0105 E010      LDI	R17,0
    0106 DF99      RCALL	_display
    0107 CFFC      RJMP	0x0104
    0108 9508      RET
mod16s:
    0109 9468      BSET	6
    010A 92DA      ST	R13,-Y
    010B 2ED1      MOV	R13,R17
    010C C004      RJMP	0x0111
div16s:
    010D 94E8      BCLR	6
    010E 92DA      ST	R13,-Y
    010F 2ED1      MOV	R13,R17
    0110 26D3      EOR	R13,R19
    0111 FF17      SBRS	R17,7
    0112 C004      RJMP	0x0117
    0113 9510      COM	R17
    0114 9500      COM	R16
    0115 5F0F      SUBI	R16,0xFF
    0116 4F1F      SBCI	R17,0xFF
    0117 FF37      SBRS	R19,7
    0118 C004      RJMP	0x011D
    0119 9530      COM	R19
    011A 9520      COM	R18
    011B 5F2F      SUBI	R18,0xFF
    011C 4F3F      SBCI	R19,0xFF
    011D 940E012A  CALL	xdiv16u
    011F FED7      SBRS	R13,7
    0120 C004      RJMP	0x0125
    0121 9510      COM	R17
    0122 9500      COM	R16
    0123 5F0F      SUBI	R16,0xFF
    0124 4F1F      SBCI	R17,0xFF
    0125 90D9      LD	R13,Y+
    0126 9508      RET
mod16u:
    0127 9468      BSET	6
    0128 C001      RJMP	xdiv16u
div16u:
    0129 94E8      BCLR	6
xdiv16u:
    012A 92EA      ST	R14,-Y
    012B 92FA      ST	R15,-Y
    012C 938A      ST	R24,-Y
    012D 24EE      CLR	R14
    012E 24FF      CLR	R15
    012F E180      LDI	R24,0x10
    0130 0F00      LSL	R16
    0131 1F11      ROL	R17
    0132 1CEE      ROL	R14
    0133 1CFF      ROL	R15
    0134 16E2      CP	R14,R18
    0135 06F3      CPC	R15,R19
    0136 F018      BCS	0x013A
    0137 1AE2      SUB	R14,R18
    0138 0AF3      SBC	R15,R19
    0139 9503      INC	R16
    013A 958A      DEC	R24
    013B F7A1      BNE	0x0130
    013C F416      BRTC	0x013F
    013D 2D0E      MOV	R16,R14
    013E 2D1F      MOV	R17,R15
    013F 9189      LD	R24,Y+
    0140 90F9      LD	R15,Y+
    0141 90E9      LD	R14,Y+
    0142 9508      RET
mod8u:
    0143 9468      BSET	6
    0144 C001      RJMP	xdiv8u
div8u:
    0145 94E8      BCLR	6
xdiv8u:
    0146 932A      ST	R18,-Y
    0147 92FA      ST	R15,-Y
    0148 92EA      ST	R14,-Y
    0149 24FF      CLR	R15
    014A 24EE      CLR	R14
    014B E120      LDI	R18,0x10
    014C 0F00      LSL	R16
    014D 1CFF      ROL	R15
    014E 1CEE      ROL	R14
    014F 16E1      CP	R14,R17
    0150 F010      BCS	0x0153
    0151 1AE1      SUB	R14,R17
    0152 9503      INC	R16
    0153 952A      DEC	R18
    0154 F7B9      BNE	0x014C
    0155 F40E      BRTC	0x0157
    0156 2D0E      MOV	R16,R14
    0157 90E9      LD	R14,Y+
    0158 90F9      LD	R15,Y+
    0159 9129      LD	R18,Y+
    015A 9508      RET
pop_gset2:
    015B E0E2      LDI	R30,2
    015C 940C016A  JMP	pop
push_gset5:
    015E 92FA      ST	R15,-Y
    015F 92EA      ST	R14,-Y
push_gset4:
    0160 92DA      ST	R13,-Y
    0161 92CA      ST	R12,-Y
push_gset3:
    0162 92BA      ST	R11,-Y
    0163 92AA      ST	R10,-Y
push_gset2:
    0164 937A      ST	R23,-Y
    0165 936A      ST	R22,-Y
push_gset1:
    0166 935A      ST	R21,-Y
    0167 934A      ST	R20,-Y
    0168 9508      RET
pop_gset1:
    0169 E0E1      LDI	R30,1
pop:
    016A 9149      LD	R20,Y+
    016B 9159      LD	R21,Y+
    016C FDE0      SBRC	R30,0
    016D 9508      RET
    016E 9169      LD	R22,Y+
    016F 9179      LD	R23,Y+
    0170 FDE1      SBRC	R30,1
    0171 9508      RET
    0172 90A9      LD	R10,Y+
    0173 90B9      LD	R11,Y+
    0174 FDE2      SBRC	R30,2
    0175 9508      RET
    0176 90C9      LD	R12,Y+
    0177 90D9      LD	R13,Y+
    0178 FDE3      SBRC	R30,3
    0179 9508      RET
    017A 90E9      LD	R14,Y+
    017B 90F9      LD	R15,Y+
    017C 9508      RET

⌨️ 快捷键说明

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