Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/11/2010 #1


Problema con Rs232 en PIC16f886 en C
Hola, primero de todo felicidades por el foro,llevo poco mas de un mes aprendiendo con los pics y lo poco que se,gran parte os lo deboa vosotros,soy estudiante de Ingenieria de Teleco y tengo que realizar un proyecto con un PIC16f886, una parte del proyecto consta en recibir un dato a traves del pc por una conexion USB-Rs232 a los pines del pic habilitados para comunicacion Rs232, una vez recibido ese dato tengo que diferenciar si es un caracter u otro y segun el tipo de caracter (para simplificar solo diferencia si es un numero o una letra) y dependiendo si es un numero enciende un led o si no es un numero enciende otro, pues bien me puse a compilar en principio parace que lo tenia,pero a la hora de flashearlo y testearlo,por cierto tengo el pickit 2 de microchip con la demo board de 28 pines,no me da ningun error al compilar y al testearlo me he dado cuenta que solo me enciende/apaga el led de (si es un numero)con la tecla 2 y 6 del teclado y el led de cuando no es un numero me lo enciende/apaga con el resto del teclado,incuyendo todos los numero menos el 2 y el 6, claro esta que hay algo mal, pero no encuentro el que (y eso que el codigo no es precisamente largo..xDD) ,os agradeceria si alguien pudiera ayudar a este pekeño aprendiz.

Gracias.

PD.Perdonar por mi poca experiencia con los pics, si veis algun error os agracederia que me lo comentaseis.
-----------------------------------Posteo el codigo--------------------------
#include <16F886.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES BROWNOUT //Reset when brownout detected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NODEBUG //No Debug mode for ICD
#FUSES BORV40 //Brownout reset at 4.0V
#FUSES NOWRT //Program memory not write protected

#use delay(clock=4000000) //Osc Interno a 4 Mhz
#use RS232(BAUD=9600, BITS=8 ,PARITY=N, XMIT=PIN_C6, RCV=PIN_C7) //Configuracion de Rs232



char caracter; //Creamos una varible de intercambio

void main()
{
set_tris_b(0xF9); //puerto B como salida salidas el RB1 y RB2

do{
if(kbhit()) //se ha recibido un caracter?
{
caracter=getc(); //Guarda caracter recibido en variable caracter
if(caracter>='0' && caracter<='9') // Si es un número?
{
output_toggle(PIN_B1); //Activamos la Salida DS2
}
else //Si no es un número
{
output_toggle(PIN_B2); //Activamos la Salida DS3
}
}
}
while(1); //bucle que siempre se pone,necesario.
}
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.