Autor Tema: Problema en la programación de PIC18F2550 en CCS  (Leído 1724 veces)

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

Desconectado Davidd

  • PIC10
  • *
  • Mensajes: 1
Problema en la programación de PIC18F2550 en CCS
« en: 10 de Julio de 2015, 13:48:58 »
Buenas tardes foro, el problema que tengo es el siguiente: Trato de programar un PIC18F2550 en CCS, anteriormente yo programaba con la gama 16F, pero recurrí a éste por el simple hecho de que utiliza más memoria, y lo necesito, cuando programa la gama 16F todo va bien, la simulación y la parte físca, pero con el PIC18F2550 no, hice un sencillo programa donde parpadea un LED como prueba, al compilar no marca error, pero ni en simulación ni en físico funciona, pienso entonces que es mi programación, y es el siguiente:

#include <18F2550.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOUSBDIV,PLL3,CPUDIV1,VREGEN

#use delay(clock = 20000000) //Trabajaré con 20Mhz, pero si se debe configurar el oscilador de otra forma mejor, aunque ya intenté de varias maneras, si hay problema en eso?

#byte porta = 0xf80 //éstas son las direcciones de memoria de los puertos externos
#byte portb = 0xf81
#byte portc = 0xf82

void main(){


setup_adc_ports(NO_ANALOGS); //quiero utilizar puros puertos digitales

set_tris_a(0);
set_tris_b(0);
set_tris_c(0);


while(1){

bit_set(portb,0);
delay_ms(500);
bit_clear(portb,0);
delay_ms(500);

}

}

Es algo simple pero de tantos intentos como éste aún no encuentro solución, con la otra gama así programado funciona perfectamente bien, pero no se que pase en éste caso.
Gracias foro.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema en la programación de PIC18F2550 en CCS
« Respuesta #1 en: 10 de Julio de 2015, 18:03:17 »
Es por que en en los PIC18 hay otra forma de manejar los puertos, simplificando:

Registros:

PORTx - Para LEER , toma el valor del pin (igual que el PIC16)
TRISx - Maneja la direccion, es decir entrada o salida ( igual que el PIC16)
LATx  - Este maneja el latch de salida, y para escribir tenes que hacerlo por aca.

Asi que si queres modificar el valor del puerto , usas el registro LATx


Tambien para no definir los registros podes usar:

output_bit (PIN_B0, value);

Donde value es el valor, 0 o 1. CCS se encarga de modificar el registro LATB por si solo.


 

anything