pic16f628a + 74hc165

hola gente alguien me puede decir por que no me funciona este codigo?
me estube quemando la cabeza todo el dia y no logre hacerlo funcionar, les agradeceria si alguien me puede tirar una mano.
dejo como archivo adjunto el esquematico y el codigo del pic.

'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 01/02/2008 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
include "bs2defs.bas"

'define OSC 4

@ DEVICE pic16f627a, INTRC_OSC_NOCLKOUT 'xt_osc'Reloj interno solo
@ DEVICE pic16f627a, WDT_OFF ' Watchdog Timer desconectado
@ DEVICE pic16f627a, PWRT_OFF ' Power-On Timer conectado
@ DEVICE pic16f627a, BOD_ON ' Brown-Out Detect conectado
@ DEVICE pic16f627a, MCLR_OFF ' Master Clear Externo desconectado
@ DEVICE pic16f627a, LVP_OFF ' Low-Voltage Programming desconectado
@ DEVICE pic16f627a, CPD_OFF ' Data Memory Code Protect desconectado
'@ DEVICE pic16f628, _OFF '

'****************************** VARIABLES **************************************
D_in var portb.0 ' desplazam. datos (74x165.7)
Clock var portb.3 ' reloj (74x165.2)
Load var portb.4 ' carga de entrada (74x165.1)
switches VAR Byte ' interruptores de entrada

'******************************* LCD *******************************************
'los datos de los cables que detallo son de izquierda a derecha empezando
'por negativo positivo
' 1 - masa
' 2 - positivo 5VCC
' 3 - preset
' 4 - porta.0
' 5 - porta.2
' 6 - porta.1
' 7, 8 y 9 en el aire
' 10 - portb.0
' 11 - portb.1
' 12 - portb.2
' 13 - portb.3

' Define LCD registers and bits
Define LCD_DREG PORTA 'PORTB 'LCD data port
Define LCD_DBIT 0
Define LCD_RSREG PORTA 'LCD register select port
Define LCD_RSBIT 7
Define LCD_EREG PORTA 'LCD enabled port
Define LCD_EBIT 6
Define LCD_BITS 4 ' Aquí indicamos que trabajamos con 4 bits en vez de 8
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50

CMCON = 7

Pause 100 ' Wait for LCD to start up

inicio:
Lcdout $FE, 1 ' Clear LCD screen
PAUSE 10
LCDOUT $FE,1,"Placa escuela"
lcdout $FE,$C0,"Iniciada"
pause 100

' -------------------------------------------------------------------------
Inicializar:
HIGH Load ' hace salida en estado alto
' -------------------------------------------------------------------------
Principal:
goto leer_pulsadores ' lee 8-pos. del dip switch
'gosub escribir
PAUSE 100
GOTO Principal ' repite
END
' -------------------------------------------------------------------------
leer_pulsadores:
PULSOUT Load,3 ' toma valores interruptores
SHIFTIN D_in,Clock,MSBPre,[B0] ' desplaza valores

escribir:
Lcdout $FE, 1 ' Clear LCD screen
PAUSE 10
LCDOUT $FE,1,"Placa escuela"
lcdout $FE,$C0,#B0
pause 10
goto leer_pulsadores

un abrazo y gracias!
 

Adjuntos

  • placa_208.rar
    32.6 KB · Visitas: 73
hola antes que nada explicame que pretendes hacer con ese circuito, conque finalidad es el 74hc165, si te quedan suficientes terminales del pic para controlar esa cantidad de push y creo que la biblioteca que incluyes no corresponde con el diseño, verifica si lo siguiente te ayuda

@ device pic16F628A, INTRC_OSC, wdt_off, pwrt_on, mclr_off, bod_on, lvp_off, protect_on

'Configurando
RBPU VAR OPTION_REG.7
CMCON = 7 'puerto A digital
RBPU = 1 'Sin Resistencias en el puerto B a positivo

Include "Modedefs.bas"



' ** Declare LCDOUT Defines **

DEFINE LCD_DREG PortB ' Set Data to PortB
DEFINE LCD_DBIT 4 ' Set starting Data to Bit4
DEFINE LCD_RSREG PortA ' Set Register Select to PortA
DEFINE LCD_RSBIT 1 ' Set RS line to PORTA.1
DEFINE LCD_EREG PortA ' Set Enable to PortA
DEFINE LCD_EBIT 0 ' Set Enable line to PortA.0
DEFINE LCD_BITS 4 ' Set for 4 bit Bus
DEFINE LCD_LINES 2 ' Set number of lines to 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50

DEFINE OSC 4
con esto a mi me ha funcionado para difrentes proyectos y para no revolver mientras hago un programa nuevo hice un display lcd controlado en forma serial por solo un pin, esto me ahorra tiempo y confusiones mientras estoy haciendo el nuevo proyecto si quieres construir uno te paso toda la información diseño de pcb, firmware y esquematico
 
Atrás
Arriba