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

📄 init_e2p.lst

📁 speedometer cum odometer with asm and hex files
💻 LST
📖 第 1 页 / 共 3 页
字号:
009D C2B7            178                 CLR EN
INIT_E2P                                                                                                      PAGE 4

009F 00              179                 NOP
00A0 120076          180                 LCALL READY
00A3 22              181                 RET
                     182     ;****************************LCD SUBROUTINES****************************************
                     183            
00A4 7430            184    INIT:           MOV A,#030H   ;INITIALIZE LCD BY SENDING 30H THREE TIMES. 
00A6 120095          185                    LCALL  CMD
00A9 11E7            186                    ACALL DDELAY  ;INITIAL DELAY 4.1MSEC
00AB 7430            187                    MOV A,#030H   
00AD 120095          188                    LCALL  CMD
00B0 11E7            189                    ACALL DDELAY  
00B2 7430            190                    MOV A,#030H   
00B4 120095          191                    LCALL  CMD
00B7 11E7            192                    ACALL DDELAY 
                     193                    
00B9 7438            194                    MOV A,#038H   ; INITIALIZE, 2-LINES, 5X7 MATRIX.
00BB 120095          195                    LCALL  CMD
00BE 11E7            196                    ACALL DDELAY 
                     197                    
00C0 740C            198                    MOV A,#0CH    ;  INVISIBLE CURSOR ON;
00C2 120095          199                    LCALL  CMD
00C5 7401            200                    MOV A,#01H    ; CLEAR LCD SCREEN
00C7 120095          201                    LCALL  CMD
00CA 7406            202                    MOV A,#06H    ; SHIFT CURSOR RIGHT
00CC 120095          203                    LCALL  CMD
                     204                    
00CF 7482            205                    MOV A,#82H       ; LINE 1
00D1 120095          206                    LCALL CMD         
                     207                   
00D4 9001F4          208                    MOV DPTR,#MSG_1
00D7 E4              209            LINE1:  CLR A
00D8 93              210                    MOVC A,@A+DPTR
00D9 6005            211                    JZ DONE
00DB 1186            212                    ACALL DAT
00DD A3              213                    INC DPTR
00DE 80F7            214                    SJMP LINE1
                     215                                    
                     216                    
00E0 22              217             DONE:  RET
                     218                    
                     219    ;****************************LCD SUBROUTINES****************************************
                     220                   
00E1 7401            221    CLEAR:  MOV A,#01H
00E3 120095          222            LCALL  CMD
00E6 22              223            RET
                     224    
                     225    ;****************************LCD SUBROUTINES****************************************
                     226    
00E7 7D29            227    DDELAY:  MOV R5,#41D           ; 4.1 mS DELAY
00E9 7E32            228        QT2: MOV R6,#50D
00EB DEFE            229        QT1: DJNZ R6,QT1
00ED DDFA            230             DJNZ R5,QT2                 
00EF 22              231             RET
                     232    
                     233    ;***********************************************************************
                     234    ;                I2C - SERIAL EEPROM ROUTINES
                     235    ;***********************************************************************
                     236    ;**********************************************************     
INIT_E2P                                                                                                      PAGE 5

                     237    ; THIS SUB READS ONE BYTE OF DATA FROM THE EEPROM
                     238    ;**********************************************************
                     239    
00F0                 240    READ_BYTE:
00F0 752108          241             MOV         BITCNT,#08H; SET COUNTER FOR 8-BITS DATA
00F3 7400            242             MOV         A,#00H
00F5 D2B1            243             SETB        SDA        ; SET SDA HIGH TO ENSURE LINE
                     244                                    ; FREE
00F7                 245    READ_BITS:
                     246 +1          SCL_HIGH               ; TRANSITION SCL LOW-TO-HIGH
00F7 D2B0            247 +1           SETB   SCL      ; SET SCL HIGH
00F9 30B0FD          248 +1           JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
00FC A2B1            250             MOV         C,SDA      ; MOVE DATA BIT INTO CARRY
00FE 33              251             RLC         A          ; ROTATE CARRY-BIT INTO ACC.0
00FF C2B0            252             CLR         SCL        ; TRANSITION SCL HIGH-TO-LOW
0101 D521F3          253             DJNZ        BITCNT,READ_BITS
                     254                                    ; LOOP FOR 8-BITS
0104 200002          255             JB          LASTREAD,ACKN
                     256                                    ; CHECK TO SEE IF THIS IS
                     257                                    ; THE LAST READ
0107 C2B1            258             CLR         SDA        ; IF NOT LAST READ SEND ACK-BIT
                     259    
0109                 260    ACKN:
                     261 +1          SCL_HIGH               ; PULSE SCL TO TRANSMIT ACKNOWLEDGE
0109 D2B0            262 +1           SETB   SCL      ; SET SCL HIGH
010B 30B0FD          263 +1           JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
010E C2B0            265             CLR         SCL        ; OR NOT ACKNOWLEDGE BIT
0110 22              266             RET
                     267    
                     268    ;**********************************************************
                     269    ;         SUB SENDS START CONDITION
                     270    ;**********************************************************
                     271    
