Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LIST p=16f88
- #include <p16F88.inc>
- errorlevel -302
- __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
- __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
- #define BANK0 BCF STATUS,RP0
- #define BANK1 BSF STATUS,RP0
- #define SCL PORTB,0
- #define SDA PORTB,1
- #define CARRY STATUS,0
- #define SW1 PORTB, 6
- #define SW2 PORTB, 7
- #define SW3 PORTA, 7
- CBLOCK 0x20
- vACK_NACK
- vCOMPTEUR
- vCOMPTEUR_BYTE
- vADDR_CHIP
- vCONFIG
- vCOMMAND
- vVOLTAGE_HIGH
- vVOLTAGE_LOW
- vECHELLE
- vRETOUR
- vSELECT
- vACCEPTE
- vCHECKSUM
- ENDC
- MOVLF MACRO X, Y
- MOVLW X
- MOVWF Y
- ENDM
- SCAN MACRO
- MOVF vVOLTAGE_HIGH, W
- ADDLW -0xE0
- BTFSS STATUS, Z
- GOTO SCALE
- INCF vCONFIG, F
- CALL vSTART_PCF8591P
- ENDM
- ORG 0x000
- CLRF PCLATH
- GOTO MAIN
- ORG 0x004
- MAIN
- CALL INIT_PIC
- CALL INIT_RS_232
- MOVLF 0x90, vADDR_CHIP
- MOVLF 0x53, vCOMMAND
- LOOP_MAIN
- CALL SCAN_SCALE
- CALL CHECKSUM
- CALL SEND_FRAME
- CALL DELAI_100_MS
- GOTO LOOP_MAIN
- INIT_PIC
- BCF STATUS, RP1
- BANK1
- BCF INTCON, GIE
- CLRF ANSEL
- MOVLF b'01111000', OSCCON
- MOVLF b'11111111', TRISA
- MOVLF b'11100110', TRISB
- BANK0
- RETURN
- TX_232
- BTFSS PIR1,TXIF
- GOTO TX_232
- MOVWF TXREG
- RETURN
- INIT_RS_232
- MOVLF b'10010000', RCSTA
- BANK1
- MOVLF b'00100100', TXSTA
- MOVLF .8, SPBRG
- BANK0
- RETURN
- SDA0
- BCF SDA
- BANK1
- BCF TRISB,1
- BANK0
- RETURN
- SDA1
- BANK1
- BSF TRISB,1
- BANK0
- RETURN
- SCL0
- BCF SCL
- BANK1
- BCF TRISB,0
- BANK0
- RETURN
- SCL1
- BANK1
- BSF TRISB,0
- BANK0
- RETURN
- START_BIT_I2C
- CALL SDA1
- NOP
- CALL SCL1
- CALL DELAI_5_US
- CALL SDA0
- CALL DELAI_5_US
- GOTO SCL0
- STOP_BIT_I2C
- CALL SDA0
- NOP
- CALL SCL1
- CALL DELAI_5_US
- GOTO SDA1
- LIRE_1_BIT_I2C
- CALL SDA1
- NOP
- CALL SCL1
- CALL DELAI_5_US
- BCF CARRY
- BTFSC SDA
- BSF CARRY
- GOTO SCL0
- ECRIRE_1_BIT_I2C
- BTFSC CARRY
- CALL SDA1
- BTFSS CARRY
- CALL SDA0
- CALL DELAI_5_US
- CALL SCL1
- CALL DELAI_5_US
- CALL SCL0
- GOTO DELAI_5_US
- LIRE_8_BITS_I2C
- MOVLF 0x08, vCOMPTEUR_BYTE
- LOOP_LIRE_8_BITS_I2C
- CALL LIRE_1_BIT_I2C
- RLF vVOLTAGE_HIGH, F
- DECFSZ vCOMPTEUR_BYTE, F
- GOTO LOOP_LIRE_8_BITS_I2C
- RRF vACK_NACK, F
- GOTO ECRIRE_1_BIT_I2C
- ECRIRE_8_BITS_I2C
- MOVLF 0x08, vCOMPTEUR_BYTE
- LOOP_ECRIRE_8_BITS_I2C
- BSF CARRY
- BTFSS INDF, 7
- BCF CARRY
- RLF INDF, F
- CALL ECRIRE_1_BIT_I2C
- DECFSZ vCOMPTEUR_BYTE, F
- GOTO LOOP_ECRIRE_8_BITS_I2C
- CALL LIRE_1_BIT_I2C
- RLF vACK_NACK, F
- RETURN
- SEND_FRAME
- MOVLF 0x25, FSR
- MOVLF 0x08, vCOMPTEUR
- LOOP_SEND_FRAME
- MOVF INDF, W
- CALL TX_232
- INCF FSR, F
- DECFSZ vCOMPTEUR, F
- GOTO LOOP_SEND_FRAME
- RETURN
- vSTART_PCF8591P
- CLRF vACK_NACK
- MOVLF 0x23, FSR
- MOVLF '1', vRETOUR
- MOVWF vSELECT
- MOVWF vACCEPTE
- CALL START_BIT_I2C
- CALL ECRIRE_8_BITS_I2C
- INCF FSR, F
- CALL ECRIRE_8_BITS_I2C
- CALL DELAI_5_MS
- CALL LIRE_8_BITS_I2C
- GOTO STOP_BIT_I2C
- SCAN_SCALE
- MOVLF '0', vECHELLE
- CLRF vCONFIG
- CALL vSTART_PCF8591P
- SCAN
- SCAN
- SCALE
- MOVF vCONFIG, W
- ADDWF vECHELLE, F
- CONV_ASCII
- MOVF vVOLTAGE_HIGH, W
- CALL CONVERT
- MOVWF vVOLTAGE_LOW
- SWAPF vVOLTAGE_HIGH, W
- CALL CONVERT
- MOVWF vVOLTAGE_HIGH
- RETURN
- CONVERT
- ANDLW 0x0F
- ADDLW -.10
- BTFSC STATUS, Z
- ADDLW 'A'-'0'
- ADDLW '0'+.10
- RETURN
- CHECKSUM
- MOVLF 0x06, vCOMPTEUR
- MOVLF 0x53, vCHECKSUM
- MOVLF 0x26, FSR
- LOOP_CHECKSUM
- MOVF INDF, W
- ADDWF vCHECKSUM, F
- INCF FSR, F
- DECFSZ vCOMPTEUR, F
- GOTO LOOP_CHECKSUM
- COMF vCHECKSUM, F
- INCF vCHECKSUM, F
- RETURN
- DELAI_5_US
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- RETURN
- DELAI_5_MS
- MOVLF .208, vCOMPTEUR
- LOOP_DELAI_5_MS
- NOP
- CALL DELAI_5_US
- NOP
- CALL DELAI_5_US
- NOP
- CALL DELAI_5_US
- NOP
- CALL DELAI_5_US
- NOP
- DECFSZ vCOMPTEUR, F
- GOTO LOOP_DELAI_5_MS
- CALL DELAI_5_US
- RETURN
- DELAI_100_MS
- MOVLF .20, vCOMPTEUR_BYTE
- MOVLF '1', vRETOUR
- MOVWF vSELECT
- MOVWF vACCEPTE
- LOOP_DELAI_100_MS
- CALL DELAI_5_MS
- SW1ON
- BTFSC SW1
- GOTO SW2ON
- MOVLF '0', vRETOUR
- GOTO SW1ON
- SW2ON
- BTFSC SW2
- GOTO SW3ON
- MOVLF '0', vSELECT
- GOTO SW2ON
- SW3ON
- BTFSC SW3
- GOTO SW3OFF
- MOVLF '0', vACCEPTE
- GOTO SW3ON
- SW3OFF
- DECFSZ vCOMPTEUR_BYTE, F
- GOTO LOOP_DELAI_100_MS
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement