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

📄 09ad.lst

📁 这是一个AD转换程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0037) 	PORTB = 0xFF;										/*输出高电平*/
    0102 BB88      OUT	0x18,R24
(0038) 	DDRC = 0x00;										/*不用的IO口建议设置为输入带上拉*/
    0103 BA24      OUT	0x14,R2
(0039) 	PORTC = 0xFF;
    0104 BB85      OUT	0x15,R24
(0040) 	DDRD = 0x00;
    0105 BA21      OUT	0x11,R2
(0041) 	PORTD = 0xFF;
    0106 BB82      OUT	0x12,R24
(0042) 	DDRE = 0x00;
    0107 B822      OUT	0x02,R2
(0043) 	PORTE = 0xFF;
    0108 B983      OUT	0x03,R24
(0044) 	DDRF = 0x00;
    0109 92200061  STS	0x61,R2
(0045) 	PORTF = 0xFE;										/*PF0无上拉电阻*/
    010B EF8E      LDI	R24,0xFE
    010C 93800062  STS	0x62,R24
(0046) 	DDRG = 0x00;
    010E 92200064  STS	0x64,R2
(0047) 	PORTG = 0xFF;
    0110 EF8F      LDI	R24,0xFF
    0111 93800065  STS	0x65,R24
    0113 9508      RET
_int_to_bcd:
  i                    --> R20
  temp                 --> R22
    0114 940E01C8  CALL	push_gset2
    0116 01B8      MOVW	R22,R16
