TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: becadeitor en 18 de Junio de 2007, 07:47:26
-
Hola a todos:
Despues de romperme una vez y otra la cabeza, con el entrenador easyPic (quien no lo tenga se lo aconsejo por relacion calidad/precio), y despues de consultar el foro por si hubiese temas relacionados, paso a haceros la siguiente consulta.
Estoy diseñando un sistema de automatización, que consta de 1 pic , junto a una serie de perifericos para activación de electrovalvulas, y acondicionarores de señal, asi como su respectivo max232 para comunicarse con el ordenador.
A la hora de la programacion, me he encontrado con un problema que no lo encuentro solucion.
El objetivo es que el ordenador mande un comando a la placa del pic, y esta placa actue segun el comando que reciba.
Realice; un programa prototipo para intentar probar esta parte, y lo probe en la placa easypic pero el resultado siempre es erroneo.
el programa (muy esquematizado)
program comandos
' declaracion de variables.
dim Recibido as string[7]
main:
Usart_Init(9600) ' Inicializamos Usar
TRISA = 0
PORTA = 0
recibido = ""
while true
if Usart_Data_Ready() = 1 then
' Lectura del puerto
Usart_Read_Text(Recibido,"$") 'Detecta el final del comando mediante el caracter $
select case Recibido 'Si el comando es v ......
case Recibido = "va"
Usart_Write_Text("vacio")
case Recibido = "do" 'Si el comando es do
Usart_Write_Text("dosis")
case else
Usart_Write_Text(Recibido) ' En caso contrario reenvia el dato recibido
end select
Recibido = ""
end if
Bueno el programa que veis es uno que hice para testear este apartado, utilizo el mikrobasic 5.0
cuando ejecuto sobre un Pic este programa, SI que exite una comunicacion.. pero envé el comando que envíe.. siempre recibo el texto "vacio"
Si a alguien se le ocurre una solucion, porfavor indicarmela!!! :shock:
Gracias a todos
-
Una rectificacion sobre el programa...
program comandos
' declaracion de variables.
dim Recibido as string[7]
main:
Usart_Init(9600) ' Inicializamos Usar
TRISA = 0
PORTA = 0
recibido = ""
while true
if Usart_Data_Ready() = 1 then
' Lectura del puerto
Usart_Read_Text(Recibido,"$") 'Detecta el final del comando mediante el caracter $
select case Recibido 'Si el comando es va ......
case "va"
Usart_Write_Text("vacio")
case "do" 'Si el comando es do
Usart_Write_Text("dosis")
case else
Usart_Write_Text(Recibido) ' En caso contrario reenvia el dato recibido
end select
Recibido = ""
end if
la estriuctura selec , case es case "va" o case "do" en vez de Recibido = ..., si compilais el primer programa os daria error
8)
-
Finalmente halle la solución!!!!!!
rogram rs232_com_test
' declaracion de variables.
dim dato as char
dim Recibido as string[7]
dim x as byte
dim cmp as byte
main:
Usart_Init(9600) ' Initialize USART module
TRISA = 0
PORTA = 0
while true
if Usart_Data_Ready() = 1 then ' If data is received
' Lectura del puerto
Usart_Read_Text(Recibido,"$")
cmp = strcmp(Recibido, "va")
if cmp = 0 then
Usart_Write_Text("vacum")
else
cmp = strcmp(Recibido, "do")
if cmp = 0 then
Usart_Write_Text("dosing")
end if
end if
Usart_Write_Text(Recibido)
end if
wend
end.
si os dais cuenta he eliminado la sentencia case,.. es debido a que el mikrobasic, no utiliza los string.
Dar las gracias al equipo de soporte de mikrobasic!!!, (pero haber si hay suerte y en las próximas renovaciones implementan esta caraceristica.....)
:-/ :-/ :-/ :mrgreen: :mrgreen: :mrgreen: 8)
-
Felicidades, de esta forma doble satisfaccion... :D