;05/12/05 07:46p.m.
;capturar la se¤al de un ICL7135 (intersil) de una balanza y transmitirlos a una pc
;09/12/05 03:38p.m. la comunicacion es rs485, y tiene que envial primero un *(asterisco) y luego
;16 caracteres
;el * coloca la impresion al principio de pantalla
list p=16f628
#include p16f628.inc
ERRORLEVEL -302, -307 ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA)
;datos del ICL7135
;El dígito conduce (los pines 12, 17, 18, 19 y 20)
; son una señal que va positiva que dura para 200 pulsos.
;La secuencia de la exploración es D5 (MSD), D4, D3, D2, y D1 (lsd).
; Se exploran los cinco dígitos y esta exploración es continua a menos
; que ocurra un overrange.
;BCD (los pines 13, 14, 15 y 16 ) decimal codificado binario
; B8, B4, B2,y B1 son positivos que las señales que se encienden simultáneamente
;con el funcionamiento óptimo de SelectionFor del valor del conductor signal.
;Component del dígito de la sección análoga, cuidado debe de la lógica
#DEFINE DIG1 PORTB,0 ;CONECTADO A CADA TRANSISTOR QUE ACTIVA CADA DISPLAY
#DEFINE DIG2 PORTB,1
#DEFINE DIG3 PORTB,3
#DEFINE DIG4 PORTB,4
#DEFINE DIG5 PORTB,5
; EL PUERTO A SE CONECTA A LA SALIDA BCD DEL EXITADOR DE DISPLAY
#DEFINE BANDERA1 MARCA,0
#DEFINE BANDERA2 MARCA,1
#DEFINE BANDERA3 MARCA,2
#DEFINE BANDERA4 MARCA,3
#DEFINE BANDERA5 MARCA,4
#DEFINE HABILITA PORTB,7 ;PRA HABILITAR TRANSMISION 485
CBLOCK H'20' ;H'0C'
;Digit Drives (Pins 12, 17, 18, 19 and 20)Each digit drive is a positive going signal
;that lasts for 200 clock pulses. The scan sequence is D5 (MSD), D4 , D3 , D2 , and D1 (LSD).
; All five digits are scanned and this scan is continuous unless an overrange occurs.
;Then all digit drives are blanked from the end of the strobe sequence until the beginning
;of Reference Integrate when D5 will start the scan again. This can give a blinking display
;as a visual indication of overrange.BCD (Pins 13, 14, 15 and 16)The Binary coded Decimal
;bits B8 , B4 , B2 , and B1 are positive logic signals that go on simultaneously with the
; digit driver signal.Component Value SelectionFor optimum performance of the analog section, care must
DATO
NADA
TIEMPO1
TIEMPO2
MARCA
DIGITO1
DIGITO2
DIGITO3
DIGITO4
DIGITO5
ENDC
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_ALL & _BODEN_ON & _LVP_OFF & _MCLRE_OFF
reset org 00h ;el vector de reset es la dirección 00
goto inicio ;se salta al inicio del programa
NOP
NOP
NOP
NOP
NOP
;******************************************************************************
inicio:
CLRF PORTB
CLRF PORTA
CLRF MARCA
INICIO:
MOVLW 0x07
MOVWF CMCON ;PARA EL 16F628, ELIMINO LOS COMPARADORES, TODAS SALIDAS DIGITALES
BSF STATUS,RP0 ;BANCO 1
MOVWF OPTION_REG ; WDT = 7 (WDT rate = 1:128) <--LO COLOQUE EN 6 A WDT
MOVLW B'00111011' ;5 entrada,otras SALIDAS <<<< rb2 es tx de la usart <<<<<<<<<
MOVWF TRISB
MOVLW B'00011111' ;TODAS ENTRADAS
MOVWF TRISA
BCF STATUS,RP0 ;BANCO 0
CALL DEMORA
CALL DEMORA
BSF HABILITA
CALL RETARDO
BCF HABILITA
CALL DEMORA
BSF HABILITA
CALL RETARDO
BCF HABILITA
CALL DEMORA
BSF HABILITA
CALL RETARDO
BCF HABILITA
CALL DEMORA
BSF HABILITA
CALL DEMORA
BCF HABILITA
CALL DEMORA
BSF HABILITA
CALL DEMORA
BCF HABILITA
; GOTO INICIO
;****************************************************************************
COPIAR ;LECTURA DE CADA DIGITO, SEGUN QUE TRANSISTOR ESTE A MASA
MOVLW 0x07
MOVWF CMCON ;PARA EL 16F628, ELIMINO LOS COMPARADORES, TODAS SALIDAS DIGITALES
BSF STATUS,RP0 ;BANCO 1
MOVWF OPTION_REG ; WDT = 7 (WDT rate = 1:128) <--LO COLOQUE EN 6 A WDT
MOVLW B'00111011' ;5 entrada,otras SALIDAS <<<< rb2 es tx de la usart <<<<<<<<<
MOVWF TRISB
MOVLW B'00011111' ;TODAS ENTRADAS
MOVWF TRISA
BCF STATUS,RP0 ;BANCO 0
FALTA_LEER
BTFSC DIG1 ;ES EL DIGITO 1 ?, LEER EL DATO BCD EXITADOR DEL DISPLAY
CALL LEER1
BTFSC DIG2
CALL LEER2
BTFSC DIG3 ;ES EL DIGITO 3 ?, LEER EL DATO BCD EXITADOR DEL DISPLAY
CALL LEER3
BTFSC DIG4
CALL LEER4
BTFSC DIG5 ;ES EL DIGITO 5 ?, LEER EL DATO BCD EXITADOR DEL DISPLAY
CALL LEER5
;Digit Drives (Pins 12, 17, 18, 19 and 20)Each digit drive is a positive going signal
;that lasts for 200 clock pulses. The scan sequence is D5 (MSD), D4 , D3 , D2 , and D1 (LSD).
; All five digits are scanned and this scan is continuous unless an overrange occurs.
;Then all digit drives are blanked from the end of the strobe sequence until the beginning
; of Reference Integrate when D5 will start the scan again. This can give a blinking display
; as a visual indication of overrange.BCD (Pins 13, 14, 15 and 16)The Binary coded Decimal
; bits B8 , B4 , B2 , and B1 are positive logic signals that go on simultaneously with the digit driver signal.
;VERIFICO SI SE LEYERON LOS 5 DISPLAY, PUEDEN ESTAR MULTIPLEXADOS ALREVEZ DE COMO LOS LEO
;O ESTAR DESINCRONIZADOS ENTRE LECTURA Y DISPLAY, ENTONSES ME ASEGURO (PODRIA LEER EL STROBE PIN 26 )
;ASI QUE VERIFICO SI SE MARCARON LAS 5 BANDERAS, SINO LOS MANDO A LEER NUEVAMENTE HASTA CARGAR
;LOS 5 DATOS
;COMO
;#DEFINE BANDERA1 MARCA,0
;#DEFINE BANDERA2 MARCA,1
;#DEFINE BANDERA3 MARCA,2
;#DEFINE BANDERA4 MARCA,3
;#DEFINE BANDERA5 MARCA,4
;SI MARCA = B'00011111'= .31 ESTAN LOS 5 DATOS LEIDOS
MOVF MARCA,W ;VERIFICO SI MARCA=31,
XORLW .31 ;SI ES IGUAL, SALTA A TRANSMITIR, SINO, LEE NUEVAMENTE
BTFSS STATUS,Z
GOTO FALTA_LEER
CALL DEMORA ;ESPERA UN SEGUNDO ANTES DE ACTUALIZAR
CALL DEMORA
CALL DEMORA
BSF HABILITA ;TRANSMISION 485 ADEMAS CONECTO UN LED PARA INDICAR CON PARPADEO LA TX
CALL ESPERA
CALL TRANSMITIR ;ENVIAR LOS 5 VALORES POR RS232
CLRF MARCA ;BORRA TODAS LAS BANDERAS LUEGO DE TRANSMITIR
CALL ESPERA
BCF HABILITA ;FIN TRANSMISION 485
GOTO COPIAR ;INICIO
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LEER1 ;LEO EL VALOR BCD POR EL PUERTO A, SEGUN QUE TRANSISTOR ESTE A MASA,SEGUN PUERTO B
BTFSC BANDERA1
RETURN
CALL RETARDO ;ESTABILIZA LA SALIDA DEL BCD
BTFSS DIG1
RETURN ;ME ASEGURO QUE NO FUE RUIDO....
MOVF PORTA,W
ANDLW B'00001111'
MOVWF DIGITO1
BSF BANDERA1
RETURN
LEER2
BTFSC BANDERA2
RETURN
CALL RETARDO ;ESTABILIZA LA SALIDA DEL BCD
BTFSS DIG2
RETURN ;ME ASEGURO QUE NO FUE RUIDO....
MOVF PORTA,W
ANDLW B'00001111'
MOVWF DIGITO2
BSF BANDERA2
RETURN
LEER3
BTFSC BANDERA3
RETURN
CALL RETARDO ;ESTABILIZA LA SALIDA DEL BCD
BTFSS DIG3
RETURN ;ME ASEGURO QUE NO FUE RUIDO....
MOVF PORTA,W
ANDLW B'00001111'
MOVWF DIGITO3
BSF BANDERA3
RETURN
LEER4
BTFSC BANDERA4
RETURN
CALL RETARDO ;ESTABILIZA LA SALIDA DEL BCD
BTFSS DIG4
RETURN ;ME ASEGURO QUE NO FUE RUIDO....
MOVF PORTA,W
ANDLW B'00001111'
MOVWF DIGITO4
BSF BANDERA4
RETURN
LEER5
BTFSC BANDERA5
RETURN
CALL RETARDO ;ESTABILIZA LA SALIDA DEL BCD
BTFSS DIG5
RETURN ;ME ASEGURO QUE NO FUE RUIDO....
MOVF PORTA,W
ANDLW B'00001111'
MOVWF DIGITO5
BSF BANDERA5
RETURN
;*********************************************************************************************
TEMPORIZADOR
DEMORA ;RETURN
MOVLW .250
MOVWF TIEMPO1
OTRO2
MOVLW .110
MOVWF TIEMPO2
OTRO
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ TIEMPO2,F
GOTO OTRO
DECFSZ TIEMPO1,F
GOTO OTRO2
RETURN
;***********************************************************************
RETARDO ;RETURN
MOVLW .14
MOVWF TIEMPO2
OTRO4
NOP
DECFSZ TIEMPO2,F
GOTO OTRO4
RETURN
;**********************************************************************
ESPERA
CLRF TIEMPO1
DECFSZ TIEMPO1,F
GOTO $-1
DECFSZ TIEMPO1,F
GOTO $-1
RETURN
;**********************************************************************
TRANSMITIR
;=======Set up USART for asynchronous comms
BSF STATUS,RP0 ;Bank1
MOVLW .25 ;9.6(9.615)K @4.0Mhz
MOVWF SPBRG
BCF TXSTA,SYNC ;Clear for Aysynchronous mode
BSF TXSTA,BRGH ;baud rate high speed option
BSF TXSTA,TXEN ;enable transmission
BCF STATUS,RP0 ;Bank0
; BSF RCSTA,CREN ;enable reception
BSF RCSTA,SPEN ;enable serial port
; BSF STATUS,RP0 ;Move to Page 1 to set the Receive
; BSF PIE1,RCIE ;enable the Receive Interrupt
; BCF STATUS,RP0 ;Move back to return in Bank0
;ENVIO EL COMIENZO DE TRANSMISION UNA LETRA *
MOVLW "*" ;el asterisco, coloca los contadores a cero del lcd para empezar
MOVWF TXREG ;y escribir una nueva linea
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
movlw " " ;primer caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
movlw " " ;segundo caracter
MOVWF TXREG ;dos espacios
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
;enviar los 5 datos leidos, y esperar a que termine de transmitir cada dato
MOVLW .48 ;tercer caracter
ADDWF DIGITO1,W ;PASO EL BCD AL VALOR ASCII
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW .48 ;cuarto caracter
ADDWF DIGITO2,W ;PASO EL BCD AL VALOR ASCII
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
movlw "." ;punto decimal , quinto caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW .48 ;sexto caracter
ADDWF DIGITO3,W ;PASO EL BCD AL VALOR ASCII
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW .48 ;septimo caracter
ADDWF DIGITO4,W ;PASO EL BCD AL VALOR ASCII
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW .48 ;octavo caracter
ADDWF DIGITO5,W ;PASO EL BCD AL VALOR ASCII
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
movlw " " ;noveno caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW "K" ;decimo caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
;11 caracter
MOVLW "i" ;INDICO QUE TERMINO DE TX EL ULTIMO NUMERO
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW "l" ;12 caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW "o" ;13 caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW "s" ;14 caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW " " ;15 caracter
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
MOVLW " " ;16 caracteres, final linea superior
MOVWF TXREG
BTFSS PIR1,TXIF ; se coloca en uno al terminar de transmitir
GOTO $-1
CALL ESPERA
CALL ESPERA
RETURN
;********************************************************************
END