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

📄 ac11-2.lst

📁 AVR学习资料
💻 LST
字号:
__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 36E2      CPI	R30,0x62
    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 940E013B  CALL	_main
_exit:
    0051 CFFF      RJMP	_exit
_delay_ms:
  i                    --> R20
  j                    --> R22
  k                    --> R16
    0052 940E01B7  CALL	push_gset2
FILE: d:\MYDOCU~1\ac11-2\ac11-2.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 x,y;				
(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 940E01AE  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
(0034) }
(0035) //*************************************
(0036) void display(void)	
(0037) {
(0038) PORTA=SEG7[y%10];
_display:
    0077 E02A      LDI	R18,0xA
    0078 E030      LDI	R19,0
    0079 91000060  LDS	R16,y
    007B 2711      CLR	R17
    007C 940E0174  CALL	mod16s
    007E 01F8      MOVW	R30,R16
    007F E584      LDI	R24,0x54
    0080 E090      LDI	R25,0
    0081 0FE8      ADD	R30,R24
    0082 1FF9      ADC	R31,R25
    0083 91E4      LPM	R30,0(Z)
    0084 BBEB      OUT	0x1B,R30
(0039) PORTC=ACT[0];
    0085 E5EE      LDI	R30,0x5E
    0086 E0F0      LDI	R31,0
    0087 91E4      LPM	R30,0(Z)
    0088 BBE5      OUT	0x15,R30
(0040) delay_ms(1);
    0089 E001      LDI	R16,1
    008A E010      LDI	R17,0
    008B DFC6      RCALL	_delay_ms
(0041) PORTA=SEG7[(y%100)/10];
    008C E624      LDI	R18,0x64
    008D E030      LDI	R19,0
    008E 91000060  LDS	R16,y
    0090 2711      CLR	R17
    0091 940E0174  CALL	mod16s
    0093 E02A      LDI	R18,0xA
    0094 E030      LDI	R19,0
    0095 940E0178  CALL	div16s
    0097 01F8      MOVW	R30,R16
    0098 E584      LDI	R24,0x54
    0099 E090      LDI	R25,0
    009A 0FE8      ADD	R30,R24
    009B 1FF9      ADC	R31,R25
    009C 91E4      LPM	R30,0(Z)
    009D BBEB      OUT	0x1B,R30
(0042) PORTC=ACT[1];
    009E E5EF      LDI	R30,0x5F
    009F E0F0      LDI	R31,0
    00A0 91E4      LPM	R30,0(Z)
    00A1 BBE5      OUT	0x15,R30
(0043) delay_ms(1);
    00A2 E001      LDI	R16,1
    00A3 E010      LDI	R17,0
    00A4 DFAD      RCALL	_delay_ms
(0044) PORTA=SEG7[(y%1000)/100];
    00A5 EE28      LDI	R18,0xE8
    00A6 E033      LDI	R19,3
    00A7 91000060  LDS	R16,y
    00A9 2711      CLR	R17
    00AA 940E0174  CALL	mod16s
    00AC E624      LDI	R18,0x64
    00AD E030      LDI	R19,0
    00AE 940E0178  CALL	div16s
    00B0 01F8      MOVW	R30,R16
    00B1 E584      LDI	R24,0x54
    00B2 E090      LDI	R25,0
    00B3 0FE8      ADD	R30,R24
    00B4 1FF9      ADC	R31,R25
    00B5 91E4      LPM	R30,0(Z)
    00B6 BBEB      OUT	0x1B,R30
(0045) PORTC=ACT[2];
    00B7 E6E0      LDI	R30,0x60
    00B8 E0F0      LDI	R31,0
    00B9 91E4      LPM	R30,0(Z)
    00BA BBE5      OUT	0x15,R30
(0046) delay_ms(1);
    00BB E001      LDI	R16,1
    00BC E010      LDI	R17,0
    00BD DF94      RCALL	_delay_ms
(0047) PORTA=SEG7[y/1000];
    00BE EE28      LDI	R18,0xE8
    00BF E033      LDI	R19,3
    00C0 91000060  LDS	R16,y
    00C2 2711      CLR	R17
    00C3 940E0178  CALL	div16s
    00C5 01F8      MOVW	R30,R16
    00C6 E584      LDI	R24,0x54
    00C7 E090      LDI	R25,0
    00C8 0FE8      ADD	R30,R24
    00C9 1FF9      ADC	R31,R25
    00CA 91E4      LPM	R30,0(Z)
    00CB BBEB      OUT	0x1B,R30
(0048) PORTC=ACT[3];
    00CC E6E1      LDI	R30,0x61
    00CD E0F0      LDI	R31,0
    00CE 91E4      LPM	R30,0(Z)
    00CF BBE5      OUT	0x15,R30
(0049) delay_ms(1);
    00D0 E001      LDI	R16,1
    00D1 E010      LDI	R17,0
    00D2 DF7F      RCALL	_delay_ms
(0050) //----------------------
(0051) PORTA=SEG7[x%10];
    00D3 E02A      LDI	R18,0xA
    00D4 E030      LDI	R19,0
    00D5 91000061  LDS	R16,x
    00D7 2711      CLR	R17
    00D8 940E0174  CALL	mod16s
    00DA 01F8      MOVW	R30,R16
    00DB E584      LDI	R24,0x54
    00DC E090      LDI	R25,0
    00DD 0FE8      ADD	R30,R24
    00DE 1FF9      ADC	R31,R25
    00DF 91E4      LPM	R30,0(Z)
    00E0 BBEB      OUT	0x1B,R30
(0052) PORTC=ACT[4];
    00E1 E6E2      LDI	R30,0x62
    00E2 E0F0      LDI	R31,0
    00E3 91E4      LPM	R30,0(Z)
    00E4 BBE5      OUT	0x15,R30
(0053) delay_ms(1);
    00E5 E001      LDI	R16,1
    00E6 E010      LDI	R17,0
    00E7 DF6A      RCALL	_delay_ms
(0054) PORTA=SEG7[(x%100)/10];
    00E8 E624      LDI	R18,0x64
    00E9 E030      LDI	R19,0
    00EA 91000061  LDS	R16,x
    00EC 2711      CLR	R17
    00ED 940E0174  CALL	mod16s
    00EF E02A      LDI	R18,0xA
    00F0 E030      LDI	R19,0
    00F1 940E0178  CALL	div16s
    00F3 01F8      MOVW	R30,R16
    00F4 E584      LDI	R24,0x54
    00F5 E090      LDI	R25,0
    00F6 0FE8      ADD	R30,R24
    00F7 1FF9      ADC	R31,R25
    00F8 91E4      LPM	R30,0(Z)
    00F9 BBEB      OUT	0x1B,R30
(0055) PORTC=ACT[5];
    00FA E6E3      LDI	R30,0x63
    00FB E0F0      LDI	R31,0
    00FC 91E4      LPM	R30,0(Z)
    00FD BBE5      OUT	0x15,R30
(0056) delay_ms(1);
    00FE E001      LDI	R16,1
    00FF E010      LDI	R17,0
    0100 DF51      RCALL	_delay_ms
(0057) PORTA=SEG7[(x%1000)/100];
    0101 EE28      LDI	R18,0xE8
    0102 E033      LDI	R19,3
    0103 91000061  LDS	R16,x
    0105 2711      CLR	R17
    0106 940E0174  CALL	mod16s
    0108 E624      LDI	R18,0x64
    0109 E030      LDI	R19,0
    010A 940E0178  CALL	div16s
    010C 01F8      MOVW	R30,R16
    010D E584      LDI	R24,0x54
    010E E090      LDI	R25,0
    010F 0FE8      ADD	R30,R24
    0110 1FF9      ADC	R31,R25
    0111 91E4      LPM	R30,0(Z)
    0112 BBEB      OUT	0x1B,R30
(0058) PORTC=ACT[6];
    0113 E6E4      LDI	R30,0x64
    0114 E0F0      LDI	R31,0
    0115 91E4      LPM	R30,0(Z)
    0116 BBE5      OUT	0x15,R30
(0059) delay_ms(1);
    0117 E001      LDI	R16,1
    0118 E010      LDI	R17,0
    0119 DF38      RCALL	_delay_ms
(0060) PORTA=SEG7[x/1000];
    011A EE28      LDI	R18,0xE8
    011B E033      LDI	R19,3
    011C 91000061  LDS	R16,x
    011E 2711      CLR	R17
    011F 940E0178  CALL	div16s
    0121 01F8      MOVW	R30,R16
    0122 E584      LDI	R24,0x54
    0123 E090      LDI	R25,0
    0124 0FE8      ADD	R30,R24
    0125 1FF9      ADC	R31,R25
    0126 91E4      LPM	R30,0(Z)
    0127 BBEB      OUT	0x1B,R30
(0061) PORTC=ACT[7];
    0128 E6E5      LDI	R30,0x65
    0129 E0F0      LDI	R31,0
    012A 91E4      LPM	R30,0(Z)
    012B BBE5      OUT	0x15,R30
(0062) delay_ms(1);
    012C E001      LDI	R16,1
    012D E010      LDI	R17,0
    012E DF23      RCALL	_delay_ms
    012F 9508      RET
(0063) }
(0064) //*************************************
(0065) void port_init(void)
(0066) {							
(0067)  PORTA = 0xFF;			
_port_init:
    0130 EF8F      LDI	R24,0xFF
    0131 BB8B      OUT	0x1B,R24
(0068)  DDRA  = 0xFF;		
    0132 BB8A      OUT	0x1A,R24
(0069)  PORTB = 0xFF;			
    0133 BB88      OUT	0x18,R24
(0070)  DDRB  = 0xFF;			
    0134 BB87      OUT	0x17,R24
(0071)  PORTC = 0xFF; 			
    0135 BB85      OUT	0x15,R24
(0072)  DDRC  = 0xFF;		
    0136 BB84      OUT	0x14,R24
(0073)  PORTD = 0xFF;		
    0137 BB82      OUT	0x12,R24
(0074)  DDRD  = 0x00;		
    0138 2422      CLR	R2
    0139 BA21      OUT	0x11,R2
    013A 9508      RET
(0075) }
(0076) //*************************************
(0077) void main(void)		
(0078) {uchar i;			
(0079) port_init();		
_main:
  i                    --> R20
    013B DFF4      RCALL	_port_init
    013C C035      RJMP	0x0172
(0080) while(1)
(0081) 		{
(0082) 		if((PIND&0x10)==0)	
    013D 9984      SBIC	0x10,4
    013E C00D      RJMP	0x014C
(0083) 		{
(0084) 		if(x<255)x++;		
    013F 91800061  LDS	R24,x
    0141 3F8F      CPI	R24,0xFF
    0142 F418      BCC	0x0146
    0143 5F8F      SUBI	R24,0xFF
    0144 93800061  STS	x,R24
(0085) 		for(i=0;i<25;i++)	
    0146 2744      CLR	R20
    0147 C002      RJMP	0x014A
(0086) 		display();			
    0148 DF2E      RCALL	_display
    0149 9543      INC	R20
    014A 3149      CPI	R20,0x19
    014B F3E0      BCS	0x0148
(0087) 		}
(0088) //---------------
(0089) 		if((PIND&0x20)==0)	
    014C 9985      SBIC	0x10,5
    014D C00F      RJMP	0x015D
(0090) 		{
(0091) 		if(x>0)x--;			
    014E 2422      CLR	R2
    014F 90300061  LDS	R3,x
    0151 1423      CP	R2,R3
    0152 F420      BCC	0x0157
    0153 2D83      MOV	R24,R3
    0154 5081      SUBI	R24,1
    0155 93800061  STS	x,R24
(0092) 		for(i=0;i<50;i++)	
    0157 2744      CLR	R20
    0158 C002      RJMP	0x015B
(0093) 		display();		
    0159 DF1D      RCALL	_display
    015A 9543      INC	R20
    015B 3342      CPI	R20,0x32
    015C F3E0      BCS	0x0159
(0094) 		}
(0095) //***************
(0096) 		if((PIND&0x40)==0){W_EEP(200,x);delay_ms(10);} 
    015D 9986      SBIC	0x10,6
    015E C008      RJMP	0x0167
    015F 91200061  LDS	R18,x
    0161 EC08      LDI	R16,0xC8
    0162 E010      LDI	R17,0
    0163 DF04      RCALL	_W_EEP
    0164 E00A      LDI	R16,0xA
    0165 E010      LDI	R17,0
    0166 DEEB      RCALL	_delay_ms
(0097) 		if((PIND&0x80)==0){y=R_EEP(200);delay_ms(10);} 
    0167 9987      SBIC	0x10,7
    0168 C008      RJMP	0x0171
    0169 EC08      LDI	R16,0xC8
    016A E010      LDI	R17,0
    016B DF04      RCALL	_R_EEP
    016C 93000060  STS	y,R16
    016E E00A      LDI	R16,0xA
    016F E010      LDI	R17,0
    0170 DEE1      RCALL	_delay_ms
(0098) 		display();		
FILE: <library>
    0171 DF05      RCALL	_display
    0172 CFCA      RJMP	0x013D
    0173 9508      RET
mod16s:
    0174 9468      BSET	6
    0175 92DA      ST	R13,-Y
    0176 2ED1      MOV	R13,R17
    0177 C004      RJMP	0x017C
div16s:
    0178 94E8      BCLR	6
    0179 92DA      ST	R13,-Y
    017A 2ED1      MOV	R13,R17
    017B 26D3      EOR	R13,R19
    017C FF17      SBRS	R17,7
    017D C004      RJMP	0x0182
    017E 9510      COM	R17
    017F 9500      COM	R16
    0180 5F0F      SUBI	R16,0xFF
    0181 4F1F      SBCI	R17,0xFF
    0182 FF37      SBRS	R19,7
    0183 C004      RJMP	0x0188
    0184 9530      COM	R19
    0185 9520      COM	R18
    0186 5F2F      SUBI	R18,0xFF
    0187 4F3F      SBCI	R19,0xFF
    0188 940E0195  CALL	xdiv16u
    018A FED7      SBRS	R13,7
    018B C004      RJMP	0x0190
    018C 9510      COM	R17
    018D 9500      COM	R16
    018E 5F0F      SUBI	R16,0xFF
    018F 4F1F      SBCI	R17,0xFF
    0190 90D9      LD	R13,Y+
    0191 9508      RET
mod16u:
    0192 9468      BSET	6
    0193 C001      RJMP	xdiv16u
div16u:
    0194 94E8      BCLR	6
xdiv16u:
    0195 92EA      ST	R14,-Y
    0196 92FA      ST	R15,-Y
    0197 938A      ST	R24,-Y
    0198 24EE      CLR	R14
    0199 24FF      CLR	R15
    019A E180      LDI	R24,0x10
    019B 0F00      LSL	R16
    019C 1F11      ROL	R17
    019D 1CEE      ROL	R14
    019E 1CFF      ROL	R15
    019F 16E2      CP	R14,R18
    01A0 06F3      CPC	R15,R19
    01A1 F018      BCS	0x01A5
    01A2 1AE2      SUB	R14,R18
    01A3 0AF3      SBC	R15,R19
    01A4 9503      INC	R16
    01A5 958A      DEC	R24
    01A6 F7A1      BNE	0x019B
    01A7 F416      BRTC	0x01AA
    01A8 2D0E      MOV	R16,R14
    01A9 2D1F      MOV	R17,R15
    01AA 9189      LD	R24,Y+
    01AB 90F9      LD	R15,Y+
    01AC 90E9      LD	R14,Y+
    01AD 9508      RET
pop_gset2:
    01AE E0E2      LDI	R30,2
    01AF 940C01BD  JMP	pop
push_gset5:
    01B1 92FA      ST	R15,-Y
    01B2 92EA      ST	R14,-Y
push_gset4:
    01B3 92DA      ST	R13,-Y
    01B4 92CA      ST	R12,-Y
push_gset3:
    01B5 92BA      ST	R11,-Y
    01B6 92AA      ST	R10,-Y
push_gset2:
    01B7 937A      ST	R23,-Y
    01B8 936A      ST	R22,-Y
push_gset1:
    01B9 935A      ST	R21,-Y
    01BA 934A      ST	R20,-Y
    01BB 9508      RET
pop_gset1:
    01BC E0E1      LDI	R30,1
pop:
    01BD 9149      LD	R20,Y+
    01BE 9159      LD	R21,Y+
    01BF FDE0      SBRC	R30,0
    01C0 9508      RET
    01C1 9169      LD	R22,Y+
    01C2 9179      LD	R23,Y+
    01C3 FDE1      SBRC	R30,1
    01C4 9508      RET
    01C5 90A9      LD	R10,Y+
    01C6 90B9      LD	R11,Y+
    01C7 FDE2      SBRC	R30,2
    01C8 9508      RET
    01C9 90C9      LD	R12,Y+
    01CA 90D9      LD	R13,Y+
    01CB FDE3      SBRC	R30,3
    01CC 9508      RET
    01CD 90E9      LD	R14,Y+
    01CE 90F9      LD	R15,Y+
    01CF 9508      RET

⌨️ 快捷键说明

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