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

📄 speedo1.lst

📁 speedometer cum odometer with asm and hex files
💻 LST
📖 第 1 页 / 共 3 页
字号:
SPEEDO1                                                                                                       PAGE 1

                       1    ;*******************************************************************************************
                                                                               ***********
                       2    ;         DIGITAL SPEEDOMETER CUM ODOMETER USING  16X2 LINE LCD + 8051 + EEPROM(I2C)
                       3    ;*******************************************************************************************
                                                                               ***********
                       4    ; XTAL Freq = 12 MHz
                       5    
                       6    $MOD51
                       7    
                       8    
  0090                 9    LCD    EQU      P1    ;   P1.0 .....P1.7, PORT1 USED AS DATA BUS 
  00B2                10    RS     EQU      P3.2
  00B3                11    RW     EQU      P3.3
  00B7                12    EN     EQU      P3.7
                      13    
  00B4                14    DISTO  EQU      P3.4   ; TIMER 0 INPUT FOR DISTANCE-ODOMETER
  00B5                15    SPEDO  EQU      P3.5   ; TIMER 1 INPUT FOR SPEEDOMETER
                      16    
                      17    
  00B0                18    SCL   EQU        P3.0         ;SCL=PIN6
  00B1                19    SDA   EQU        P3.1         ;SDA=PIN5
                      20    
  00A0                21    EEPROMW   EQU    10100000B     ; SLAVE ADDRESS  OF EEPROM 1010 000  + 0 TO WRITE
  00A1                22    EEPROMR   EQU    10100001B     ; SLAVE ADDRESS  OF EEPROM  1010 000 + 1 TO READ
                      23    
                      24    
                      25    
----                  26    DSEG 
0020                  27    ORG 020H                      ; BIT-ADDRESSABLE RAM
                      28     
0020                  29    FLAGS:    DS      1           ; VARIABLES FOR I2C PROTOCOL
  0000                30    LASTREAD  BIT    FLAGS.0
  0004                31    SQW       BIT    FLAGS.4
  0005                32    ACK       BIT    FLAGS.5
  0006                33    BUS_FLT   BIT    FLAGS.6
  0007                34    _2W_BUSY  BIT    FLAGS.7
  0001                35    OK        BIT      1
                      36    
0021                  37    BITCNT:   DS            1
0022                  38    BYTECNT:  DS            1
0023                  39    POINT:  DS 1    ; DISTANCE VARIABLES
0024                  40    KM:     DS 1
0025                  41    TKM:   DS 1
0026                  42    HKM:   DS 1
0027                  43    KKM:   DS 1
0028                  44    TKKM:  DS 1
0029                  45    TOTAL: DS 1
  0048                46    STORE BIT  TOTAL.0
                      47    
002A                  48    VAL1: DS 1   ; SPEED VAL1
002B                  49    VAL2: DS 1   ; SPEED VAL2
002C                  50    VAL3: DS 1   ; SPEED VAL3
                      51    
                      52    
                      53    
                      54    ; ***MACRO'S***
                      55    
                      56    SCL_HIGH  MACRO
SPEEDO1                                                                                                       PAGE 2

                      57              SETB   SCL      ; SET SCL HIGH
                      58              JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
                      59              ENDM
                      60              
                      61       
                      62    CONVERT MACRO               
                      63       ORL A,#30H         ; CONVERT TO ASCII BY ADDING 30H
                      64       ENDM
                      65    
                      66    
----                  67    CSEG                              ; CODE BEGINS HERE
0000                  68                  ORG 0000H           ; ON RESET
                      69    
0000 800C             70                  SJMP MAIN    
                      71    
000B                  72                  ORG 000BH           ;Timer Interrupt0
                      73    
000B 020085           74                  LJMP UPDATE
                      75     
                      76    
                      77    
000E 758170           78    MAIN:  MOV SP,#70H       ; MOVE STACK POINTER TO ADDRESS 70H OF RAM
0011 1202A1           79           LCALL PWR_DELAY   ;LCD POWER ON DELAY
0014 12015F           80           LCALL INIT        ;INITIALIZE LCD
0017 C248             81           CLR STORE         ;CLEAR STORE FLAG
                      82           
0019 752300           83           MOV POINT,#00H    ; RESET ALL COUNTERS TO ZERO
001C 752400           84           MOV KM,#00H
001F 752500           85           MOV TKM,#00H
0022 752600           86           MOV HKM,#00H
0025 752700           87           MOV KKM,#00H
0028 752800           88           MOV TKKM,#00H
                      89           
002B 752A00           90           MOV VAL1,#00H     ; RESET SPEED VALUES TO ZERO
002E 752B00           91           MOV VAL2,#00H
0031 752C00           92           MOV VAL3,#00H
                      93           
0034 120235           94           LCALL READEEPROM   ; GET PREVIOUS READING FROM EEPROM
                      95          
0037 1200DD           96           LCALL SEND2LCD     ; DISPLAY INITIAL/PREVIOUS VALUES
                      97           
                      98           
003A 758966           99           MOV TMOD,#66H    ; BOTH THE TIMERS SET AS COUNTERS IN MODE 2 - 8 BIT AUTO RELOAD 
                     100           
003D 758CCB          101           MOV TH0,#203D    ; LOAD DISTANCE COUNTER TO COUNT 53 REVOLUTIONS(255-53+1)i,e 100 MET
                                                                               ERS
0040 758ACB          102           MOV TL0,#203D      
                     103           
0043 D2B4            104           SETB DISTO      ; T0 INPUT       
0045 D2B5            105           SETB SPEDO      ; T1 INPUT
                     106           
0047 D2A9            107           SETB ET0        ; ENABLE TR0 INTERRUPT
0049 D2AF            108           SETB EA         ; GLOBAL ENABLE INTERRUPTS
004B D28C            109           SETB TR0        ; START TIMER0
                     110           
                     111           
