READ_BIT_COUNTER
BSF GPIO,SDA ; set data bit to 1 so we’re not pulling bus down.
NOP
BSF GPIO,SCL
MOV LW 8 ; Set counter so 8 bits will be read into EEDATA
MOV WF COUNTER
READ_BYTE
BSF GPIO,SCL ; Raise SCL, SDA valid. SDA still input from ack
BSF STATUS,CARRY ;(SETC) Assume bit to be read = 1
BTFSS GPIO,SDA ; Check if SDA = 1
BCF STATUS,CARRY ;(CLRC) if SDA not = 1 then clear carry bit
RLF EEDATA,1 ; rotate carry bit (=SDA) into EEDATA;
BCF GPIO,SCL ; Lower SCL
bsf GPIO,SDA ; reset SDA
DECFSZ COUNTER,1 ; Decrement counter
GOTO READ_BYTE ; Read next bit if not finished reading byte
BSF GPIO,SCL
NOP
BCF GPIO,SCL
;****************** Generate a STOP bit and RETURN ***********************
STOP_BIT
BCF GPIO,SDA ; SDA=0, on TRIS, to prepare for transition to ’1’
BSF GPIO,SCL ; SCL = 1 to prepare for STOP bit
GOTO $+1 ; equivalent 4 NOPs neccessary for I2C spec Tsu:sto = 4.7us
GOTO $+1
BSF GPIO,SDA ; Stop bit, SDA transition to ’1’ while SCL high
BTFSS PC_OFFSET,EE_OK ; Check for error
RETLW NO ; if error, send back NO
RETLW OK ; if no error, send back OK
;************************ End EEPROM Subroutines **************************
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;
; 0111 1RRR DDDD DDDD -> register mode
;
; 0111 10AA AAAA AAAA 111K DBBB ; Bit manipulation
; verify/write^
;.....................................................................
DECOD SWAPF INDF,0 ; 25
MOV WF BT6 ; 26
RRF BT6,0 ; 27
ANDLW 00000111b ; 28
ADDWF PC ; 29
GOTO DECCON ; 000 30-31
GOTO ADVAN ; 001
GOTO FORWARD ; 010
GOTO REVERSE ; 011
GOTO FTION ; 100
GOTO FTION1 ; 101
GOTO TELNEW ; 110
MOV F BT2,0 ;--------------------------------
XORLW 11111001b ; old acknowledge mode
BTFSC STATUS,ZERO ;
GOTO OLDACK ;--------------------------------
MOV F INDF,0 ; OTM mode -copy bytes
MOV WF BT1 ;
INCF FSR,1 ;
MOV F INDF,0 ; CV to pogram
MOV WF BT2 ;
INCF FSR,1 ; DATA for cv
MOV F INDF,0 ; INDF looks to data
MOV WF BT3 ;
GOTO PROGOTM ; 111
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
BITMAN MOV WF FSR ;
MOV LW 00000111b ;
ANDWF BT3,0 ;
CALL BITPOS ;
BTFSS BT3,4 ;
GOTO VBIT ; verify bit
BTFSC BT3,3 ;
IORWF INDF,1 ; set bit
XORLW 0XFF ;
BTFSS BT3,3 ;
ANDWF INDF,1 ; clear bit
MOV F FSR,0 ; EEADDR
GOTO EEPROG ; write complete byte
;--------------------------------
VBIT ANDWF INDF,0 ;
BTFSC STATUS,ZERO ;
GOTO BITCLR ;
BITSET BTFSC BT3,3 ;
GOTO ACKNOW ; =1
GOTO HOPP ;
BITCLR BTFSS BT3,3 ;
GOTO ACKNOW ; =0
GOTO HOPP ;
;--------------------------------
BITPOS ADDWF PC ;
RETLW 00000001b ; 0
RETLW 00000010b ; 1
RETLW 00000100b ; 2
RETLW 00001000b ; 3
RETLW 00010000b ; 4
RETLW 00100000b ; 5
RETLW 01000000b ; 6
RETLW 10000000b ; 7
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
DECCON BTFSC INDF,4 ; 000>0<CCCD
GOTO CONCON ; 0001 consist control
RRF INDF,0 ; 0000CCC>D< MOV ed to carry
ANDLW 0xFF ;
BTFSC STATUS,ZERO ;
GOTO RESET ; 000 reset / hard reset
GOTO HOPP ;
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
LIGHT BTFSS RDLTON ;
GOTO LI ;
BTFSC REDLT ;
GOTO REDLIT ;
GOTO NOLIGHT ;
LI BTFSS BRKON ;
GOTO LI1 ;
BTFSC BRAKE ;
GOTO REDLIT ;
GOTO NOLIGHT ;
LI1 BTFSS INDF,4 ;
GOTO NOLIGHT ;
REDLIT BTFSC DIR ; direction invert?
GOTO BLIGHT ;
FLIGHT BTFSC LIINV ; light invert? (PWRSRC)
GOTO BLI ;
FLI BTFSS FLOFF ; cv50
BSF LIGHT1 ;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:单片机 程序 玩具 PIC单片机,单片机-工控设备 - PIC单片机