Autor Tema: Ayuda con 16F628  (Leído 3475 veces)

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

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Ayuda con 16F628
« en: 09 de Agosto de 2006, 12:50:58 »
Hola a todos . alguien podria ayudarme con lo siguiente.
Hice un programa en PBP pero no me alcanza el 16F84 y lo trate de correr en un 16F628 pero nada ni siquiera lo pude emular en el proteus .
Agradeceria cualquier ayuda.
Gracias.
Saludos.
Jorge.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #1 en: 09 de Agosto de 2006, 13:06:01 »
Hola:

Pega tu codigo para revisarlo, y si puedes tambien el esquema en proteus para probarlo.

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Re: Ayuda con 16F628
« Respuesta #2 en: 09 de Agosto de 2006, 13:18:35 »
Gracias por tu pronta respuesta , Lord
Esto es lo que quiero correr en el 16F628 que funciona bien en el 16F84.
Estan definidas para cuatro modos pero solo esta el programa para modo 1.
El programa lo que hace es seleccionar unidades , decenas , centenas y unidad de mil (4 digitos) Ej 0386 milisegundos , esperar este tiempo y activar una salida.

'MODO 1 EN mS 9999
               
               
               
    'DEFINICION DE PINES
    'PORTB.4 = SALIDA SONORA BEEP
    'PORTB.5 = DIGITO
    'PORTB.6 = POSICION U, D , C ,UM.  MODO MODO1 , ...  MODO4.
    'PORTB.7 = START
    'PORTB.2 = ENTRADA
    'PORTA.0-4 = LCD
    'PORTB.3 = LCD
               
               
                define LCD_BITS 4
                define LCD_LINES 2
                U VAR BYTE   ;unidad modo 1
                D VAR BYTE  ;decena 1
                C VAR BYTE  ;centena 1
                UM VAR BYTE ; unidad de mil 1 9999 ms.total 10.000 ms  = 10 seg.
                co VAR  BYTE ;  variable selecciona  numero , unid dec cent um .
                cur VAR BYTE 'VARIABLE SELECCIONA MODO1.
                ST var byte
                mode var byte
                t1 var word
                w0 var word
            U = 0  :  D = 0 : c = 0 : UM = 0
            co = 0 : cur = 0
            PAUSE 500
            lcdout $fe,1,"Melectro" , $fe,$c0 ," 2006 "
            PAUSE 1500
             Lcdout $fe, 1 , " Modo 1 "
'lcdinit:    Lcdout $fe, 1 , "Seleccio", $fe,$c0  ,"ne Modo"
            pause 1000
            if portb.6 = 0 then  ; SELECCIONA MODO
            select case mode
            mode = mode + 1
            if  mode > 4 then mode = 1
           
            case 1 call modo1
            case 2 call modo2
            case 3 call modo3
            case 4 call modo4
            end select
            endif
           
           
            'if portb.4 = 1 then lcdinit
                             

;        ****************** MODO 1 ***************************
                    'MODO 1 EN mS 9999
modo1:
curs:           cur = cur + 1
                if cur > 4 then cur = 1
                'lcdout $fe,1,"cur =  ",#cur
                ;pause 500
                if cur = 1 then call inicio_u
                if cur = 2 then call inicio_d
                if cur = 3 then call inicio_c
                if cur = 4 then call inicio_um           
                goto  curs
                return
               
INICIO_U: 
Lcdout $fe,1,"M1 Unid",$fe,$c0,#uM,$fe,$c1,#C,$fe,$c2,#D,$fe,$c3,#U," MS"
            pause 250
            if portb.7 = 0 then call start
            if portb.6 = 0 then call curs
            IF PORTB.5 = 0 AND  cur = 1 THEN
                                     
            'Pause 250       
            U = U + 1
            IF U > 9 THEN U = 0
            endif           
            GOTO INICIO_U     
            RETURN
           
            INICIO_D: 
Lcdout $fe,1,"Dec",$fe,$c0,#uM,$fe,$c1,#C,$fe,$c2,#D,$fe,$c3,#U," MS"
            pause 250
            if portb.7 = 0 then call start
            if portb.6 = 0 then call curs
            IF PORTB.5 = 0 AND  cur = 2 THEN
            ;call start
            'Pause 250       
            D = D + 1
            IF D > 9 THEN D = 0
            endif           
            GOTO INICIO_D     
            RETURN
           
            INICIO_C: 
Lcdout $fe,1,"cen",$fe,$c0,#uM,$fe,$c1,#C,$fe,$c2,#D,$fe,$c3,#U," MS"
            pause 250
            if portb.7 = 0 then call start
            if portb.6 = 0 then call curs
            IF PORTB.5 = 0 AND  cur = 3 THEN
            ;call start
            'Pause 250       
            C = C + 1
            IF C > 9 THEN C = 0
            endif           
            GOTO INICIO_C     
            RETURN
           
            INICIO_UM: 
