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

📄 main.lst

📁 单片机中的ADC模块
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0130)   display_one(4,temp);
    0154 2F24      MOV	R18,R20
    0155 E004      LDI	R16,4
    0156 DF7C      RCALL	_display_one
(0131)   delay_ms(6);
    0157 E006      LDI	R16,6
    0158 E010      LDI	R17,0
    0159 DF60      RCALL	_delay_ms
(0132)   led_contrl_port |= (1<<4);
    015A 9A94      SBI	0x12,4
    015B 940E091D  CALL	pop_gset3
    015D 9508      RET
_display_float:
  temp2                --> R22
  temp                 --> R20
  data                 --> Y+22
    015E 940E08F9  CALL	push_arg4
    0160 940E0924  CALL	push_gset3
    0162 9760      SBIW	R28,0x10
(0133) }
(0134) 
(0135) /***********************
(0136) ** 显示四位浮点数 本函数占用 mega16 的空间 19%
(0137) ** 输入:要显示的四位数
(0138) ** 说明:可以小于四位数,自动补零
(0139) ************************/
(0140) 
(0141) void display_float(float data)
(0142) {
(0143)  UNS8 temp;
(0144)  UNS16 temp2; //用于把浮点数变为整形
(0145)  // 人为保证data的值,可以不要错误处理。
(0146)  if (data>=1000)
    0163 01FE      MOVW	R30,R28
    0164 8826      LDD	R2,Z+22
    0165 8837      LDD	R3,Z+23
    0166 8C40      LDD	R4,Z+24
    0167 8C51      LDD	R5,Z+25
    0168 925A      ST	R5,-Y
    0169 924A      ST	R4,-Y
    016A 923A      ST	R3,-Y
    016B 922A      ST	R2,-Y
    016C EC00      LDI	R16,0xC0
    016D E010      LDI	R17,0
    016E 940E0948  CALL	lpm32
    0170 933A      ST	R19,-Y
    0171 932A      ST	R18,-Y
    0172 931A      ST	R17,-Y
    0173 930A      ST	R16,-Y
    0174 940E0A92  CALL	cmp32f
    0176 F00C      BLT	0x0178
(0147)  {
(0148)   led_error();
    0177 D71E      RCALL	_led_error
(0149)  }
(0150)  if (data<=0)
    0178 EB0C      LDI	R16,0xBC
    0179 E010      LDI	R17,0
    017A 940E0948  CALL	lpm32
    017C 933A      ST	R19,-Y
    017D 932A      ST	R18,-Y
    017E 931A      ST	R17,-Y
    017F 930A      ST	R16,-Y
    0180 01FE      MOVW	R30,R28
    0181 8C22      LDD	R2,Z+26
    0182 8C33      LDD	R3,Z+27
    0183 8C44      LDD	R4,Z+28
    0184 8C55      LDD	R5,Z+29
    0185 925A      ST	R5,-Y
    0186 924A      ST	R4,-Y
    0187 923A      ST	R3,-Y
    0188 922A      ST	R2,-Y
    0189 940E0A92  CALL	cmp32f
    018B F00C      BLT	0x018D
(0151)  {
(0152)   led_error();
    018C D709      RCALL	_led_error
(0153)  }
(0154)  //
(0155)  if(data<1)       //比如 0.123
    018D 01FE      MOVW	R30,R28
    018E 8826      LDD	R2,Z+22
    018F 8837      LDD	R3,Z+23
    0190 8C40      LDD	R4,Z+24
    0191 8C51      LDD	R5,Z+25
    0192 925A      ST	R5,-Y
    0193 924A      ST	R4,-Y
    0194 923A      ST	R3,-Y
    0195 922A      ST	R2,-Y
    0196 EB08      LDI	R16,0xB8
    0197 E010      LDI	R17,0
    0198 940E0948  CALL	lpm32
    019A 933A      ST	R19,-Y
    019B 932A      ST	R18,-Y
    019C 931A      ST	R17,-Y
    019D 930A      ST	R16,-Y
    019E 940E0A92  CALL	cmp32f
    01A0 F00C      BLT	0x01A2
    01A1 C117      RJMP	0x02B9
(0156)  {
(0157)   display_one(7,0);   //显示0.
    01A2 2722      CLR	R18
    01A3 E007      LDI	R16,7
    01A4 DF2E      RCALL	_display_one
(0158)   led_port &= 0x7F; //点亮对应小数点
    01A5 B38B      IN	R24,0x1B
    01A6 778F      ANDI	R24,0x7F
    01A7 BB8B      OUT	0x1B,R24
(0159)   delay_ms(6);
    01A8 E006      LDI	R16,6
    01A9 E010      LDI	R17,0
    01AA DF0F      RCALL	_delay_ms
(0160)   led_contrl_port |= (1<<7);
    01AB 9A97      SBI	0x12,7
(0161)   
(0162)   temp=(data*10);   // 0.123*10 = 1
    01AC EB04      LDI	R16,0xB4
    01AD E010      LDI	R17,0
    01AE 940E0948  CALL	lpm32
    01B0 933A      ST	R19,-Y
    01B1 932A      ST	R18,-Y
    01B2 931A      ST	R17,-Y
    01B3 930A      ST	R16,-Y
    01B4 01FE      MOVW	R30,R28
    01B5 8C22      LDD	R2,Z+26
    01B6 8C33      LDD	R3,Z+27
    01B7 8C44      LDD	R4,Z+28
    01B8 8C55      LDD	R5,Z+29
    01B9 925A      ST	R5,-Y
    01BA 924A      ST	R4,-Y
    01BB 923A      ST	R3,-Y
    01BC 922A      ST	R2,-Y
    01BD 940E0AC6  CALL	empy32f
    01BF 01FE      MOVW	R30,R28
    01C0 8300      STD	Z+0,R16
    01C1 8311      STD	Z+1,R17
    01C2 8322      STD	Z+2,R18
    01C3 8333      STD	Z+3,R19
    01C4 01FE      MOVW	R30,R28
    01C5 8020      LDD	R2,Z+0
    01C6 8031      LDD	R3,Z+1
    01C7 8042      LDD	R4,Z+2
    01C8 8053      LDD	R5,Z+3
    01C9 925A      ST	R5,-Y
    01CA 924A      ST	R4,-Y
    01CB 923A      ST	R3,-Y
    01CC 922A      ST	R2,-Y
    01CD EB00      LDI	R16,0xB0
    01CE E010      LDI	R17,0
    01CF 940E0948  CALL	lpm32
    01D1 933A      ST	R19,-Y
    01D2 932A      ST	R18,-Y
    01D3 931A      ST	R17,-Y
    01D4 930A      ST	R16,-Y
    01D5 940E0A92  CALL	cmp32f
    01D7 F0CC      BLT	0x01F1
    01D8 01FE      MOVW	R30,R28
    01D9 8020      LDD	R2,Z+0
    01DA 8031      LDD	R3,Z+1
    01DB 8042      LDD	R4,Z+2
    01DC 8053      LDD	R5,Z+3
    01DD 925A      ST	R5,-Y
    01DE 924A      ST	R4,-Y
    01DF 923A      ST	R3,-Y
    01E0 922A      ST	R2,-Y
    01E1 EB00      LDI	R16,0xB0
    01E2 E010      LDI	R17,0
    01E3 940E0948  CALL	lpm32
    01E5 933A      ST	R19,-Y
    01E6 932A      ST	R18,-Y
    01E7 931A      ST	R17,-Y
    01E8 930A      ST	R16,-Y
    01E9 940E09DF  CALL	sub32f
    01EB 940E0962  CALL	fp2int
    01ED 01A8      MOVW	R20,R16
    01EE 5040      SUBI	R20,0
    01EF 4850      SBCI	R21,0x80
    01F0 C008      RJMP	0x01F9
    01F1 01FE      MOVW	R30,R28
    01F2 8100      LDD	R16,Z+0
    01F3 8111      LDD	R17,Z+1
    01F4 8122      LDD	R18,Z+2
    01F5 8133      LDD	R19,Z+3
    01F6 940E0962  CALL	fp2int
    01F8 01A8      MOVW	R20,R16
(0163)   display_one(6,temp);
    01F9 2F24      MOV	R18,R20
    01FA E006      LDI	R16,6
    01FB DED7      RCALL	_display_one
(0164)   delay_ms(6);
    01FC E006      LDI	R16,6
    01FD E010      LDI	R17,0
    01FE DEBB      RCALL	_delay_ms
(0165)   led_contrl_port |= (1<<6);
    01FF 9A96      SBI	0x12,6
(0166)   
(0167)   temp2=(data*100);
    0200 EA0C      LDI	R16,0xAC
    0201 E010      LDI	R17,0
    0202 940E0948  CALL	lpm32
    0204 933A      ST	R19,-Y
    0205 932A      ST	R18,-Y
    0206 931A      ST	R17,-Y
    0207 930A      ST	R16,-Y
    0208 01FE      MOVW	R30,R28
    0209 8C22      LDD	R2,Z+26
    020A 8C33      LDD	R3,Z+27
    020B 8C44      LDD	R4,Z+28
    020C 8C55      LDD	R5,Z+29
    020D 925A      ST	R5,-Y
    020E 924A      ST	R4,-Y
    020F 923A      ST	R3,-Y
    0210 922A      ST	R2,-Y
    0211 940E0AC6  CALL	empy32f
    0213 01FE      MOVW	R30,R28
    0214 8304      STD	Z+4,R16
    0215 8315      STD	Z+5,R17
    0216 8326      STD	Z+6,R18
    0217 8337      STD	Z+7,R19
    0218 01FE      MOVW	R30,R28
    0219 8024      LDD	R2,Z+4
    021A 8035      LDD	R3,Z+5
    021B 8046      LDD	R4,Z+6
    021C 8057      LDD	R5,Z+7
    021D 925A      ST	R5,-Y
    021E 924A      ST	R4,-Y
    021F 923A      ST	R3,-Y
    0220 922A      ST	R2,-Y
    0221 EB00      LDI	R16,0xB0
    0222 E010      LDI	R17,0
    0223 940E0948  CALL	lpm32
    0225 933A      ST	R19,-Y
    0226 932A      ST	R18,-Y
    0227 931A      ST	R17,-Y
    0228 930A      ST	R16,-Y
    0229 940E0A92  CALL	cmp32f
    022B F0D4      BLT	0x0246
    022C 01FE      MOVW	R30,R28
    022D 8024      LDD	R2,Z+4
    022E 8035      LDD	R3,Z+5
    022F 8046      LDD	R4,Z+6
    0230 8057      LDD	R5,Z+7
    0231 925A      ST	R5,-Y
    0232 924A      ST	R4,-Y
    0233 923A      ST	R3,-Y
    0234 922A      ST	R2,-Y
    0235 EB00      LDI	R16,0xB0
    0236 E010      LDI	R17,0
    0237 940E0948  CALL	lpm32
    0239 933A      ST	R19,-Y
    023A 932A      ST	R18,-Y
    023B 931A      ST	R17,-Y
    023C 930A      ST	R16,-Y
    023D 940E09DF  CALL	sub32f
    023F 940E0962  CALL	fp2int
    0241 01C8      MOVW	R24,R16
    0242 5080      SUBI	R24,0
    0243 4890      SBCI	R25,0x80
    0244 015C      MOVW	R10,R24
    0245 C008      RJMP	0x024E
    0246 01FE      MOVW	R30,R28
    0247 8104      LDD	R16,Z+4
    0248 8115      LDD	R17,Z+5
    0249 8126      LDD	R18,Z+6
    024A 8137      LDD	R19,Z+7
    024B 940E0962  CALL	fp2int
    024D 0158      MOVW	R10,R16
    024E 01B5      MOVW	R22,R10
(0168)   temp=temp2%10; // 0.123*100%10 = 2
    024F E02A      LDI	R18,0xA
    0250 E030      LDI	R19,0
    0251 018B      MOVW	R16,R22
    0252 940E08FE  CALL	mod16u
    0254 2F40      MOV	R20,R16
(0169)   display_one(5,temp);
    0255 2F24      MOV	R18,R20
    0256 E005      LDI	R16,5
    0257 DE7B      RCALL	_display_one
(0170)   delay_ms(6);
    0258 E006      LDI	R16,6
    0259 E010      LDI	R17,0
    025A DE5F      RCALL	_delay_ms
(0171)   led_contrl_port |= (1<<5);
    025B 9A95      SBI	0x12,5
(0172)   
(0173)   temp2=(data*1000);
    025C EC00      LDI	R16,0xC0
    025D E010      LDI	R17,0
    025E 940E0948  CALL	lpm32
    0260 933A      ST	R19,-Y
    0261 932A      ST	R18,-Y
    0262 931A      ST	R17,-Y
    0263 930A      ST	R16,-Y
    0264 01FE      MOVW	R30,R28
    0265 8C22      LDD	R2,Z+26
    0266 8C33      LDD	R3,Z+27
    0267 8C44      LDD	R4,Z+28
    0268 8C55      LDD	R5,Z+29
    0269 925A      ST	R5,-Y
    026A 924A      ST	R4,-Y
    026B 923A      ST	R3,-Y
    026C 922A      ST	R2,-Y
    026D 940E0AC6  CALL	empy32f
    026F 01FE      MOVW	R30,R28
    0270 8700      STD	Z+8,R16
    0271 8711      STD	Z+9,R17
    0272 8722      STD	Z+10,R18
    0273 8733      STD	Z+11,R19
    0274 01FE      MOVW	R30,R28
    0275 8420      LDD	R2,Z+8
    0276 8431      LDD	R3,Z+9
    0277 8442      LDD	R4,Z+10
    0278 8453      LDD	R5,Z+11
    0279 925A      ST	R5,-Y
    027A 924A      ST	R4,-Y
    027B 923A      ST	R3,-Y
    027C 922A      ST	R2,-Y
    027D EB00      LDI	R16,0xB0
    027E E010      LDI	R17,0
    027F 940E0948  CALL	lpm32
    0281 933A      ST	R19,-Y
    0282 932A      ST	R18,-Y
    0283 931A      ST	R17,-Y
    0284 930A      ST	R16,-Y
    0285 940E0A92  CALL	cmp32f
    0287 F0D4      BLT	0x02A2
    0288 01FE      MOVW	R30,R28
    0289 8420      LDD	R2,Z+8
    028A 8431      LDD	R3,Z+9
    028B 8442      LDD	R4,Z+10
    028C 8453      LDD	R5,Z+11
    028D 925A      ST	R5,-Y
    028E 924A      ST	R4,-Y
    028F 923A      ST	R3,-Y
    0290 922A      ST	R2,-Y
    0291 EB00      LDI	R16,0xB0
    0292 E010      LDI	R17,0
    0293 940E0948  CALL	lpm32
    0295 933A      ST	R19,-Y
    0296 932A      ST	R18,-Y
    0297 931A      ST	R17,-Y
    0298 930A      ST	R16,-Y
    0299 940E09DF  CALL	sub32f
    029B 940E0962  CALL	fp2int
    029D 01C8      MOVW	R24,R16
    029E 5080      SUBI	R24,0
    029F 4890      SBCI	R25,0x80
    02A0 015C      MOVW	R10,R24
    02A1 C008      RJMP	0x02AA
    02A2 01FE      MOVW	R30,R28
    02A3 8500      LDD	R16,Z+8
    02A4 8511      LDD	R17,Z+9
    02A5 8522      LDD	R18,Z+10
    02A6 8533      LDD	R19,Z+11
    02A7 940E0962  CALL	fp2int
    02A9 0158      MOVW	R10,R16
    02AA 01B5      MOVW	R22,R10
(0174)   temp=temp2%10; // 0.123*100%10 = 3
    02AB E02A      LDI	R18,0xA
    02AC E030      LDI	R19,0
    02AD 018B      MOVW	R16,R22
    02AE 940E08FE  CALL	mod16u
    02B0 2F40      MOV	R20,R16
(0175)   display_one(4,temp);
    02B1 2F24      MOV	R18,R20
    02B2 E004      LDI	R16,4
    02B3 DE1F      RCALL	_display_one
(0176)   delay_ms(6);
    02B4 E006      LDI	R16,6
    02B5 E010      LDI	R17,0
    02B6 DE03      RCALL	_delay_ms
(0177)   led_contrl_port |= (1<<4);
    02B7 9A94      SBI	0x12,4
(0178)  }
    02B8 C436      RJMP	0x06EF
(0179)  else if(data<10)  //比如1.234
    02B9 01FE      MOVW	R30,R28
    02BA 8826      LDD	R2,Z+22
    02BB 8837      LDD	R3,Z+23
    02BC 8C40      LDD	R4,Z+24
    02BD 8C51      LDD	R5,Z+25
    02BE 925A      ST	R5,-Y
    02BF 924A      ST	R4,-Y
    02C0 923A      ST	R3,-Y
    02C1 922A      ST	R2,-Y
    02C2 EB04      LDI	R16,0xB4
    02C3 E010      LDI	R17,0
    02C4 940E0948  CALL	lpm32
    02C6 933A      ST	R19,-Y
    02C7 932A      ST	R18,-Y
    02C8 931A      ST	R17,-Y
    02C9 930A      ST	R16,-Y
    02CA 940E0A92  CALL	cmp32f
    02CC F00C      BLT	0x02CE
    02CD C16E      RJMP	0x043C
(0180)  {
(0181)   temp=(data/1);   // 1.234/1 = 1
    02CE 01FE      MOVW	R30,R28
    02CF 8826      LDD	R2,Z+22
    02D0 8837      LDD	R3,Z+23
    02D1 8C40      LDD	R4,Z+24
    02D2 8C51      LDD	R5,Z+25
    02D3 925A      ST	R5,-Y
    02D4 924A      ST	R4,-Y
    02D5 923A      ST	R3,-Y
    02D6 922A      ST	R2,-Y
    02D7 EB08      LDI	R16,0xB8
    02D8 E010      LDI	R17,0
    02D9 940E0948  CALL	lpm32
    02DB 933A      ST	R19,-Y
    02DC 932A      ST	R18,-Y
    02DD 931A      ST	R17,-Y
    02DE 930A      ST	R16,-Y
    02DF 940E0A38  CALL	div32f
    02E1 01FE      MOVW	R30,R28
    02E2 8300      STD	Z+0,R16
    02E3 8311      STD	Z+1,R17
    02E4 8322      STD	Z+2,R18
    02E5 8333      STD	Z+3,R19
    02E6 01FE      MOVW	R30,R28
    02E7 8020      LDD	R2,Z+0
    02E8 8031      LDD	R3,Z+1
    02E9 8042      LDD	R4,Z+2

⌨️ 快捷键说明

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