0111                 272    SEND_START:
0111 D207            273             SETB        _2W_BUSY   ; INDICATE THAT 2-WIRE
0113 C205            274             CLR         ACK        ; OPERATION IS IN PROGRESS
0115 C206            275             CLR         BUS_FLT    ; CLEAR STATUS FLAGS
0117 30B011          276             JNB         SCL,FAULT
011A 30B10E          277             JNB         SDA,FAULT
011D D2B1            278             SETB        SDA        ; BEGIN START CODITION
                     279 +1          SCL_HIGH
011F D2B0            280 +1           SETB   SCL      ; SET SCL HIGH
0121 30B0FD          281 +1           JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
0124 C2B1            283             CLR         SDA
0126 313A            284             ACALL       DEELAY
0128 C2B0            285             CLR         SCL
012A 22              286             RET
012B                 287    FAULT:
012B D206            288             SETB        BUS_FLT
012D 22              289             RET
                     290    
                     291    ;**********************************************************
                     292    ;          SUB SENDS STOP CONDITION
                     293    ;**********************************************************
012E                 294    SEND_STOP:
012E C2B1            295             CLR         SDA
                     296 +1          SCL_HIGH
0130 D2B0            297 +1           SETB   SCL      ; SET SCL HIGH
INIT_E2P                                                                                                      PAGE 6

0132 30B0FD          298 +1           JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
0135 D2B1            300             SETB        SDA
0137 C207            301             CLR         _2W_BUSY
0139 22              302             RET
                     303    ;**********************************************************
                     304    ; SUB DELAYS THE BUS
                     305    ;**********************************************************
013A                 306    DEELAY:
013A 00              307             NOP                    ; DELAY FOR BUS TIMING
013B 22              308             RET
                     309    ; *********************************************************
                     310    ; THIS SUB SENDS 1 BYTE OF DATA TO THE EEPROM
                     311    ; *********************************************************
                     312    
013C                 313    SEND_BYTE:
013C 752108          314             MOV         BITCNT,#08H; SET COUNTER FOR 8-BITS
013F                 315    SB_LOOP:
013F 30E705          316             JNB         ACC.7,NOTONE ; CHECK TO SEE IF BIT-7 OF
0142 D2B1            317             SETB        SDA          ; ACC IS A 1, AND SET SDA HIGH
0144 020149          318             JMP         ONE
0147                 319    NOTONE:
0147 C2B1            320             CLR         SDA             ; CLR SDA LOW
0149                 321    ONE:
                     322 +1          SCL_HIGH                    ; TRANSITION SCL LOW-TO-HIGH
0149 D2B0            323 +1           SETB   SCL      ; SET SCL HIGH
014B 30B0FD          324 +1           JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
014E 23              326             RL          A               ; ROTATE ACC LEFT 1-BIT
014F C2B0            327             CLR         SCL             ; TRANSITION SCL LOW-TO-HIGH
0151 D521EB          328             DJNZ        BITCNT,SB_LOOP  ; LOOP FOR 8-BITS
0154 D2B1            329             SETB        SDA        ; SET SDA HIGH TO LOOK FOR
                     330 +1          SCL_HIGH               ; ACKNOWLEDGE PULSE
0156 D2B0            331 +1           SETB   SCL      ; SET SCL HIGH
0158 30B0FD          332 +1           JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
015B C205            334             CLR         ACK
015D 30B102          335             JNB         SDA,SB_EX  ; CHECK FOR ACK OR NOT ACK
0160 D205            336             SETB        ACK        ; SET ACKNOWLEDGE FLAG FOR
                     337                                    ; NOT ACK
0162                 338    SB_EX:
0162 313A            339             ACALL       DEELAY      ; DELAY FOR AN OPERATION
0164 C2B0            340             CLR         SCL         ; TRANSITION SCL HIGH-TO-LOW
0166 313A            341             ACALL       DEELAY      ; DELAY FOR AN OPERATION
0168 22              342             RET
                     343    ; *********************************************************************
                     344    ;  SUB READS FROM THE EEPROM AND WRITES IT TO THE SCRATCHPAD MEMORY
                     345    ; *********************************************************************
0169                 346    READEEPROM:
0169 7923            347             MOV         R1,#POINT      ;  START FROM POINT STORAGE LOCATION
016B 752200          348             MOV         BYTECNT,#00H
016E C200            349             CLR         LASTREAD
0170 120111          350             LCALL       SEND_START
0173 74A0            351             MOV         A,#EEPROMW      
0175 12013C          352             LCALL       SEND_BYTE
0178 7400            353             MOV         A,#00H         ; POINT TO 00H ADDRESS OF EEPROM
017A 12013C          354             LCALL       SEND_BYTE
017D 12012E          355             LCALL       SEND_STOP
                     356             

⌨️ 快捷键说明

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