004D 758B00          112    LOOP:  MOV TL1,#00H   ;  RESET SPEED COUNTER TO 00
0050 D28E            113           SETB TR1
SPEEDO1                                                                                                       PAGE 3

0052 1200CE          114           LCALL ONESEC_DELAY
0055 858BF0          115           MOV B,TL1      ; COPY TL1 VALUE TO REGISTER B AFTER ONE SEC DELAY
0058 C28E            116           CLR TR1        ; STOP TR1
005A E5F0            117           MOV A,B
005C 7002            118           JNZ GET_FIRST  ; CHECK IF SPEED IS ZERO
005E D248            119           SETB STORE     ; IF YES, SET STORE CURRENT READING FLAG
                     120           
0060 900361          121    GET_FIRST: MOV DPTR,#FIRST        ; LOAD TABLE FOR FIRST DIGIT OF SPEED
0063 E5F0            122               MOV A,B
0065 93              123               MOVC A,@A+DPTR
0066 F52A            124               MOV VAL1,A
                     125               
0068 900371          126    GET_SECOND: MOV DPTR,#SECOND      ; LOAD TABLE FOR SECOND DIGIT OF SPEED
006B E5F0            127                MOV A,B
006D 93              128                MOVC A,@A+DPTR
006E F52B            129                MOV VAL2,A
                     130    
0070 900381          131    GET_THIRD: MOV DPTR,#THIRD        ; LOAD TABLE FOR THIRD DIGIT OF SPEED
0073 E5F0            132               MOV A,B
0075 93              133               MOVC A,@A+DPTR
0076 F52C            134               MOV VAL3,A
                     135                  
0078 1200DD          136               LCALL SEND2LCD          ; SEND VALUES TO LCD
                     137               
007B 104802          138               JBC STORE,STORE_DAT     ; CHECK IF STORE FLAG IS SET AND CLEAR THE FLAG
                     139               
007E 80CD            140               SJMP LOOP               ; CONTINUE DOING THIS
                     141                  
0080 120272          142    STORE_DAT: LCALL SEND2EEPROM       ; IF SPEED IS = 00.0 THEN SAVE THE MILEAGE IN EEPROM 
                     143           
0083 80C8            144               SJMP LOOP
                     145    
                     146     
                     147    ;******************************************************************************************
                                                                               
                     148    ;             TIMER 0 ISR  - TO MEASURE DISTANCE
                     149    ;******************************************************************************************
                                                                               
                     150    
0085 0523            151    UPDATE:  INC POINT
                     152             
0087 A823            153             MOV R0,POINT
0089 B80A41          154             CJNE R0,#10D,EXIT
008C 752300          155             MOV POINT,#00H
008F 0524            156             INC KM
                     157             
0091 A824            158             MOV R0,KM
0093 B80A37          159             CJNE R0,#10D,EXIT
0096 752400          160             MOV KM,#00H
0099 0525            161             INC TKM
                     162             
009B A825            163             MOV R0,TKM
009D B80A2D          164             CJNE R0,#10D,EXIT
                     165             
00A0 752500          166             MOV TKM,#00H
00A3 0526            167             INC HKM
                     168             
00A5 A826            169             MOV R0,HKM
SPEEDO1                                                                                                       PAGE 4

00A7 B80A23          170             CJNE R0,#10D,EXIT
                     171             
00AA 752600          172             MOV HKM,#00H
00AD 0527            173             INC KKM
                     174             
00AF A827            175             MOV R0,KKM
00B1 B80A19          176             CJNE R0,#10D,EXIT
00B4 0528            177             INC TKKM
                     178             
00B6 A828            179             MOV R0,TKKM
00B8 B80A12          180             CJNE R0,#10D,EXIT
                     181             
00BB 752300          182             MOV POINT,#00H       ; WHEN 99,999 Kms, RESET ALL COUNTERS TO ZERO
00BE 752400          183             MOV KM,#00H
00C1 752500          184             MOV TKM,#00H
00C4 752600          185             MOV HKM,#00H
00C7 752700          186             MOV KKM,#00H
00CA 752800          187             MOV TKKM,#00H
                     188             
                     189       
00CD 32              190     EXIT: RETI     
                     191    
                     192    ;****************************************************************************************** 
                                                                                
00CE                 193    ONESEC_DELAY:
                     194    
                     195                         
00CE 780A            196            MOV R0,#10D    ; One second delay routine
00D0 7964            197    RZ3:    MOV R1,#100D
00D2 7AFA            198    RZ1:    MOV R2,#250D
00D4 00              199    RZ2:    NOP
00D5 00              200            NOP
00D6 DAFC            201            DJNZ R2,RZ2
00D8 D9F8            202            DJNZ R1,RZ1  
00DA D8F4            203            DJNZ R0,RZ3  
00DC 22              204            RET  
                     205    ;****************************************************************************************** 
                                                                               
                     206         
00DD                 207    SEND2LCD: 
                     208           
00DD 7484            209           MOV A,#84H     ; LINE 1
00DF 120150          210           LCALL CMD
                     211           
00E2 E528            212           MOV A,TKKM
                     213 +1        CONVERT
00E4 4430            214 +1    ORL A,#30H         ; CONVERT TO ASCII BY ADDING 30H
00E6 120141          216           LCALL DAT
                     217              
                     218           
00E9 E527            219           MOV A,KKM
                     220 +1        CONVERT
00EB 4430            221 +1    ORL A,#30H         ; CONVERT TO ASCII BY ADDING 30H
00ED 120141          223           LCALL DAT
                     224           
00F0 E526            225           MOV A,HKM

⌨️ 快捷键说明

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