TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: migsantiago en 08 de Octubre de 2005, 18:20:00
-
Hola
Hice un programa para checar la salida de los pines IO del 877A.
Programé como entrada el puerto B y lo que lea en él, saldrá en los demás puertos.
Conecté a RB0 una Resistencia a GND para asegurar el cero lógico. A RC0 conecté un LED que va a indicar el estado de RB0.
Pero el PIC no lo hace como debe ser.
¿Podrían revisar mi programa por favor?
#include "16f877.h"
#use delay(clock=8000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#use standard_io (a)
#use standard_io (b)
#use standard_io (c)
#use standard_io (d)
#use standard_io (e)
void main(void)
{
int valor;
SETUP_ADC_PORTS(NO_ANALOGS);
SETUP_ADC(ADC_OFF);
set_tris_a(0x00);
set_tris_b(0xff); //B salida
set_tris_c(0x00); //C salida
set_tris_d(0x00);
set_tris_e(0x00);
while(1){
valor=input_b();
output_a(valor);
output_c(valor);
output_d(valor);
output_e(valor);
}
}
Espero que esté bien, si no, mi programador ya anda fallando.
Gracias
-
Si programas los puertos con la función set_trix_x, usa #use fast_io. Prueba y me cuentas.
Por cierto .. valor = input_b() ¿?¿ eso existe en CCS?
-
Según la ayuda de CCS:
INPUT_x()
Syntax:
value = input_a()
value = input_b()
value = input_c()
value = input_d()
value = input_e()
Parameters:
None
Returns:
An 8 bit int representing the port input data.
Function:
Inputs an entire byte from a port. The direction register is changed in accordance with the last specified #USE *_IO directive. By default with standard I/O before the input is done the data direction is set to input.
Availability:
All devices.
Requires
Nothing
Examples:
data = input_b();
Example Files:
ex_psp.c
Also See:
input(), output_x(), #USE xxxx_IO
Ya lo intenté, pero hace lo mismo.
¿Qué usarías en vez de valor=input_b(); ?
-
Ya sé que pasó... la falla está en el xtal de 8MHz, le puse uno de 4 y ya funcionó

Gracias radon
-
Ah, claro, no me había dado cuenta antes. No puedes trabajar a 8 MHz con el fuse XT, tendrías que haber puesto HS.
-
No te imaginas que frustrado estaba por no poder echar a andar un programa tan bobo...

Voy a ponerle HS ahora sí
-
Escrito originalmente por nocturno66
Ah, claro, no me había dado cuenta antes. No puedes trabajar a 8 MHz con el fuse XT, tendrías que haber puesto HS.
Se puede usar XT hasta 10 Mhz sin problemas.
-
Puede que funcione sin problemas hasta 10MHz, pero la data dice que el XT hasta 4MHz y de ahí p"arriba el HS. De todas formas, no creo que sea crítico.