Lcdout $fe,1,"Umil",$fe,$c0,#uM,$fe,$c1,#C,$fe,$c2,#D,$fe,$c3,#U," MS"
            pause 250
            if portb.7 = 0 then call start
            if portb.6 = 0 then call curs
            IF PORTB.5 = 0 AND  cur = 4 THEN
           
            'Pause 250       
            Um = Um + 1
            IF Um > 9 THEN Um = 0
            endif           
            GOTO INICIO_Um     
            RETURN
           
           
start:      'pause 500 
            lcdout $fe,1,"  ",#UM,#C,#D,#U ,"   MS"
            pause 100
            pulsin portb.2,0,w0
            if w0 <> 0 then disparo
           
            goto start
                       
                       
disparo:    low portb.4
            T1 = (UM*1000+c*100+d*10+u)
            'lcdout $fe,1," ", #T1 , " ms"
            pause  T1
            high portb.4
            pause 100
            low portb.4
           
            'pause 1000
            'low portb.4
            return
           

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #3 en: 09 de Agosto de 2006, 14:10:10 »
Hola:

Pues no le veo el error, lo que pensaba era que de pronto puedas estar usando el puerto A, y eso si cambia en el 628 xq tiene comparadaores y deberias apagarlos con CMCON=7, pero veo que no es el caso, programaste el micro con el Hex que compilaste para el 84?, de ser asi recompilalo para el 628. Si siques con problemas y si puedes subir el esquematico para simularlo en proteus seria mas facil para revisar el codigo y simular para hacerlo funcionar.

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Re: Ayuda con 16F628
« Respuesta #4 en: 09 de Agosto de 2006, 15:46:24 »
Hola Lord , si el hex corresponde al 628 creo que al usar el port a para comandar el lcd puede que ahi este el problema.
De todas maneras sigo con problemas porque quise compilar el programa final para el 628 y no me queda espacio me resulta chico.Hay otro micro compatible con el f84 de 4k?
En otro mensaje subo el circuito par simulacion de proteus.
Saludos

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #5 en: 09 de Agosto de 2006, 15:54:55 »
Hola:

Te puede servir uno mas avanzado como es el 16F648A. con ese tienes de sobra.
« Última modificación: 09 de Agosto de 2006, 16:05:24 por LordLafebre »

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #6 en: 09 de Agosto de 2006, 15:58:58 »
Hola:

Mira, estas son las caracteristicas:

Program Memory Type Standard Flash
Program Memory Size (Kbytes) 7
RAM (bytes) 256
Data EEPROM (bytes) 256

http://www.microchip.com/stellent/idcplgidcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en010212

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Re: Ayuda con 16F628
« Respuesta #7 en: 09 de Agosto de 2006, 16:27:42 »
Hola Lord, gracias por tu sugerencia , pero en mi version de microcode studio no lo tengo , es la 2.3 , se puede editar con otra version u otro editor.
Podrias chequear el cadigo y sugerirme algo como para optimizarlo , ten presente que uso lo mismo repetida 4 veces con un pequeño cambio a la salida.
Gracias.
 

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #8 en: 09 de Agosto de 2006, 16:32:52 »
Hola:

Si quieres te lo puedo compilar para el 648a y te envio el hex para que lo pruebes.
« Última modificación: 09 de Agosto de 2006, 16:34:25 por LordLafebre »

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #9 en: 09 de Agosto de 2006, 16:38:28 »
Hola, ahora que veo y compilo lo poco que esta del codigo, me lanza errores, te faltan los dos puntos luego del case:

            case 1: call modo1
            case 2: call modo2
            case 3: call modo3
            case 4: call modo4

teendria que quedarte algo como eso, si te animas al 648A, enviame el .bas para dartelo compilando y te paso el Hex.

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Re: Ayuda con 16F628
« Respuesta #10 en: 09 de Agosto de 2006, 17:49:52 »
Gracias Lord por tu ofrecimiento , pero ya actualise mi soft.
pero me tira al compilar el siguiente errror:
Warn AVERIF4.ASM 1121 : [102] CODE CROSSES BOUNDARY @800h
alguna sugerencia ??????
Gracias
Saludos
Jorge

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #11 en: 09 de Agosto de 2006, 18:24:56 »
Hola,

Eso te sale al compilar con el 648A? si mal no recuerdo ese error es porque exediste el limite de memoria del dispositivo.

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Re: Ayuda con 16F628
« Respuesta #12 en: 09 de Agosto de 2006, 18:27:31 »
Hopsssssss
Estoy en un problema.
Sabes donde puedo conseguir el manual del MCStudio con los codigos de error????
Gracias.


Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda con 16F628
« Respuesta #13 en: 09 de Agosto de 2006, 18:35:48 »
Hola:

Pues lo siento, no lo se, y en la ayuda del MCS no lo encontre... que pic estas utilizando?

Desconectado melectro

  • PIC10
  • *
  • Mensajes: 21
Re: Ayuda con 16F628
« Respuesta #14 en: 09 de Agosto de 2006, 19:33:25 »
Hola , cambie al 16F648.
Estuve haciendo algunas pruebas y el error que te mencione antes no es de que le falta espacio ,creo que tiene que ver con alguna saignacion del pic.
De todas maneras estoy trabajando en el programa para optimizarlo y poder usar un 628 ,a ver que sale.
Saludos.