list P=16F628 #include __CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _MCLRE_OFF PC EQU 0x02 CBLOCK 0x20 DELAY1, DELAY2, DBYTE1, DBYTE2, DBYTE3, IVAR, NUMARATOR, BSECUNDE, BMINUTE, BORE, COUNT1, COUNT2, COUNT3, SECTOR_SEC, POINTER_IMP, MEMMIN, MEMORE ENDC CLRF PORTA ;Initialize PORTA by setting output data latches MOVLW 0x07 ;Disable comparators and MOVWF CMCON ;pins for functioning as I/O BCF STATUS, RP1 BSF STATUS, RP0 ;Select Bank1 MOVLW B'00011111' ;set pins MOVWF TRISA ;Set RA<4:0> as inputs ;TRISA<5> always read as ‘1’. ;TRISA<7:6> depend on oscillator mode MOVLW B'11111001' ;set portb as outs MOVWF TRISB CLRF PORTB ;reset outs BCF STATUS, RP1 BCF STATUS, RP0 ;Select Bank0 MOVLW B'00000110' MOVWF PORTB CLRF PORTA movlw 'T' movlw 'a' movlw 'c' movlw 'i' movlw 'u' movlw 'c' movlw '.' movlw 'M' movlw 'a' movlw 'r' movlw 'i' movlw 'u' movlw 's' movlw '.' movlw 'f' movlw 'o' movlw 'r' movlw '.' movlw 'L' movlw 'o' movlw 'r' movlw 'd' movlw '.' movlw 'J' movlw 'e' movlw 's' movlw 'u' movlw 's' movlw '.' movlw '.' movlw '.' movlw '.' movlw '.' movlw '.' movlw '.' movlw '.' movlw '.' movlw '.' CLRF DBYTE1 CLRF DBYTE2 CLRF DBYTE3 MOVLW .0 MOVWF BSECUNDE MOVLW .0 MOVWF BMINUTE MOVLW .0 MOVWF BORE CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG MOVLW .5 MOVWF NUMARATOR MOVLW .250 MOVWF COUNT2 MOVLW .3 MOVWF COUNT3 ;-------------------------------------------------------------------- REPEAT ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;-------------------------------------------------------------------- CALL RTC_READ BTFSC PORTA,0 CALL SETCLOCK CALL AFISARE_CEAS DECFSZ NUMARATOR GOTO REPEAT CALL AFISARE_CHENAR ;----COLOREAZA TOATE CELELATE LED-URI------- MOVLW .5 MOVWF NUMARATOR ;--------------------------------vvv---------NUMARATOR AFISARE LOGO- DECFSZ COUNT2 GOTO REPEAT MOVLW .250 MOVWF COUNT2 DECFSZ COUNT3 GOTO REPEAT MOVLW .250 MOVWF COUNT3 CALL AFISARE_LOGO GOTO REPEAT ;-------------------------------------------------------------------- ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;-------------------------------------------------------------------- ;### PROCEDURA AFISARE CHENAR ### AFISARE_CHENAR MOVLW .127 MOVWF BSECUNDE MOVLW .127 MOVWF BMINUTE MOVLW .63 MOVWF BORE CALL CONVERSIE CALL DISPLAY CLRF DBYTE1 CLRF DBYTE2 CLRF DBYTE3 CALL DISPLAY RETURN ;### PROCEDURA SETARE CEAS ### SETCLOCK WAITBUTT1 BTFSC PORTA,0 GOTO WAITBUTT1 CALL DELAYLUNG CALL DELAYLUNG MOVFW BMINUTE MOVWF MEMMIN MOVFW BORE MOVWF MEMORE LOOP_SET_CK CALL AFISARE_CEAS MOVLW 0x01 MOVWF BSECUNDE MOVFW MEMMIN MOVWF BMINUTE MOVFW MEMORE MOVWF BORE CALL DELAYP BTFSS PORTA,1 GOTO SKIP_INC1 INCF BMINUTE MOVFW BMINUTE MOVWF MEMMIN CALL DELAYLUNG CALL DELAYLUNG SKIP_INC1 BTFSS PORTA,0 GOTO LOOP_SET_CK CALL DELAYLUNG H_INC_ CALL AFISARE_CEAS MOVLW 0x10 MOVWF BSECUNDE MOVFW MEMMIN MOVWF BMINUTE MOVFW MEMORE MOVWF BORE CALL DELAYP BTFSS PORTA,1 GOTO SKIP_INC2 INCF BORE MOVFW BORE MOVWF MEMORE CALL DELAYLUNG SKIP_INC2 BTFSS PORTA,0 GOTO H_INC_ CLRF BSECUNDE CALL DELAYLUNG CALL DELAYLUNG CALL RTC_WRITE RETURN ;### PROCEDURA AFISARE CEAS AFISARE_CEAS CALL CONVERSIE CALL DISPLAY CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CALL DELAYPAS CLRF DBYTE1 CLRF DBYTE2 CLRF DBYTE3 CALL DISPLAY CALL DELAYPAS RETURN ;### PROCEDURA CONVERSIE ### CONVERSIE CLRF DBYTE1 CLRF DBYTE2 CLRF DBYTE3 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE1,3 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE1,2 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE1,1 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE1,0 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE2,4 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE2,5 RRF BSECUNDE,1 BTFSC STATUS,C BSF DBYTE2,6 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE2,0 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE2,1 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE2,2 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE2,3 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE2,7 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE3,0 RRF BMINUTE,1 BTFSC STATUS,C BSF DBYTE3,1 RRF BORE,1 BTFSC STATUS,C BSF DBYTE3,2 RRF BORE,1 BTFSC STATUS,C BSF DBYTE3,3 RRF BORE,1 BTFSC STATUS,C BSF DBYTE3,4 RRF BORE,1 BTFSC STATUS,C BSF DBYTE3,5 RRF BORE,1 BTFSC STATUS,C BSF DBYTE3,6 RRF BORE,1 BTFSC STATUS,C BSF DBYTE3,7 RETURN ;### PROCEDURA AFISARE_LOGO ### AFISARE_LOGO MOVLW 0x00 ;--FRAME MOVWF BSECUNDE MOVLW 0x08 MOVWF BMINUTE MOVLW 0x08 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x00 ;--FRAME MOVWF BSECUNDE MOVLW 0x44 MOVWF BMINUTE MOVLW 0x04 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x00 ;--FRAME MOVWF BSECUNDE MOVLW 0x22 MOVWF BMINUTE MOVLW 0x22 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x00 ;--FRAME MOVWF BSECUNDE MOVLW 0x11 MOVWF BMINUTE MOVLW 0x11 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x08 ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x44 ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x22 ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x11 ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 0x00 ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME MOVLW 'J' ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG MOVLW 'e' ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG MOVLW 's' ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG MOVLW 'u' ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG MOVLW 's' ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYLUNG CALL DELAYLUNG CALL DELAYLUNG MOVLW 0x00 ;--FRAME MOVWF BSECUNDE MOVLW 0x00 MOVWF BMINUTE MOVLW 0x00 MOVWF BORE CALL CONVERSIE CALL DISPLAY CALL DELAYFRAME RETURN ;### PROCEDURA DISPLAY ### DISPLAY BCF PORTB,3 BCF PORTB,6 BCF PORTB,7 BTFSC DBYTE3,7 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,6 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,5 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,4 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,3 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,2 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,1 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE3,0 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,7 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,6 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,5 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,4 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,3 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,2 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,1 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE2,0 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,7 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,6 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,5 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,4 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,3 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,2 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,1 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BTFSC DBYTE1,0 BSF PORTB,3 BSF PORTB,7 BCF PORTB,7 BCF PORTB,3 BSF PORTB,6 BCF PORTB,6 CALL DELAYP RETURN ;-------------------------------------------------------------------------------------------------- ;### DELAYURI ###############################________________############################# DELAYURI <<<<<<<<<<<<< ;-------------------------------------------------------------------------------------------------- ;### PROCEDURA DELAYPAS ### DELAYPAS MOVLW .1 MOVWF DELAY1 MOVLW .2 MOVWF DELAY2 LOOP4 DECFSZ DELAY2,f GOTO LOOP4 DECFSZ DELAY1,f GOTO LOOP4 RETURN ;### PROCEDURA DELAY PROPAGARE ### DELAYP MOVLW 0x05 MOVWF DELAY2 Loop3 DECFSZ DELAY2,f GOTO Loop3 RETURN ;### PROCEDURA DELAYLUNG ### DELAYLUNG MOVLW .255 MOVWF DELAY1 MOVLW .255 MOVWF DELAY2 LOOP41 DECFSZ DELAY2,f GOTO LOOP41 DECFSZ DELAY1,f GOTO LOOP41 RETURN ;### PROCEDURA DELAYFRAME ### DELAYFRAME MOVLW .100 MOVWF DELAY1 MOVLW .200 MOVWF DELAY2 LOOP43 DECFSZ DELAY2,f GOTO LOOP43 DECFSZ DELAY1,f GOTO LOOP43 RETURN ;-------------------------------------------------------------------------------------------------- ;### PROCEDURA RTC WRITE ######################################################################### ;-------------------------------------------------------------------------------------------------- RTC_WRITE CALL START_CONDITION ;### START CITIRE CALL DEVICE_ADRESS_BYTE CALL BIT_DE_SCRIERE CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE CALL GO_ADRESA0 CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE ;---------------------------### SCRIERE IN MEMORIA RTC MOVLW .7 MOVWF COUNT1 XXFFA1 BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP DECFSZ COUNT1 GOTO XXFFA1 BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE BCF PORTB,1 BTFSC BMINUTE,7 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,6 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,5 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,4 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,3 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,2 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,1 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BMINUTE,0 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE BCF PORTB,1 BTFSC BORE,7 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,6 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,5 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,4 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,3 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,2 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,1 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BTFSC BORE,0 BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE ;------------------------------------------- BSF PORTB,1 CALL DELAYP BSF PORTB,2 ;STOP CONDITION CALL DELAYP CALL DELAYP RETURN ;-------------------------------------------------------------------------------------------------- ;### PROCEDURA RTC READ############################################################################ ;-------------------------------------------------------------------------------------------------- RTC_READ CLRF BSECUNDE CLRF BMINUTE CLRF BORE CALL START_CONDITION ;### START CITIRE CALL DEVICE_ADRESS_BYTE CALL BIT_DE_SCRIERE CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE CALL GO_ADRESA0 CALL DATAINREADMODE CALL WAIT_ACK CALL DATAINWRITEMODE ;---------------------------### SCRIERE IN MEMORIA RTC ; CALL GO_ADRESA0 ; CALL DATAINREADMODE ; CALL WAIT_ACK ; CALL DATAINWRITEMODE ; CALL GO_ADRESA0 ; CALL DATAINREADMODE ; CALL WAIT_ACK ; CALL DATAINWRITEMODE ; CALL GO_ADRESA0 ; CALL DATAINREADMODE ; CALL WAIT_ACK ; CALL DATAINWRITEMODE ;------------------------------------------- BSF PORTB,1 CALL DELAYP BSF PORTB,2 ;STOP CONDITION CALL DELAYP CALL DELAYP CALL START_CONDITION ;### REPEATED START CALL DEVICE_ADRESS_BYTE BSF PORTB,1 ; RW BITE = READ BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP CALL DATAINREADMODE CALL WAIT_ACK BSF PORTB,2 ;MSB DATA BITE ---------------------- READ READ READ READ CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,7 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,6 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,5 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,4 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,3 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,2 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,1 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BSECUNDE,0 ;LSB DATA BITE READ BCF PORTB,2 CALL DELAYP CALL DATAINWRITEMODE BCF PORTB,1 ;ACK BITE BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP CALL DATAINREADMODE BSF PORTB,2 ;MSB DATA BITE ---------------------- READ READ READ READ CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,7 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,6 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,5 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,4 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,3 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,2 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,1 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BMINUTE,0 ;LSB DATA BITE READ BCF PORTB,2 CALL DELAYP CALL DATAINWRITEMODE BCF PORTB,1 ;ACK BITE BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP CALL DATAINREADMODE BSF PORTB,2 ;MSB DATA BITE ---------------------- READ READ READ READ CALL DELAYP BTFSC PORTB,1 BSF BORE,7 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,6 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,5 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,4 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,3 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,2 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,1 BCF PORTB,2 CALL DELAYP BSF PORTB,2 CALL DELAYP BTFSC PORTB,1 BSF BORE,0 ;LSB DATA BITE READ BCF PORTB,2 CALL DELAYP ;ENDRESET CALL DATAINWRITEMODE BSF PORTB,1 ;ACK BITE BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BSF PORTB,2 ;STOP CALL DELAYP BSF PORTB,1 CALL DELAYP ENDRTC RETURN ;--------------------------------------------------------------------------------------------------------- ;################################### PROCEDURI I2C ##################### ;--------------------------------------------------------------------------------------------------------- ;PROCEDURA GO ADRESA0 GO_ADRESA0 MOVLW .7 MOVWF COUNT1 XXFFA BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP DECFSZ COUNT1 GOTO XXFFA BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP RETURN ;PROCEDURA BIT DE SCRIERE BIT_DE_SCRIERE BCF PORTB,1 ; RW BITE = WRITE (WRITE POINTER) BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP RETURN ;PROCEDURA WAIT ACK WAIT_ACK BSF PORTB,2 ;ACK CK PULSE ACK_WAIT1 BTFSC PORTB,1 GOTO ACK_WAIT1 BCF PORTB,2 CALL DELAYP RETURN ;PROCEDURA DATA IN READ MODE###############3 DATAINREADMODE ; BCF STATUS, RP1 BSF STATUS, RP0 ;Select Bank1 BSF TRISB,1 ; DATA IN READ MODE BCF STATUS, RP0 ;Select Bank0 ; BCF STATUS, RP1 RETURN ;PROCEDURA DATA IN WRITE MODE DATAINWRITEMODE ; BCF STATUS, RP1 BSF STATUS, RP0 ;Sel Bank1 BCF TRISB,1 ; DATA IN WRITE MODE BCF STATUS, RP0 ;Sel Bank0 ; BCF STATUS, RP1 RETURN ;PROCEDURA START CONDITION ############ START_CONDITION BCF PORTB,1 CALL DELAYP BCF PORTB,2 ;START CONDITION CALL DELAYP RETURN ;PROCEDURA DEVICE ADRESS BYTE ####### DEVICE_ADRESS_BYTE BSF PORTB,1 ;MSB DEVICE ADRESS BITE BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BSF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP BCF PORTB,1 ;LSB DEVICE ADRESS BITE BSF PORTB,2 CALL DELAYP BCF PORTB,2 BCF PORTB,1 CALL DELAYP RETURN end