Turnero 2 Digitos
;;; Programa elaborado y comprobado por Cesar Alvarez;
; Guarda la informacion en la EEPROM Interna del PIC
; Programa para fabricar un turnero de dos digitos Contando de 00 a 99;
; Con pulsador para incrementar;
; pulsador para buzzer o speaker;
; pulsador para Reset;
; y un pulsador extra para decrementar el contador;
; Le coloque Un display pequeno de 7segmentos para que el operario sepa el numero ;de turno actual;
; display grande 4 pulgadas (2digitos) 7 segmentos para el publico;
; Entradas de pulsadores RA0,RA1,RA2,RA,3;
; Salida para decoder 7 segmentos para anodo Comun M 7447, RB0.RB1,RB2,RB3;
; Puesto que estoy conectando el circuito de operario con el circuito de control con ;Cable para RED ( 8 Hilos)
; Saco solamente una senal paramultiplexar los Displays, Con dos ttransistotres PNP. La entrada ala base del primer transistor va desde el PORT RB4
; a travez de una resistencia de 10K, la salida del colector del primer transistor va al ANODO ;del primer Display ( unidades) y a su vez a travez de;
; una resistencia de 330 oms va a la base del segundo NPN y la salida por colector de ;este transisto va a el NODO del segundoDisplay (decenas)
; Por lo tanto lios transistores estan invirtiendo las senales de tal forma que solo un ;display estara iluminando cada vez;
; Pero a la adecuada velocidad de multiplecsacion veremos ambos display iluminados ;al mismo tiempo;
; La salida por RB5 va a un speaker via transistor NPN
; La senales de salida de el control al disply de publico so;;
;; 12 Volts, Buzzer, Anodo, Gnd, RB0,RB1, RB2, RB3,
; Por esta razon multiplexo los displays con solo una senal ( ANODO)
; Se utiliza la libreria de retardos de la editorial RA_MA curso para PIC 16F84
;;;;;; Si desea mayor informacion comuiquese a tecnicesar2@gmail.com
;;;;;;; PERFECTO PERFECTO INCREMENTA Y DECREMENTA
LIST P=16F628A
INCLUDE
__CONFIG 2118
CBLOCK 0x20
ENDC
CBLOCKContador
EEPROM_GuardaINTCON
DIR_EE
DAT_EE
Unidades
Decenas
Frecuencia_1
Frecuencia_2
Frecuencia_3
Otra
ENDC
;****************************
#DEFINE Buzzer PORTA,3
#DEFINE Counter PORTA,1
#DEFINE Reset PORTA,2
#DEFINE Count_Down PORTA,0
;***************************
ORG 0x00
GOTO Inicio
Inicio
MOVLW 0x07
MOVWF CMCON
BSF STATUS,RP0
MOVLW B'00000000'
MOVWF PORTB
BSFBuzzer
BSF Counter
BSF Reset
BSF Count_Down
BCF STATUS,RP0
CLRF PORTA
MOVLW .0
MOVWF DIR_EE
CALL Lee_EEPROM
MOVF DAT_EE,W
MOVWF Unidades
MOVLW .1
MOVWF DIR_EE
CAll Lee_EEPROM
MOVF DAT_EE,W
MOVWF Decenas
MOVLW .200
MOVWF Frecuencia_1
MOVLW .200
MOVWF Frecuencia_2
MOVLW .5
MOVWF Frecuencia_3
MOVLW .220
MOVWF Otra
BSF PORTB,5 ; Alto para que en inicio speaker nosuene Usa TR A 733
;****************************************
Principal
MOVF Unidades,W
CALL Tabla_Unidades
MOVWF PORTB
CALL Retardo_10ms
MOVF Decenas,W
CALL Tabla_Decenas
MOVWF PORTB
CALL Retardo_10ms
UNO_CERO
BTFSS Reset
GOTO UNO_A
GOTO Borra
UNO_A
BTFSS Counter
GOTO UNO_B
GOTO INCREMENTAR
UNO_B
BTFSS Buzzer
GOTO UNO_C
GOTO Suena
UNO_C
BTFSS Count_Down
GOTO PrincipalGOTO DECREMENTAR
;***************************************
DECREMENTAR
CALL Retardo_10ms
BTFSS Count_Down
GOTO Principal
BTFSC Count_Down
GOTO $-1
MOVF Unidades,W
SUBLW .0
BTFSS STATUS,Z
GOTO RESTE_1
MOVF Unidades,W
MOVWF DAT_EE
MOVLW .0
MOVWF DIR_EE
CALL Escribe_EEPROM
MOVF DAT_EE,W
MOVWF Unidades
MOVF Decenas,W
SUBLW .0
BTFSS STATUS,Z
GOTO RESTE_2
GOTO CERO_CERO
RESTE_2DECF Decenas,F
MOVF Decenas,W
SUBLW .0
BTFSS STATUS,Z
GOTO Grava_Decenas
GOTO Grava_Decenas
;************************
CERO_CERO
MOVLw .9
MOVWF Decenas
MOVF Decenas,W
MOVWF DAT_EE
MOVLW .1
MOVWF DIR_EE
CALL Escribe_EEPROM
MOVF DAT_EE,W
MOVWF Decenas
MOVLW .9
MOVWF Unidades
MOVF Unidades,W
MOVF Unidades,W
MOVWF DAT_EE
MOVLW .0
MOVWF DIR_EE
CALL Escribe_EEPROM
MOVF...
Regístrate para leer el documento completo.