TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: WALTER ALEJANDRO en 17 de Abril de 2015, 11:29:40
-
hola señores. no consigo manejar un lcd con el puerto a del 16f28 , a pesar de que en el simulador funciona. estoy usando PIC SIMULATOR IDE. Aca el codigo, desde ya gracias x su ayuda
Define CONF_WORD = 0x3f50
AllDigital
PORTA = 0x00
CMCON = 0x07
TRISA = %00110000
CCP1CON = 0x00
TRISB = 0xff
OPTION.7 = 0 'pullup
'Define SIMULATION_WAITMS_VALUE = 1
Define CLOCK_FREQUENCY = 4
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Define LCD_CHARS = 16
Define LCD_LINES = 2 ''
Define LCD_BITS = 4
Define LCD_DREG = PORTA
Define LCD_DBIT = 0
Define LCD_RSREG = PORTA
Define LCD_RSBIT = 7
Define LCD_EREG = PORTA
Define LCD_EBIT = 6
Define LCD_DATAUS = 100
Define LCD_COMMANDUS = 2000
Define LCD_INITMS = 100
Lcdinit 0
WaitMs 500
inicio:
Lcdcmdout LcdLine1Home
Lcdout " PORQUE "
Lcdcmdout LcdLine2Home
Lcdout "NO ANDAAAA "
WaitMs 1000
Lcdcmdout LcdClear
Goto inicio
End
-
Hola WALTER ALEJANDRO, es correcto lo de 16F28 ?
Un saludo.
Atte. CARLOS.
-
aclaracion, 16f628
-
Este programita funciona en la placa PicEBasic:
He utilizado el Pic16F628A y por lo tanto el PSI está configurado para el 16F628A y el programador también para el 16F628A.
El Pic16F628A es una versión mejorada del Pic16F628.
Define CONFIG = 0x3f50
Define CLOCK_FREQUENCY = 4
'****************************************************************************
'Configuración de la placa entrenadora Pic EBasic **************************************
'By COS, 04/2015, Pic Simulator IDE v7.37 ******************************************
'Pic16F628A y LCD con linea de datos a 4 Bit sin Bit R/W *******************************
'****************************************************************************
Symbol ledv = RB0 'Etiqueta al led verde
Symbol leda = RA7 'Etiqueta al led amarillo
Symbol blcd = RB3 'Etiqueta al backlight del lcd
'Puerto del LCD ----------------------------------------------------------
Define LCD_BITS = 4 'Bus de datos del lcd, a 4bit
Define LCD_DREG = PORTA 'Bus de datos, puerto A
Define LCD_DBIT = 0 'Bus datos 4, bit menos significativos del puerto
Define LCD_RSREG = PORTB 'Bit de control RS, puerto B
Define LCD_RSBIT = 7 'RB7 como RS
Define LCD_EREG = PORTB 'Bit de control E, puerto B
Define LCD_EBIT = 6 'RB6 como E
Define LCD_COMMANDUS = 2000 'Espera despues de cada comando
Define LCD_DATAUS = 100 'Espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 50 'Espera inicialización del Display
'Configuración Placa Pic EBasic -----------
AllDigital
CMCON = 0x07 'Comparador a off
TRISA = 0x00 'Puerto A como salidas
TRISB = 0x00 'Puerto B como salidas
PORTB.3 = 0 'PWM
TRISA.4 = 1 'Como entrada (RA4, adc)
TRISA.6 = 1 'Como entrada (RA6, tecla S1)
TRISA.5 = 1 'Como entrada (RA5, tecla S2)
TRISB.5 = 0 'Como salida(RB5,Tx RS232)
TRISB.2 = 1 'Como entrada (RB2, Rx RS232)
TRISB.4 = 1 'Como entrada (RHT03 inicio)
PORTB.3 = 0 'PWM
PORTA.7 = 1 'Led amarillo a OFF
PORTB.0 = 0 'Led verde a ON
PORTB.1 = 0 'LED RHT03 a OFF
'-----------------------------------------
Lcdinit
main:
Dim x As Byte
While x = x
Lcdcmdout LcdLine1Home
Lcdout "Ok...."
Toggle RA7
Toggle RB0
WaitMs 500
Wend
End
-
gracias por su colaboracion , logre solucionarlo .Fue un error mio ya que mande la parte baja del puerto a a los bits menos significativos del lcd y deben ir al alto: