TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: baixinyo en 09 de Agosto de 2005, 03:18:00
-
Primero agradecer a todo el mundo la ayuda que day a gente tan torpe como yo, muchas GRACIAS.
Voy directo al grano:
Tengo un equipo que me da una señal RS232 8N1, o sea, 8 bits de datos y uno de stop. De esta manera me envía 3 veces 8 bits con el bit de stop para cada uno.
Como puedo hacer esta comunicacón con el pic 16f84 o con el 16F876.
Mi nivel de inglés es 0, y ya he mirado todo lo referente del tema Rs232 en el foro y no he entendido nada, perdonad mi ignoracia.
Si me podeis ayudar porfavor, con una explicación o un programilla con explicación me harías un gran favor.
No engañaré a nadie es para el trabajo, me juego el empleo, sino consigo hacer el programa me despiden. Tengo un compañero que lo sabe hacer pero no me quiere ayudar, es el tipico prepotente que si no sabes más que el te trata de ignorate, me gustaría darle una lección.
Gracias por todo.
-
HOla. No se si llego tarde, pero es bien facil lo que necesitas.
Con los datos obtenidos que queres hacer???
Bueno, simplemente para empezar a hablar y hacerlo sin integrados auxiliares, necesitas un PIC con al menos 9 pins de entrada, para leer los datos, cosa que es bien simple. El noveno bit supongo que cuando se pone en alto o bjao, indica el fin del mensaje, o no?
Necesitas 9 pins + los pins de salidas que quieras usar. Te hago un ejemplo facilito en assembler para el 16F84A...
Ej
;Primero de todo:
;declaracion de GPR:
aux EQU 0x0c
final EQU 0x4E
;vectores importantes y componentes externos: pone una resistencia de 10k a la ;salida de RA0 y conectala a 5v
org 0x0000
goto inicio
org 0x0004
goto inicio
org 0x0010
;luego:
;Configuras el puerto B del pic como entradas...
inicio bsf status,rp0
movlw 0xff
movwf portb
clrf option_reg ;activar pull ups en puerto b
movlw 0x01
movwf porta ;ra0 como entrada, las demas como salidas
bcf status,rp0
clrf porta
clrf 0x0c
movlw 0x0c
movwf FSR
movlw 0x0d
movwf final
loop btfsc porta,0 ; esperar que el bit de stop pase a cero (si funciona
goto loop ; a la inversa reemplaza btfsc por btfss...)
movf portb,w
movwf aux
xorwf INDF,W
btfsc status,Z
goto loop ;el dato sigue siendo igual al anterior, no guardarlo
incf FSR,F
movf aux,w
movwf INDF
movf FSR,w
movwf final
goto loop
leerdatos movlw 0x0d ;posicion del primer dato
movwf FSR
xorwf final,w
btfsc STATUS,Z
retlw 0x00 ;no hay datos que leer
proxdato movf INDF,w
nop ;movwf ;??? ;me tenes que decir que hacer
;con los datos obtenidos!!!
incf FSR,F
movf FSR,w
xorwf final,w
btfss STATUS,z
goto proxdato
ultimodato movf INDF,W
nop ;movwf ;???
retlw 0x01
bien...esopero que entiendas lo que hice. Saludos y pregunta sin miedo. chauu!