(0048) }
(0049) 
(0050) /*十六进制转十进制函数*/
(0051) void int_to_bcd(unsigned int temp) { 
(0052) 	unsigned char i;
(0053) 
(0054) 	if (temp > 9999) {									/*防止数值过大*/
    0117 E08F      LDI	R24,0xF
    0118 E297      LDI	R25,0x27
    0119 1786      CP	R24,R22
    011A 0797      CPC	R25,R23
    011B F410      BCC	0x011E
(0055) 		temp = 9999;
    011C E06F      LDI	R22,0xF
    011D E277      LDI	R23,0x27
(0056) 		}
(0057) 	for (i = 0; i < 4; i++) {
    011E 2744      CLR	R20
    011F C013      RJMP	0x0133
(0058) 	led_buf[i] = temp % 10;								/*提取当前变量最低位*/
    0120 E02A      LDI	R18,0xA
    0121 E030      LDI	R19,0
    0122 018B      MOVW	R16,R22
    0123 940E015B  CALL	mod16u
    0125 E180      LDI	R24,0x10
    0126 E091      LDI	R25,1
    0127 2FE4      MOV	R30,R20
    0128 27FF      CLR	R31
    0129 0FE8      ADD	R30,R24
    012A 1FF9      ADC	R31,R25
    012B 8300      STD	Z+0,R16
(0059) 	temp = temp / 10;									/*去掉当前最低位值*/
    012C E02A      LDI	R18,0xA
    012D E030      LDI	R19,0
    012E 018B      MOVW	R16,R22
    012F 940E015D  CALL	div16u
    0131 01B8      MOVW	R22,R16
    0132 9543      INC	R20
    0133 3044      CPI	R20,4
    0134 F358      BCS	0x0120
    0135 940E01BF  CALL	pop_gset2
    0137 9508      RET
(0060)     }
(0061) }
(0062) 
(0063) void main(void) {
(0064) 
(0065) 	unsigned int i;
(0066) 
(0067) 	delay_ms(200);										/*加入延时*/
_main:
  i                    --> R10
    0138 EC08      LDI	R16,0xC8
    0139 DFB4      RCALL	_delay_ms
(0068) 	io_init();											/*IO口初始化*/
    013A DFC2      RCALL	_io_init
(0069) 	disp_init();										/*显示初始化*/
    013B 940E007D  CALL	_disp_init
    013D C01B      RJMP	0x0159
(0070) 	while (1) {
(0071) 		delay_ms(100);									/*周期控制*/
    013E E604      LDI	R16,0x64
    013F DFAE      RCALL	_delay_ms
(0072) 		i = get_ad();									/*获取电压*/
    0140 940E0072  CALL	_get_ad
    0142 0158      MOVW	R10,R16
(0073) 		i = (unsigned int)(((unsigned long)i*5000)/1024);/*将AD结果转成电压值*/
    0143 0115      MOVW	R2,R10
    0144 2444      CLR	R4
    0145 2455      CLR	R5
    0146 E848      LDI	R20,0x88
    0147 E153      LDI	R21,0x13
    0148 E060      LDI	R22,0
    0149 E070      LDI	R23,0
    014A 925A      ST	R5,-Y
    014B 924A      ST	R4,-Y
    014C 923A      ST	R3,-Y
    014D 922A      ST	R2,-Y
    014E 018A      MOVW	R16,R20
    014F 019B      MOVW	R18,R22
    0150 940E018F  CALL	empy32s
    0152 E08A      LDI	R24,0xA
    0153 E090      LDI	R25,0
    0154 938A      ST	R24,-Y
    0155 940E0206  CALL	lsr32
    0157 0158      MOVW	R10,R16
(0074) 		int_to_bcd(i);									/*将电压值提取出来*/
FILE: <library>
    0158 DFBB      RCALL	_int_to_bcd
    0159 CFE4      RJMP	0x013E
    015A 9508      RET
mod16u:
    015B 9468      BSET	6
    015C C001      RJMP	xdiv16u
div16u:
    015D 94E8      BCLR	6
xdiv16u:
    015E 92EA      ST	R14,-Y
    015F 92FA      ST	R15,-Y
    0160 938A      ST	R24,-Y
    0161 24EE      CLR	R14
    0162 24FF      CLR	R15
    0163 E180      LDI	R24,0x10
    0164 0F00      LSL	R16
    0165 1F11      ROL	R17
    0166 1CEE      ROL	R14
    0167 1CFF      ROL	R15
    0168 16E2      CP	R14,R18
    0169 06F3      CPC	R15,R19
    016A F018      BCS	0x016E
    016B 1AE2      SUB	R14,R18
    016C 0AF3      SBC	R15,R19
    016D 9503      INC	R16
    016E 958A      DEC	R24
    016F F7A1      BNE	0x0164
    0170 F416      BRTC	0x0173
    0171 2D0E      MOV	R16,R14
    0172 2D1F      MOV	R17,R15
    0173 9189      LD	R24,Y+
    0174 90F9      LD	R15,Y+
    0175 90E9      LD	R14,Y+
    0176 9508      RET
mod8u:
    0177 9468      BSET	6
    0178 C001      RJMP	xdiv8u
div8u:
    0179 94E8      BCLR	6
xdiv8u:
    017A 932A      ST	R18,-Y
    017B 92FA      ST	R15,-Y
    017C 92EA      ST	R14,-Y
    017D 24FF      CLR	R15
    017E 24EE      CLR	R14
    017F E120      LDI	R18,0x10
    0180 0F00      LSL	R16
    0181 1CFF      ROL	R15
    0182 1CEE      ROL	R14
    0183 16E1      CP	R14,R17
    0184 F010      BCS	0x0187
    0185 1AE1      SUB	R14,R17
    0186 9503      INC	R16
    0187 952A      DEC	R18
    0188 F7B9      BNE	0x0180
    0189 F40E      BRTC	0x018B
    018A 2D0E      MOV	R16,R14
    018B 90E9      LD	R14,Y+
    018C 90F9      LD	R15,Y+
    018D 9129      LD	R18,Y+
    018E 9508      RET
empy32s:
empy32u:
    018F 940E01E1  CALL	long_prolog
    0191 927F      PUSH	R7
    0192 940E01FA  CALL	tstzero1
    0194 F139      BEQ	0x01BC
    0195 2477      CLR	R7
    0196 940E0200  CALL	tstzero2
    0198 F419      BNE	0x019C
    0199 018C      MOVW	R16,R24
    019A 019D      MOVW	R18,R26
    019B C020      RJMP	0x01BC
    019C 9F08      MUL	R16,R24
    019D 2CB0      MOV	R11,R0
    019E 2CA1      MOV	R10,R1
    019F 9F28      MUL	R18,R24
    01A0 2C90      MOV	R9,R0
    01A1 2C81      MOV	R8,R1
    01A2 9F18      MUL	R17,R24
    01A3 0CA0      ADD	R10,R0
    01A4 1C91      ADC	R9,R1
    01A5 1C87      ADC	R8,R7
    01A6 9F09      MUL	R16,R25
    01A7 0CA0      ADD	R10,R0
    01A8 1C91      ADC	R9,R1
    01A9 1C87      ADC	R8,R7
    01AA 9F19      MUL	R17,R25
    01AB 0C90      ADD	R9,R0
    01AC 1C81      ADC	R8,R1
    01AD 9F0A      MUL	R16,R26
    01AE 0C90      ADD	R9,R0
    01AF 1C81      ADC	R8,R1
    01B0 9F38      MUL	R19,R24
    01B1 0C80      ADD	R8,R0
    01B2 9F29      MUL	R18,R25
    01B3 0C80      ADD	R8,R0
    01B4 9F1A      MUL	R17,R26
    01B5 0C80      ADD	R8,R0
    01B6 9F0B      MUL	R16,R27
    01B7 0C80      ADD	R8,R0
    01B8 2D0B      MOV	R16,R11
    01B9 2D1A      MOV	R17,R10
    01BA 2D29      MOV	R18,R9
    01BB 2D38      MOV	R19,R8
    01BC 907F      POP	R7
    01BD 940C01EF  JMP	long_epilog
pop_gset2:
    01BF E0E2      LDI	R30,2
    01C0 940C01CE  JMP	pop
push_gset5:
    01C2 92FA      ST	R15,-Y
    01C3 92EA      ST	R14,-Y
push_gset4:
    01C4 92DA      ST	R13,-Y
    01C5 92CA      ST	R12,-Y
push_gset3:
    01C6 92BA      ST	R11,-Y
    01C7 92AA      ST	R10,-Y
push_gset2:
    01C8 937A      ST	R23,-Y
    01C9 936A      ST	R22,-Y
push_gset1:
    01CA 935A      ST	R21,-Y
    01CB 934A      ST	R20,-Y
    01CC 9508      RET
pop_gset1:
    01CD E0E1      LDI	R30,1
pop:
    01CE 9149      LD	R20,Y+
    01CF 9159      LD	R21,Y+
    01D0 FDE0      SBRC	R30,0
    01D1 9508      RET
    01D2 9169      LD	R22,Y+
    01D3 9179      LD	R23,Y+
    01D4 FDE1      SBRC	R30,1
    01D5 9508      RET
    01D6 90A9      LD	R10,Y+
    01D7 90B9      LD	R11,Y+
    01D8 FDE2      SBRC	R30,2
    01D9 9508      RET
    01DA 90C9      LD	R12,Y+
    01DB 90D9      LD	R13,Y+
    01DC FDE3      SBRC	R30,3
    01DD 9508      RET
    01DE 90E9      LD	R14,Y+
    01DF 90F9      LD	R15,Y+
    01E0 9508      RET
long_prolog:
    01E1 928A      ST	R8,-Y
    01E2 929A      ST	R9,-Y
    01E3 92AA      ST	R10,-Y
    01E4 92BA      ST	R11,-Y
    01E5 93EA      ST	R30,-Y
    01E6 938A      ST	R24,-Y
    01E7 939A      ST	R25,-Y
    01E8 93AA      ST	R26,-Y
    01E9 93BA      ST	R27,-Y
    01EA 8589      LDD	R24,Y+9
    01EB 859A      LDD	R25,Y+10
    01EC 85AB      LDD	R26,Y+11
    01ED 85BC      LDD	R27,Y+12
    01EE 9508      RET
long_epilog:
    01EF 91B9      LD	R27,Y+
    01F0 91A9      LD	R26,Y+
    01F1 9199      LD	R25,Y+
    01F2 9189      LD	R24,Y+
    01F3 91E9      LD	R30,Y+
    01F4 90B9      LD	R11,Y+
    01F5 90A9      LD	R10,Y+
    01F6 9099      LD	R9,Y+
    01F7 9089      LD	R8,Y+
    01F8 9624      ADIW	R28,4
    01F9 9508      RET
tstzero1:
    01FA 27EE      CLR	R30
    01FB 2BE0      OR	R30,R16
    01FC 2BE1      OR	R30,R17
    01FD 2BE2      OR	R30,R18
    01FE 2BE3      OR	R30,R19
    01FF 9508      RET
tstzero2:
    0200 27EE      CLR	R30
    0201 2BE8      OR	R30,R24
    0202 2BE9      OR	R30,R25
    0203 2BEA      OR	R30,R26
    0204 2BEB      OR	R30,R27
    0205 9508      RET
lsr32:
    0206 920F      PUSH	R0
    0207 9009      LD	R0,Y+
    0208 2000      TST	R0
    0209 F031      BEQ	0x0210
    020A 9536      LSR	R19
    020B 9527      ROR	R18
    020C 9517      ROR	R17
    020D 9507      ROR	R16
    020E 940A      DEC	R0
    020F CFF8      RJMP	0x0208
    0210 900F      POP	R0
    0211 9508      RET

⌨️ 快捷键说明

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