Autor Tema: Puerto A del 16F628  (Leído 3052 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado WALTER ALEJANDRO

  • PIC12
  • **
  • Mensajes: 64
Puerto A del 16F628
« 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                                              
« Última modificación: 18 de Abril de 2015, 00:55:21 por un Moderador »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Puerto A del 16F628
« Respuesta #1 en: 17 de Abril de 2015, 12:51:21 »
Hola WALTER ALEJANDRO, es correcto lo de 16F28 ?

Un saludo.

Atte. CARLOS.

« Última modificación: 18 de Abril de 2015, 00:55:34 por Chaly29 »
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado WALTER ALEJANDRO

  • PIC12
  • **
  • Mensajes: 64
Re: Puerto A del 16F628
« Respuesta #2 en: 17 de Abril de 2015, 15:49:44 »
aclaracion, 16f628
« Última modificación: 18 de Abril de 2015, 00:55:51 por un Moderador »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Puerto A del 16F628
« Respuesta #3 en: 19 de Abril de 2015, 08:48:35 »
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
« Última modificación: 19 de Abril de 2015, 08:55:00 por dogflu66 »
Saludos desde Granada, España.

Desconectado WALTER ALEJANDRO

  • PIC12
  • **
  • Mensajes: 64
Re: Puerto A del 16F628
« Respuesta #4 en: 19 de Abril de 2015, 19:59:36 »
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: