📄 adc.lst
字号:
(0078) Seg7_Bit2_En();
017A 9ABE SBI 0x17,6
017B 9AC6 SBI 0x18,6
(0079) delay_nus(60);
017C E30C LDI R16,0x3C
017D E010 LDI R17,0
017E 940E00E6 CALL _delay_nus
(0080) Seg7_Bit2_Dis();
0180 9ABE SBI 0x17,6
0181 98C6 CBI 0x18,6
(0081)
(0082) HC_595_OUT(Seg7_Data[Seg7_Led_Buf[3]]);
0182 E984 LDI R24,0x94
0183 E090 LDI R25,0
0184 91E00109 LDS R30,Seg7_Led_Buf+3
0186 27FF CLR R31
0187 0FE8 ADD R30,R24
0188 1FF9 ADC R31,R25
0189 9104 LPM R16,0(Z)
018A DF95 RCALL _HC_595_OUT
(0083) if((point==1)&&(point_pos==3))
018B 91800100 LDS R24,point
018D 3081 CPI R24,1
018E F471 BNE 0x019D
018F 91800101 LDS R24,point_pos
0191 3083 CPI R24,3
0192 F451 BNE 0x019D
(0084) HC_595_OUT((Seg7_Data[Seg7_Led_Buf[3]])|(1<<dp));
0193 E984 LDI R24,0x94
0194 E090 LDI R25,0
0195 91E00109 LDS R30,Seg7_Led_Buf+3
0197 27FF CLR R31
0198 0FE8 ADD R30,R24
0199 1FF9 ADC R31,R25
019A 9104 LPM R16,0(Z)
019B 6800 ORI R16,0x80
019C DF83 RCALL _HC_595_OUT
(0085) Seg7_Bit3_En();
019D 9ABF SBI 0x17,7
019E 9AC7 SBI 0x18,7
(0086) delay_nus(60);
019F E30C LDI R16,0x3C
01A0 E010 LDI R17,0
01A1 940E00E6 CALL _delay_nus
(0087) Seg7_Bit3_Dis();
01A3 9ABF SBI 0x17,7
01A4 98C7 CBI 0x18,7
01A5 9508 RET
_Seg7_Led_display:
data --> R20
01A6 940E0432 CALL push_gset1
01A8 01A8 MOVW R20,R16
(0088) }
(0089) /*************************************************************************
(0090) ** 函数名称:Hc595显示整形数据
(0091) ** 功能描述:
(0092) ** 输 入:0~9999
(0093) ** 输出 :
(0094) ** 全局变量:
(0095) ** 调用模块:
(0096) ** 说明:
(0097) ** 注意:
(0098) **************************************************************************/
(0099) void Seg7_Led_display(unsigned int data)
(0100) {
(0101) if(data>9999) //错误处理,超出显示范围则全亮
01A9 E08F LDI R24,0xF
01AA E297 LDI R25,0x27
01AB 1784 CP R24,R20
01AC 0795 CPC R25,R21
01AD F430 BCC 0x01B4
(0102) {
(0103) HC_595_OUT(0xFF);
01AE EF0F LDI R16,0xFF
01AF DF70 RCALL _HC_595_OUT
(0104) Seg7_Bitselect_PORT|=((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
01B0 B388 IN R24,0x18
01B1 6F80 ORI R24,0xF0
01B2 BB88 OUT 0x18,R24
(0105) }
01B3 C07F RJMP 0x0233
(0106) else if(data>999)
01B4 EE87 LDI R24,0xE7
01B5 E093 LDI R25,3
01B6 1784 CP R24,R20
01B7 0795 CPC R25,R21
01B8 F530 BCC 0x01DF
(0107) {
(0108) Seg7_Led_Buf[3]=data/1000;
01B9 EE28 LDI R18,0xE8
01BA E033 LDI R19,3
01BB 018A MOVW R16,R20
01BC 940E040D CALL div16u
01BE 93000109 STS Seg7_Led_Buf+3,R16
(0109) Seg7_Led_Buf[2]=(data%1000)/100;
01C0 EE28 LDI R18,0xE8
01C1 E033 LDI R19,3
01C2 018A MOVW R16,R20
01C3 940E040B CALL mod16u
01C5 E624 LDI R18,0x64
01C6 E030 LDI R19,0
01C7 940E040D CALL div16u
01C9 93000108 STS Seg7_Led_Buf+2,R16
(0110) Seg7_Led_Buf[1]=(data%100)/10;
01CB E624 LDI R18,0x64
01CC E030 LDI R19,0
01CD 018A MOVW R16,R20
01CE 940E040B CALL mod16u
01D0 E02A LDI R18,0xA
01D1 E030 LDI R19,0
01D2 940E040D CALL div16u
01D4 93000107 STS Seg7_Led_Buf+1,R16
(0111) Seg7_Led_Buf[0]=data%10;
01D6 E02A LDI R18,0xA
01D7 E030 LDI R19,0
01D8 018A MOVW R16,R20
01D9 940E040B CALL mod16u
01DB 93000106 STS Seg7_Led_Buf,R16
(0112) Seg7_Led_Update();
01DD DF4D RCALL _Seg7_Led_Update
(0113) }
01DE C054 RJMP 0x0233
(0114) else if(data>99)
01DF E683 LDI R24,0x63
01E0 E090 LDI R25,0
01E1 1784 CP R24,R20
01E2 0795 CPC R25,R21
01E3 F510 BCC 0x0206
(0115) {
(0116) Seg7_Led_Buf[3]=16;
01E4 E180 LDI R24,0x10
01E5 93800109 STS Seg7_Led_Buf+3,R24
(0117) Seg7_Led_Buf[2]=(data%1000)/100;
01E7 EE28 LDI R18,0xE8
01E8 E033 LDI R19,3
01E9 018A MOVW R16,R20
01EA 940E040B CALL mod16u
01EC E624 LDI R18,0x64
01ED E030 LDI R19,0
01EE 940E040D CALL div16u
01F0 93000108 STS Seg7_Led_Buf+2,R16
(0118) Seg7_Led_Buf[1]=(data%100)/10;
01F2 E624 LDI R18,0x64
01F3 E030 LDI R19,0
01F4 018A MOVW R16,R20
01F5 940E040B CALL mod16u
01F7 E02A LDI R18,0xA
01F8 E030 LDI R19,0
01F9 940E040D CALL div16u
01FB 93000107 STS Seg7_Led_Buf+1,R16
(0119) Seg7_Led_Buf[0]=data%10;
01FD E02A LDI R18,0xA
01FE E030 LDI R19,0
01FF 018A MOVW R16,R20
0200 940E040B CALL mod16u
0202 93000106 STS Seg7_Led_Buf,R16
(0120) Seg7_Led_Update();
0204 DF26 RCALL _Seg7_Led_Update
(0121) }
0205 C02D RJMP 0x0233
(0122) else if(data>9)
0206 E089 LDI R24,0x9
0207 E090 LDI R25,0
0208 1784 CP R24,R20
0209 0795 CPC R25,R21
020A F4C8 BCC 0x0224
(0123) {
(0124) Seg7_Led_Buf[3]=16;
020B E180 LDI R24,0x10
020C 93800109 STS Seg7_Led_Buf+3,R24
(0125) Seg7_Led_Buf[2]=16;
020E 93800108 STS Seg7_Led_Buf+2,R24
(0126) Seg7_Led_Buf[1]=(data%100)/10;
0210 E624 LDI R18,0x64
0211 E030 LDI R19,0
0212 018A MOVW R16,R20
0213 940E040B CALL mod16u
0215 E02A LDI R18,0xA
0216 E030 LDI R19,0
0217 940E040D CALL div16u
0219 93000107 STS Seg7_Led_Buf+1,R16
(0127) Seg7_Led_Buf[0]=data%10;
021B E02A LDI R18,0xA
021C E030 LDI R19,0
021D 018A MOVW R16,R20
021E 940E040B CALL mod16u
0220 93000106 STS Seg7_Led_Buf,R16
(0128) Seg7_Led_Update();
0222 DF08 RCALL _Seg7_Led_Update
(0129) }
0223 C00F RJMP 0x0233
(0130) else
(0131) {
(0132) Seg7_Led_Buf[3]=16;
0224 E180 LDI R24,0x10
0225 93800109 STS Seg7_Led_Buf+3,R24
(0133) Seg7_Led_Buf[2]=16;
0227 93800108 STS Seg7_Led_Buf+2,R24
(0134) Seg7_Led_Buf[1]=16;
0229 93800107 STS Seg7_Led_Buf+1,R24
(0135) Seg7_Led_Buf[0]=data%10;
022B E02A LDI R18,0xA
022C E030 LDI R19,0
022D 018A MOVW R16,R20
022E 940E040B CALL mod16u
0230 93000106 STS Seg7_Led_Buf,R16
(0136) Seg7_Led_Update();
0232 DEF8 RCALL _Seg7_Led_Update
(0137) }
0233 940E0435 CALL pop_gset1
0235 9508 RET
_Seg7_Led_float:
temp --> R20
data --> Y+8
0236 940E0406 CALL push_arg4
0238 940E0430 CALL push_gset2
023A 9724 SBIW R28,4
(0138) }
(0139) /*************************************************************************
(0140) ** 函数名称:HC595显示浮点数据
(0141) ** 功能描述:
(0142) ** 输 入:
(0143) ** 输出 :
(0144) ** 全局变量:
(0145) ** 调用模块:
(0146) ** 说明:
(0147) ** 注意:
(0148) **************************************************************************/
(0149) void Seg7_Led_float(float data)
(0150) {
(0151) unsigned int temp;
(0152) /*
(0153) 重要说明:data+=0.00001;其中0.00001为容错值
(0154) 解决float数据类型在计算机内部存储的误差问题,可以解决显示问题
(0155) 但是会引入新的计算误差,如果精度要求大于0.00001建议更改容错值或者将此处注释掉
(0156) */
(0157) data+=0.00001;
023B 01FE MOVW R30,R28
023C 8420 LDD R2,Z+8
023D 8431 LDD R3,Z+9
023E 8442 LDD R4,Z+10
023F 8453 LDD R5,Z+11
0240 925A ST R5,-Y
0241 924A ST R4,-Y
0242 923A ST R3,-Y
0243 922A ST R2,-Y
0244 EC01 LDI R16,0xC1
0245 E010 LDI R17,0
0246 940E0452 CALL lpm32
0248 933A ST R19,-Y
0249 932A ST R18,-Y
024A 931A ST R17,-Y
024B 930A ST R16,-Y
024C 940E050B CALL add32f
024E 01FE MOVW R30,R28
024F 8700 STD Z+8,R16
0250 8711 STD Z+9,R17
0251 8722 STD Z+10,R18
0252 8733 STD Z+11,R19
(0158) point=1;
0253 E081 LDI R24,1
0254 93800100 STS point,R24
(0159) if(data>999) //错误处理,超出显示范围则全亮
0256 EB0D LDI R16,0xBD
0257 E010 LDI R17,0
0258 940E0452 CALL lpm32
025A 933A ST R19,-Y
025B 932A ST R18,-Y
025C 931A ST R17,-Y
025D 930A ST R16,-Y
025E 01FE MOVW R30,R28
025F 8424 LDD R2,Z+12
0260 8435 LDD R3,Z+13
0261 8446 LDD R4,Z+14
0262 8457 LDD R5,Z+15
0263 925A ST R5,-Y
0264 924A ST R4,-Y
0265 923A ST R3,-Y
0266 922A ST R2,-Y
0267 940E05C6 CALL cmp32f
0269 F434 BGE 0x0270
(0160) {
(0161) HC_595_OUT(0xFF);
026A EF0F LDI R16,0xFF
026B DEB4 RCALL _HC_595_OUT
(0162) Seg7_Bitselect_PORT|=((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
026C B388 IN R24,0x18
026D 6F80 ORI R24,0xF0
026E BB88 OUT 0x18,R24
(0163) }
026F C18E RJMP 0x03FE
(0164) else if(data>99)
0270 EB09 LDI R16,0xB9
0271 E010 LDI R17,0
0272 940E0452 CALL lpm32
0274 933A ST R19,-Y
0275 932A ST R18,-Y
0276 931A ST R17,-Y
0277 930A ST R16,-Y
0278 01FE MOVW R30,R28
0279 8424 LDD R2,Z+12
027A 8435 LDD R3,Z+13
027B 8446 LDD R4,Z+14
027C 8457 LDD R5,Z+15
027D 925A ST R5,-Y
027E 924A ST R4,-Y
027F 923A ST R3,-Y
0280 922A ST R2,-Y
0281 940E05C6 CALL cmp32f
0283 F00C BLT 0x0285
0284 C077 RJMP 0x02FC
(0165) {
(0166) temp=data*10;
0285 EB05 LDI R16,0xB5
0286 E010 LDI R17,0
0287 940E0452 CALL lpm32
0289 933A ST R19,-Y
028A 932A ST R18,-Y
028B 931A ST R17,-Y
028C 930A ST R16,-Y
028D 01FE MOVW R30,R28
028E 8424 LDD R2,Z+12
028F 8435 LDD R3,Z+13
0290 8446 LDD R4,Z+14
0291 8457 LDD R5,Z+15
0292 925A ST R5,-Y
0293 924A ST R4,-Y
0294 923A ST R3,-Y
0295 922A ST R2,-Y
0296 940E05FA CALL empy32f
0298 01FE MOVW R30,R28
0299 8300 STD Z+0,R16
029A 8311 STD Z+1,R17
029B 8322 STD Z+2,R18
029C 8333 STD Z+3,R19
029D 01FE MOVW R30,R28
029E 8020 LDD R2,Z+0
029F 8031 LDD R3,Z+1
02A0 8042 LDD R4,Z+2
02A1 8053 LDD R5,Z+3
02A2 925A ST R5,-Y
02A3 924A ST R4,-Y
02A4 923A ST R3,-Y
02A5 922A ST R2,-Y
02A6 EB01 LDI R16,0xB1
02A7 E010 LDI R17,0
02A8 940E0452 CALL lpm32
02AA 933A ST R19,-Y
02AB 932A ST R18,-Y
02AC 931A ST R17,-Y
02AD 930A ST R16,-Y
02AE 940E05C6 CALL cmp32f
02B0 F0CC BLT 0x02CA
02B1 01FE MOVW R30,R28
02B2 8020 LDD R2,Z+0
02B3 8031 LDD R3,Z+1
02B4 8042 LDD R4,Z+2
02B5 8053 LDD R5,Z+3
02B6 925A ST R5,-Y
02B7 924A ST R4,-Y
02B8 923A ST R3,-Y
02B9 922A ST R2,-Y
02BA EB01 LDI R16,0xB1
02BB E010 LDI R17,0
02BC 940E0452 CALL lpm32
02BE 933A ST R19,-Y
02BF 932A ST R18,-Y
02C0 931A ST R17,-Y
02C1 930A ST R16,-Y
02C2 940E0513 CALL sub32f
02C4 940E0466 CALL fp2int
02C6 01B8 MOVW R22,R16
02C7 5060 SUBI R22,0
02C8 4870 SBCI R23,0x80
02C9 C008 RJMP 0x02D2
02CA 01FE MOVW R30,R28
02CB 8100 LDD R16,Z+0
02CC 8111 LDD R17,Z+1
02CD 8122 LDD R18,Z+2
02CE 8133 LDD R19,Z+3
02CF 940E0466 CALL fp2int
02D1 01B8 MOVW R22,R16
02D2 01AB MOVW R20,R22
(0167) point_pos=1;
02D3 E081 LDI R24,1
02D4 93800101 STS point_pos,R24
(0168) Seg7_Led_Buf[3]=temp/1000;
02D6 EE28 LDI R18,0xE8
02D7 E033 LDI R19,3
02D8 018A MOVW R16,R20
02D9 940E040D CALL div16u
02DB 93000109 STS Seg7_Led_Buf+3,R16
(0169) Seg7_Led_Buf[2]=(temp%1000)/100;
02DD EE28 LDI R18,0xE8
02DE E033 LDI R19,3
02DF 018A MOVW R16,R20
02E0 940E040B CALL mod16u
02E2 E624 LDI R18,0x64
02E3 E030 LDI R19,0
02E4 940E040D CALL div16u
02E6 93000108 STS Seg7_Led_Buf+2,R16
(0170) Seg7_Led_Buf[1]=(temp%100)/10;
02E8 E624 LDI R18,0x64
02E9 E030 LDI R19,0
02EA 018A MOVW R16,R20
02EB 940E040B CALL mod16u
02ED E02A LDI R18,0xA
02EE E030 LDI R19,0
02EF 940E040D CALL div16u
02F1 93000107 STS Seg7_Led_Buf+1,R16
(0171) Seg7_Led_Buf[0]=temp%10;
02F3 E02A LDI R18,0xA
02F4 E030 LDI R19,0
02F5 018A MOVW R16,R20
02F6 940E040B CALL mod16u
02F8 93000106 STS Seg7_Led_Buf,R16
(0172) Seg7_Led_Update();
02FA DE30 RCALL _Seg7_Led_Update
(0173) }
02FB C102 RJMP 0x03FE
(0174) else if(data>9)
02FC EA0D LDI R16,0xAD
02FD E010 LDI R17,0
02FE 940E0452 CALL lpm32
0300 933A ST R19,-Y
0301 932A ST R18,-Y
0302 931A ST R17,-Y
0303 930A ST R16,-Y
0304 01FE MOVW R30,R28
0305 8424 LDD R2,Z+12
0306 8435 LDD R3,Z+13
0307 8446 LDD R4,Z+14
0308 8457 LDD R5,Z+15
0309 925A ST R5,-Y
030A 924A ST R4,-Y
030B 923A ST R3,-Y
030C 922A ST R2,-Y
030D 940E05C6 CALL cmp32f
030F F00C BLT 0x0311
0310 C077 RJMP 0x0388
(0175) {
(0176) temp=data*100;
0311 EA09 LDI R16,0xA9
0312 E010 LDI R17,0
0313 940E0452 CALL lpm32
0315 933A ST R19,-Y
0316 932A ST R18,-Y
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -