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

📄 251.lst

📁 卡车仪表的单片机程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    04FC C00D      RJMP	0x050A
(0511)   LCDContent[12-i] = 10;//Hide
    04FD 2C2A      MOV	R2,R10
    04FE 2433      CLR	R3
    04FF E0EC      LDI	R30,0xC
    0500 E0F0      LDI	R31,0
    0501 19E2      SUB	R30,R2
    0502 09F3      SBC	R31,R3
    0503 EE82      LDI	R24,0xE2
    0504 E090      LDI	R25,0
    0505 0FE8      ADD	R30,R24
    0506 1FF9      ADC	R31,R25
    0507 E08A      LDI	R24,0xA
    0508 8380      STD	Z+0,R24
    0509 94A3      INC	R10
    050A E083      LDI	R24,3
    050B 158A      CP	R24,R10
    050C F780      BCC	0x04FD
    050D 9628      ADIW	R28,0x8
    050E D4B0      RCALL	pop_gset3
    050F 9508      RET
(0512)  
(0513)  } 
(0514) 
(0515) void MileageSaving()
(0516) {
(0517)   EEPROM_write( 0x00, *((char*)&mileage+0) );
_MileageSaving:
    0510 EBE7      LDI	R30,0xB7
    0511 E0F0      LDI	R31,0
    0512 8120      LDD	R18,Z+0
    0513 2700      CLR	R16
    0514 2711      CLR	R17
    0515 DC06      RCALL	_EEPROM_write
(0518)   EEPROM_write( 0x01, *((char*)&mileage+1) );
    0516 912000B8  LDS	R18,mileage+1
    0518 E001      LDI	R16,1
    0519 E010      LDI	R17,0
    051A DC01      RCALL	_EEPROM_write
(0519)   EEPROM_write( 0x02, *((char*)&mileage+2) );
    051B 912000B9  LDS	R18,mileage+2
    051D E002      LDI	R16,2
    051E E010      LDI	R17,0
    051F DBFC      RCALL	_EEPROM_write
(0520)   EEPROM_write( 0x03, *((char*)&mileage+3) );
    0520 912000BA  LDS	R18,mileage+3
    0522 E003      LDI	R16,3
    0523 E010      LDI	R17,0
    0524 DBF7      RCALL	_EEPROM_write
(0521)   EEPROM_write( 0x04, *((char*)&MileageCurrent+0) );
    0525 EBEB      LDI	R30,0xBB
    0526 E0F0      LDI	R31,0
    0527 8120      LDD	R18,Z+0
    0528 E004      LDI	R16,4
    0529 E010      LDI	R17,0
    052A DBF1      RCALL	_EEPROM_write
(0522)   EEPROM_write( 0x05, *((char*)&MileageCurrent+1) );
    052B 912000BC  LDS	R18,MileageCurrent+1
    052D E005      LDI	R16,5
    052E E010      LDI	R17,0
    052F DBEC      RCALL	_EEPROM_write
(0523)   EEPROM_write( 0x06, *((char*)&MileageCurrent+2) );
    0530 912000BD  LDS	R18,MileageCurrent+2
    0532 E006      LDI	R16,6
    0533 E010      LDI	R17,0
    0534 DBE7      RCALL	_EEPROM_write
(0524)   EEPROM_write( 0x07, *((char*)&MileageCurrent+3) );
    0535 912000BE  LDS	R18,MileageCurrent+3
    0537 E007      LDI	R16,7
    0538 E010      LDI	R17,0
    0539 DBE2      RCALL	_EEPROM_write
(0525)   MileageSaveBlocked = 1;
    053A E081      LDI	R24,1
    053B 9380006F  STS	MileageSaveBlocked,R24
    053D 9508      RET
_MileageLoding:
    053E D48C      RCALL	push_gset2
(0526) }
(0527)   
(0528) void MileageLoding()
(0529) {
(0530)   mileage = 0;
    053F E040      LDI	R20,0
    0540 E050      LDI	R21,0
    0541 E060      LDI	R22,0
    0542 E070      LDI	R23,0
    0543 935000B8  STS	mileage+1,R21
    0545 934000B7  STS	mileage,R20
    0547 937000BA  STS	mileage+3,R23
    0549 936000B9  STS	mileage+2,R22
(0531)   MileageCurrent = 0;
    054B E040      LDI	R20,0
    054C E050      LDI	R21,0
    054D E060      LDI	R22,0
    054E E070      LDI	R23,0
    054F 935000BC  STS	MileageCurrent+1,R21
    0551 934000BB  STS	MileageCurrent,R20
    0553 937000BE  STS	MileageCurrent+3,R23
    0555 936000BD  STS	MileageCurrent+2,R22
(0532)   *((char*)&mileage+0) = EEPROM_read( 0x00 );
    0557 2700      CLR	R16
    0558 2711      CLR	R17
    0559 DBCC      RCALL	_EEPROM_read
    055A EBE7      LDI	R30,0xB7
    055B E0F0      LDI	R31,0
    055C 8300      STD	Z+0,R16
(0533)   *((char*)&mileage+1) = EEPROM_read( 0x01 );
    055D E001      LDI	R16,1
    055E E010      LDI	R17,0
    055F DBC6      RCALL	_EEPROM_read
    0560 930000B8  STS	mileage+1,R16
(0534)   *((char*)&mileage+2) = EEPROM_read( 0x02 );
    0562 E002      LDI	R16,2
    0563 E010      LDI	R17,0
    0564 DBC1      RCALL	_EEPROM_read
    0565 930000B9  STS	mileage+2,R16
(0535)   *((char*)&mileage+3) = EEPROM_read( 0x03 );
    0567 E003      LDI	R16,3
    0568 E010      LDI	R17,0
    0569 DBBC      RCALL	_EEPROM_read
    056A 930000BA  STS	mileage+3,R16
(0536)   *((char*)&MileageCurrent+0) = EEPROM_read( 0x04 );
    056C E004      LDI	R16,4
    056D E010      LDI	R17,0
    056E DBB7      RCALL	_EEPROM_read
    056F EBEB      LDI	R30,0xBB
    0570 E0F0      LDI	R31,0
    0571 8300      STD	Z+0,R16
(0537)   *((char*)&MileageCurrent+1) = EEPROM_read( 0x05 );
    0572 E005      LDI	R16,5
    0573 E010      LDI	R17,0
    0574 DBB1      RCALL	_EEPROM_read
    0575 930000BC  STS	MileageCurrent+1,R16
(0538)   *((char*)&MileageCurrent+2) = EEPROM_read( 0x06 );
    0577 E006      LDI	R16,6
    0578 E010      LDI	R17,0
    0579 DBAC      RCALL	_EEPROM_read
    057A 930000BD  STS	MileageCurrent+2,R16
(0539)   *((char*)&MileageCurrent+3) = EEPROM_read( 0x07 );
    057C E007      LDI	R16,7
    057D E010      LDI	R17,0
    057E DBA7      RCALL	_EEPROM_read
    057F 930000BE  STS	MileageCurrent+3,R16
(0540)   MileageSaveBlocked = 1;
    0581 E081      LDI	R24,1
    0582 9380006F  STS	MileageSaveBlocked,R24
    0584 D438      RCALL	pop_gset2
    0585 9508      RET
_KeyMileageCurrentClear:
  i                    --> R10
    0586 D442      RCALL	push_gset3
(0541) }
(0542) 
(0543) void KeyMileageCurrentClear(void)
(0544) {
(0545)   int i;
(0546)   //1.PORTD7=Input+PullUp
(0547)   PORTD |= BIT(7); 
    0587 9A97      SBI	0x12,7
(0548)   for(i=0;i<100;i++)
    0588 24AA      CLR	R10
    0589 24BB      CLR	R11
(0549)    delay();
    058A DB49      RCALL	_delay
    058B 01C5      MOVW	R24,R10
    058C 9601      ADIW	R24,1
    058D 015C      MOVW	R10,R24
    058E 3684      CPI	R24,0x64
    058F E0E0      LDI	R30,0
    0590 079E      CPC	R25,R30
    0591 F3C4      BLT	0x058A
(0550)   DDRD &= ~BIT(7);
    0592 988F      CBI	0x11,7
(0551)   for(i=0;i<100;i++)
    0593 24AA      CLR	R10
    0594 24BB      CLR	R11
(0552)    delay();
    0595 DB3E      RCALL	_delay
    0596 01C5      MOVW	R24,R10
    0597 9601      ADIW	R24,1
    0598 015C      MOVW	R10,R24
    0599 3684      CPI	R24,0x64
    059A E0E0      LDI	R30,0
    059B 079E      CPC	R25,R30
    059C F3C4      BLT	0x0595
(0553)     //2. Read
(0554)   if (!(PIND & BIT(7)))
    059D 9987      SBIC	0x10,7
    059E C03A      RJMP	0x05D9
(0555)   {
(0556)     MileageCurrent = 0;
    059F E040      LDI	R20,0
    05A0 E050      LDI	R21,0
    05A1 E060      LDI	R22,0
    05A2 E070      LDI	R23,0
    05A3 935000BC  STS	MileageCurrent+1,R21
    05A5 934000BB  STS	MileageCurrent,R20
    05A7 937000BE  STS	MileageCurrent+3,R23
    05A9 936000BD  STS	MileageCurrent+2,R22
(0557) 	mileage /=10;
    05AB E04A      LDI	R20,0xA
    05AC E050      LDI	R21,0
    05AD E060      LDI	R22,0
    05AE E070      LDI	R23,0
    05AF 904000B9  LDS	R4,mileage+2
    05B1 905000BA  LDS	R5,mileage+3
    05B3 902000B7  LDS	R2,mileage
    05B5 903000B8  LDS	R3,mileage+1
    05B7 937A      ST	R23,-Y
    05B8 936A      ST	R22,-Y
    05B9 935A      ST	R21,-Y
    05BA 934A      ST	R20,-Y
    05BB 0181      MOVW	R16,R2
    05BC 0192      MOVW	R18,R4
    05BD D352      RCALL	div32u
    05BE 931000B8  STS	mileage+1,R17
    05C0 930000B7  STS	mileage,R16
    05C2 933000BA  STS	mileage+3,R19
    05C4 932000B9  STS	mileage+2,R18
(0558) 	mileage *=10;
    05C6 E04A      LDI	R20,0xA
    05C7 E050      LDI	R21,0
    05C8 E060      LDI	R22,0
    05C9 E070      LDI	R23,0
    05CA 933A      ST	R19,-Y
    05CB 932A      ST	R18,-Y
    05CC 931A      ST	R17,-Y
    05CD 930A      ST	R16,-Y
    05CE 018A      MOVW	R16,R20
    05CF 019B      MOVW	R18,R22
    05D0 D3C0      RCALL	empy32s
    05D1 931000B8  STS	mileage+1,R17
    05D3 930000B7  STS	mileage,R16
    05D5 933000BA  STS	mileage+3,R19
    05D7 932000B9  STS	mileage+2,R18
(0559)   }
(0560)   //3.PORTD7=Output0
(0561)   PORTD &=~BIT(7);
    05D9 9897      CBI	0x12,7
(0562)   DDRD |=BIT(7);
    05DA 9A8F      SBI	0x11,7
    05DB D3E3      RCALL	pop_gset3
    05DC 9508      RET
_AlarmCalculate:
  i                    --> R10
    05DD D3EB      RCALL	push_gset3
(0563) }
(0564) 
(0565) void AlarmCalculate(void)
(0566) {
(0567)   uchar i;
(0568)   if(VoltageRefreshed[0])
    05DE 90200099  LDS	R2,VoltageRefreshed
    05E0 2022      TST	R2
    05E1 F0D9      BEQ	0x05FD
(0569)     if(Voltage[0]<ThresholdOil)
    05E2 91800081  LDS	R24,Voltage
    05E4 91900082  LDS	R25,Voltage+1
    05E6 3A86      CPI	R24,0xA6
    05E7 E0E0      LDI	R30,0
    05E8 079E      CPC	R25,R30
    05E9 F450      BCC	0x05F4
(0570)       ParallelOutputCmd |= BIT(AlarmLedOil);
    05EA 918000EF  LDS	R24,ParallelOutputCmd
    05EC 919000F0  LDS	R25,ParallelOutputCmd+1
    05EE 6280      ORI	R24,0x20
    05EF 939000F0  STS	ParallelOutputCmd+1,R25
    05F1 938000EF  STS	ParallelOutputCmd,R24
    05F3 C009      RJMP	0x05FD
(0571) 	else
(0572)       ParallelOutputCmd &= ~BIT(AlarmLedOil);
    05F4 918000EF  LDS	R24,ParallelOutputCmd
    05F6 919000F0  LDS	R25,ParallelOutputCmd+1
    05F8 7D8F      ANDI	R24,0xDF
    05F9 939000F0  STS	ParallelOutputCmd+1,R25
    05FB 938000EF  STS	ParallelOutputCmd,R24
(0573)   if(VoltageRefreshed[1])
    05FD 9020009A  LDS	R2,VoltageRefreshed+1
    05FF 2022      TST	R2
    0600 F0D9      BEQ	0x061C
(0574)     if(Voltage[1]<ThresholdTemp)
    0601 91800083  LDS	R24,Voltage+2
    0603 91900084  LDS	R25,Voltage+3
    0605 3B8A      CPI	R24,0xBA
    0606 E0E0      LDI	R30,0
    0607 079E      CPC	R25,R30
    0608 F450      BCC	0x0613
(0575)       ParallelOutputCmd |= BIT(AlarmLedTemp);
    0609 918000EF  LDS	R24,ParallelOutputCmd
    060B 919000F0  LDS	R25,ParallelOutputCmd+1
    060D 6880      ORI	R24,0x80
    060E 939000F0  STS	ParallelOutputCmd+1,R25
    0610 938000EF  STS	ParallelOutputCmd,R24
    0612 C009      RJMP	0x061C
(0576) 	else
(0577)       ParallelOutputCmd &= ~BIT(AlarmLedTemp);
    0613 918000EF  LDS	R24,ParallelOutputCmd
    0615 919000F0  LDS	R25,ParallelOutputCmd+1
    0617 778F      ANDI	R24,0x7F
    0618 939000F0  STS	ParallelOutputCmd+1,R25
    061A 938000EF  STS	ParallelOutputCmd,R24
(0578)   if(VoltageRefreshed[2])
    061C 9020009B  LDS	R2,VoltageRefreshed+2
    061E 2022      TST	R2
    061F F0D9      BEQ	0x063B
(0579)     if(Voltage[2]<ThresholdOilP)
    0620 91800085  LDS	R24,0x85
    0622 91900086  LDS	R25,0x86
    0624 3981      CPI	R24,0x91
    0625 E0E0      LDI	R30,0
    0626 079E      CPC	R25,R30
    0627 F450      BCC	0x0632
(0580)       ParallelOutputCmd |= BIT(AlarmLedOilP);
    0628 918000EF  LDS	R24,ParallelOutputCmd
    062A 919000F0  LDS	R25,ParallelOutputCmd+1
    062C 6480      ORI	R24,0x40
    062D 939000F0  STS	ParallelOutputCmd+1,R25
    062F 938000EF  STS	ParallelOutputCmd,R24
    0631 C009      RJMP	0x063B
(0581) 	else
(0582)       ParallelOutputCmd &= ~BIT(AlarmLedOilP);
    0632 918000EF  LDS	R24,ParallelOutputCmd
    0634 919000F0  LDS	R25,ParallelOutputCmd+1
    0636 7B8F      ANDI	R24,0xBF
    0637 939000F0  STS	ParallelOutputCmd+1,R25
    0639 938000EF  STS	ParallelOutputCmd,R24
(0583)   if(VoltageRefreshed[3])
    063B 9020009C  LDS	R2,VoltageRefreshed+3
    063D 2022      TST	R2
    063E F0D9      BEQ	0x065A
(0584)     if(Voltage[3]<ThresholdAir)
    063F 91800087  LDS	R24,0x87
    0641 91900088  LDS	R25,0x88
    0643 3583      CPI	R24,0x53
    0644 E0E1      LDI	R30,1
    0645 079E      CPC	R25,R30
    0646 F450      BCC	0x0651
(0585)       ParallelOutputCmd |= BIT(AlarmLedAir1);
    0647 918000EF  LDS	R24,ParallelOutputCmd
    0649 919000F0  LDS	R25,ParallelOutputCmd+1
    064B 6091      ORI	R25,1
    064C 939000F0  STS	ParallelOutputCmd+1,R25
    064E 938000EF  STS	ParallelOutputCmd,R24
    0650 C009      RJMP	0x065A
(0586) 	else
(0587)       ParallelOutputCmd &= ~BIT(AlarmLedAir1);
    0651 918000EF  LDS	R24,ParallelOutputCmd
    0653 919000F0  LDS	R25,ParallelOutputCmd+1
    0655 7F9E      ANDI	R25,0xFE
    0656 939000F0  STS	ParallelOutputCmd+1,R25
    0658 938000EF  STS	ParallelOutputCmd,R24
(0588)   if(VoltageRefreshed[4])
    065A 9020009D  LDS	R2,0x9D
    065C 2022      TST	R2
    065D F0D9      BEQ	0x0679
(0589)     if(Voltage[4]<ThresholdAir)
    065E 91800089  LDS	R24,0x89
    0660 9190008A  LDS	R25,0x8A
    0662 3583      CPI	R24,0x53
    0663 E0E1      LDI	R30,1
    0664 079E      CPC	R25,R30
    0665 F450      BCC	0x0670
(0590)       ParallelOutputCmd |= BIT(AlarmLedAir2);
    0666 918000EF  LDS	R24,ParallelOutputCmd
    0668 919000F0  LDS	R25,ParallelOutputCmd+1
    066A 6092      ORI	R25,2
    066B 939000F0  STS	ParallelOutputCmd+1,R25
    066D 938000EF  STS	ParallelOutputCmd,R24
    066F C009      RJMP	0x0679
(0591) 	else
(0592)       ParallelOutputCmd &= ~BIT(AlarmLedAir2);
    0670 918000EF  LDS	R24,ParallelOutputCmd
    0672 919000F0  LDS	R25,ParallelOutputCmd+1
    0674 7F9D      ANDI	R25,0xFD
    0675 939000F0  STS	ParallelOutputCmd+1,R25
    0677 938000EF  STS	ParallelOutputCmd,R24
(0593)   if(VoltageRefreshed[5])
    0679 9020009E  LDS	R2,0x9E
    067B 2022      TST	R2
    067C F0D9      BEQ	0x0698
(0594)     if(Voltage[5]<ThresholdVoltL)
    067D 9180008B  LDS	R24,0x8B
    067F 9190008C  LDS	R25,0x8C
    0681 328C      CPI	R24,0x2C
    0682 E0E1      LDI	R30,1
    0683 079E      CPC	R25,R30
    0684 F450      BCC	0x068F
(0595)       ParallelOutputCmd |= BIT(AlarmLedVoltL);
    0685 918000EF  LDS	R24,ParallelOutputCmd
    0687 919000F0  LDS	R25,ParallelOutputCmd+1
    0689 6094      ORI	R25,4
    068A 939000F0  STS	ParallelOutputCmd+1,R25
    068C 938000EF  STS	ParallelOutputCmd,R24
    068E C009      RJMP	0x0698
(0596) 	else
(0597)       ParallelOutputCmd &= ~BIT(AlarmLedVoltL);
    068F 918000EF  LDS	R24,ParallelOutputCmd
    0691 919000F0  LDS	R25,ParallelOutputCmd+1
    0693 7F9B      ANDI	R25,0xFB
    0694 939000F0  STS	ParallelOutputCmd+1,R25
    0696 938000EF  STS	ParallelOutputCmd,R24
(0598)   if(VoltageRefreshed[5])
    0698 9020009E  LDS	R2,0x9E
    069A 2022      TST	R2
    069B F0E1      BEQ	0x06B8
(0599)     if(Voltage[5]>ThresholdVoltH)
    069C EC82      LDI	R24,0xC2
    069D E091      LDI	R25,1
    069E 9020008B  LDS	R2,0x8B
    06A0 9030008C  LDS	R3,0x8C
    06A2 1582      CP	R24,R2
    06A3 0593      CPC	R25,R3
    06A4 F450      BCC	0x06AF
(0600)       ParallelOutputCmd |= BIT(AlarmLedVoltH);
    06A5 918000EF  LDS	R24,P

⌨️ 快捷键说明

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