Вы находитесь на странице: 1из 5

; ;cdigo para adc de 4 seales anlogas que varian de 0 a 5 voltios y las mando en ASCI I por rs-2332 PROCESSOR 16F887

INCLUDE <P16F887.INC> errorlevel -302 __CONFIG _CONFIG1, _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOR_OFF & _IESO_ON & _FCMEN_ON & _LVP_OFF CBLOCK 0X20 LOOP,LOOP2,NIB1,NIB2,NIB3,TEMP,R0,R1,R2,ACAL,ACAH ACBL,ACBH,ACCL,ACCH,ACDL,ACDH,COUNT CHANN ENDC ORG GOTO CANAL addwf PCL,F retlw b'10010001' ; AN4 retlw b'10010101' ; AN5 retlw b'10011001' ; AN6 retlw b'10011101' ; AN7 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RETARDO MOVWF TOP2 MOVLW MOVWF TOP NOP NOP NOP NOP NOP NOP DECFSZ GOTO DECFSZ GOTO RETURN MULT MOVLW MOVWF CLRF CLRF CLRF CLRF MPLOOP BITS RRF RRF ACDH,F ACDL,F .16 TEMP ACCH ACCL ACBH ACBL ; MULTIPLICACION DE 16 BITS X 16 D'110' LOOP2 LOOP 0x00 INI

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

LOOP2 TOP LOOP TOP2

BTFSC CALL RRF RRF RRF RRF DECFSZ GOTO RETLW SUM MOVF ADDWF BTFSC INCF MOVF ADDWF RETLW B2BCD BANKSEL MOVLW MOVWF CLRF CLRF CLRF LOOP16

STATUS,C SUM ACBH,F ACBL,F ACCH,F ACCL,F TEMP,F MPLOOP 0 ;SUMA DOBLE PRESICION ACAL,W ACBL,F STATUS,C ACBH,F ACAH,W ACBH,F 0 ;CONVERSION A BCD FSR .24 COUNT R0 R1 R2 ACCL ACCH ACBL R2,F R1,F R0,F

RLF RLF RLF RLF RLF RLF DECFSZ COUNT,F GOTO ADJDEC RETLW 0 ADJDEC MOVLW MOVWF CALL MOVLW MOVWF CALL MOVLW MOVWF CALL GOTO ADJBCD MOVLW ADDWF MOVWF BTFSC MOVWF MOVLW ADDWF MOVWF BTFSC 03 INDF,W TEMP TEMP,3 00 30 00,W TEMP TEMP,7 R2 FSR ADJBCD R1 FSR ADJBCD R0 FSR ADJBCD LOOP16

MOVWF RETLW AD

00 00

;BANKSEL ADCON1 ;CONVERSION A/D ;MOVLW B'10010010' ;MOVWF ADCON1 BANKSEL ADCON0 movf CHANN,W call CANAL movwf ADCON0 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Esperamos 1 a 2ms aprox. movlw .8 movwf LOOP movlw .200 movwf LOOP2 decfsz LOOP2,F goto $ - 1 decfsz LOOP,F goto $ - 5 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BSF ADCON0,GO NOP NOP BTFSC ADCON0,GO GOTO $-1 MOVF ADRESH,W MOVWF ACDH BANKSEL ADRESL MOVF ADRESL,W BANKSEL ADRESH MOVWF ACDL MOVLW .232 MOVWF ACAL MOVLW .1 MOVWF ACAH CALL MULT CALL B2BCD SWAPF R0,W ANDLW 0FH MOVWF NIB1 MOVLW 30H ;PASO A ASCII ADDWF NIB1 MOVF R0,W ANDLW 0FH MOVWF NIB2 MOVLW 30H ADDWF NIB2 SWAPF R1,W ANDLW 0FH MOVWF NIB3 MOVLW 30H ADDWF NIB3,F ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ incf CHANN,F ; <<< ### Apunta a cada canal por vez movlw .4 xorwf CHANN,W btfsc STATUS,Z clrf CHANN

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RETURN TX BANKSEL PIR1 MOVF NIB1,0 ESP1 BTFSS GOTO MOVWF MOVLW ESP3 BTFSS GOTO MOVWF MOVF ESP BTFSS GOTO MOVWF MOVF ESP2 BTFSS PIR1,TXIF GOTO ESP2 MOVWF TXREG RETURN INI CLRF MOVLW MOVWF BANKSEL MOVLW N4 MOVWF TRISA MOVWF TRISB MOVLW B'10111111' MOVWF TRISC MOVLW B'00100110' ;VEL TX MOVWF TXSTA ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ movlw b'11111111' ; <<< ### El AN5, 6, 7 estan en el TRISE movwf TRISE BANKSEL ANSEL ; <<< ### banco 3 movlw b'11111111' ; <<< ### Entradas para el ADC movwf ANSEL BANKSEL SPBRG ; <<< ### banco 1 movlw b'00100100' ; <<< ### Al ser envio, se configura TXS TA movwf TXSTA ; <<< ### con 8bit. ; de esperar para poder enviar un nuevo dato. movlw b'10010010' movwf ADCON1 clrf CHANN ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OSCTUNE B'01100110' OSCCON TRISA B'11111111' PIR1,TXIF ESP TXREG NIB3,0 PIR1,TXIF ESP3 TXREG NIB2,0 PIR1,TXIF ESP1 TXREG D'44' ;INICIA Tx

; <<< ### OK, el que sirve solo es RA5/A

MOVLW MOVWF BANKSEL BSF MOVLW MOVWF MOVLW MOVWF CICLO CALL CALL MOVLW ESP4 BTFSS GOTO MOVWF MOVLW ESP5 BTFSS GOTO MOVWF NOP NOP ESP6 BTFSS GOTO MOVLW CALL GOTO END

D'103' SPBRG PIR1 PIR1,TXIF B'10000000' RCSTA B'10010001' ADCON0 AD TX D'13' PIR1,TXIF ESP4 TXREG D'10' PIR1,TXIF ESP5 TXREG

;GENERADOR BAUD ;HAB COM BIT7 EN 1 ;AN4 ;FOSC/32

PIR1,TXIF ESP6 D'250' RETARDO CICLO

Вам также может понравиться