Pic 18f452, ayuda para programar el primero

buen dia, tengo una pregunta. Puedo pasar el código de un pic16f84a a un 18f452 normal? cual es la diferencia?
realice el siguiente código:
void main() {
TRISA=0x00;
TRISB=0x00;
//PORTB=0;
while(1)
{
if (PORTA.F0==1)
{
PORTB.F0=1;
PORTB.F1=0;
}
else
{
if (PORTA.F0==0)
{
PORTB.F0=0 ;
PORTB.F1=1;
}
}
}
}

pero en simulación proteus lla no me hace nada.
pueden decirme aque se debe.
saludos ...
 
Hola.
Configuración y depende del lenguaje... me parece que es MikroC pero te digo que de un 16F a un 18F hay gran diferencia.

Ahi falta:

- Fuses: Principalmente el tipo de oscilador y hay otros tipos... entre otras cosas importentes [ Ver hoja de datos ] y configurar en el compilador.

- Registros de configuración: Aparte de los registros TRISx, los puertos suelen tener más funciones que solo pines de I/O digital. Por ejemplo el puerto A tambien trabaja como entrada análoga... es necesario desactivar si quieres que sea digital [ Ver hoja de datos ].

- Para escribir en un puerto se usa los registros LATx y para leer los PORTx... es diferente a los 16F...

Eso sería lo básico...
Saludos.
 
buen dia, necesito programa sencillo que prenda y apague un led
con el pic 18f452. lo programo pero en proteus no me hace bien
la simulación.
abajo se muestra.
será también algo del oscilador?

void main() {
TRISA=0xFF;
TRISD=0x00;
TRISC=0x00;

while(1)
{
if (PORTA.F1==1)

PORTD.F1=1;
if (PORTA.F1==0)
PORTD.F1=0;
} ...
 
El puerto A del PIC18F452 tiene conversores ADC y para que puedas usar el puerto A como digital I/O necesitas configurar el registro ADCON1

Por ejemplo así:
ADCON1 = 0x07;

Si no realizas esta configuración no podrás realizar esa comparación de estados lógicos.
Y como dice TRILO-BYTE, es mejor que uses un ELSE en lugar de otro IF.
 
Atrás
Arriba