Mi pic no cuenta bien el tiempo

ola buenos dias
escribo a ver si alguien me soluciona una duda.
Uso pbp y un pic 16f88 y tengo un problema cuando en pbp pongo

pause 1000 en vez de un segundo me espera derca de un minuto....

aqui dejo el codigo a ver si es por algun error.
uso el oscilador interno del F88

Código:
'****************************************************************
'*  Name    : Semaforo .BAS                                     *
'*  Author  :Ies La Serena 4º ESO A "tecnologia" Grupo A        *
'*  Notice  : Victor Romero Fernandez                           *
'*          : Yostin Garcia Arias                               *
'*  Date    : 21/04/2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :Cruze con 4 Semaforos                              *
'*          :Version altenativa al Circuito con puertas logicas *
'****************************************************************
define osc  4
RA var PORTA.3 'rojo del semaforo A
AA var PORTB.1
VA VAR PORTB.2
RD VAR PORTB.3  ' rojo de los semaforos b y d
AD VAR PORTB.4
VD VAR PORTB.5
RC VAR PORTA.7  ' rojo del semaforo c
AC VAR PORTA.6
VC VAR PORTA.2

TRISA = 0 ' TODO EL PIC COMO SALIDAS
TRISB = 0 

TESTLED:'Prueba que todos los led funcionen
PORTA = %11111111
PORTB = %11111111 
PAUSE 1000
PORTA = %00000000
PORTB = %00000000

loop: 'comineza el programa
COMB1:
Va = 1   'Enciende los led correspondientes
Rd = 1
RC = 1
PAUSE 30000  'Espera el tiempo que le corresponde en milisegundos
PORTA = 0
PORTB = 0

COMB2:
VA = 1
RD = 1
VC = 1
PAUSE 30000
PORTA = 0
PORTB = 0

COMB3:

AA = 1
VA = 1
RD = 1
VC = 1
PAUSE 10000
PORTA = 0
PORTB = 0

COMB4:

RA = 1
RD = 1
VC = 1
PAUSE 20000
PORTA = 0
PORTB = 0

COMB5:

RA = 1
VD = 1
RC = 1
PAUSE 30000
PORTA = 0
PORTB = 0

COMB6:
RA = 1
AD = 1
VD = 1
RC = 1
PAUSE 10000
PORTA = 0
PORTB = 0

GOTO loop 'Vuelve a la etiqueta loop( vuelve a empezar la secuencia)
 
no siempre me cuenta muchusimo.

en el segundo pause el 30000 lo he apagado tras mas de 40 min sin que cambiase
no se que puede estar pasando. probé tambien con un 16f628a y me paso lo mismo
 
hola ,,sacale un cero al 1000 o fijate de configirar bien el prescalar y el oscilador interno a maxima velocidad
ahi no se ve que lo configuraste,quiizas esta a minima y te cuenta lentoooooo,saludos




no siempre me cuenta muchusimo. (((hace esto desactiiva los comparadores y con figura bien el osc interno a 4 mhz))
y te va a andar bien saludos
 
pues para definir el clock usa esta instruccion

DEFINE OSC 4 frecuencia de relog a 4Mhz
CMCON = 0x07 comparadores a off
ANSEL = 0x00 pines I/O digitales no analogicos
 
ya cevolllin me gano ,,pero creo que el 16f88 el osc maximo es de 8 mhz proba cual de los dos te sirva mas
4 o 8 ,,ya ahi te va a tener que funcionar ,cualquier cosa avisa ,,saludos
 
pues no me funciona creo que tengo un problema en los fuses a ver si estan bien.

wtd = 1
mclre = 0
code protect rom = 0
oscillator = INTRC_IO
debuj = 0
lvp = 0
swich over mode = 0
pwrte = 0
boden = 1
code protect epp = 0
ccpmx = ccp1 rb0
flash write protect = 0
fail safe = 1
 
los fuses no son

para el 16F88 tenes que configurar el registro OSCCON los bits 4,5 y 6 a 111 para oscilador interno a 8 Mhz. Con 110 trabaja a 4 mhz
osea osccon=0x76 para 8 mhz
osccon=0x66 para 4 mhz


a y desactiva los comparadores cmcom=0x07 en el banco 1
saludos
 
hola Man estoy en los mismos problemas, yo trabajo en el pic simulato ide, que tambien es lenguaje basic y tengo el mismo problema, le doy waitms 500 y se cuenta a un minuto, no se si sea el oscilador interno o derrepente un problema en los fuses si hallo solucon avisare,

Hola de nuevo es raro pero parese ser un problema del logaritmo del basic, cuantro tabajo con el waitus en cantidades de 20000 por ejemplo para 2 seg, trabaja muy bien, asi que solucion por el momento trabaja con pausas de Us y si necesitas mucha cantidad dale bucles, y prueva versiones mas reciente de tu programa para ver si han solucionado el problema
 
Última edición:
Atrás
Arriba