Anda di halaman 1dari 18

11/02/13

Comunicacin PIC-PC va RS232

DISPOSITIVOS LGICOS MICROPROGRAMABLES ndice / Introduccin

Comunicacin PIC-PC va RS232

Ampliacin de contenidos

Comunicacin PIC-PC va RS232


Por terminar.

Introduccin
En ocasiones es necesario que un sistema con microcontroladores recoja informacin que luego ha de ser procesada, por ejemplo temperaturas, potencias consumidas, etc. siendo el sistema de recogida de informacin mas usual un PC. En otros casos puede ser necesario controlar mediante un PC las entradas y salidas de un dispositivo. Tambin puede utilizarse un PC para actualizar el firmware de un dispositivo. En cualquier caso la forma mas simple de comunicar un dispositivo con microcontroladores con un PC es a travs del puerto serie utilizando el estndar RS232 (EIA 232). Los ordenadores de sobremesa o fijos actuales suelen contar con un puerto serie si bien se tiende a que desaparezca y muchos equipos nuevos ya no lo incorporan. Adems hace tiempo que no se incluye en los ordenadores porttiles. A pesar de lo anterior todava sigue siendo til. En caso de no disponer de ningn puerto podemos utilizar un conversor USB/RS232. Ver en Conversores USB/RS232. Para realizar pruebas podemos simular un puerto serie en el PC, de tal manera que creamos un puerto virtual al que pueden acceder los programas exactamente igual como si fuese uno real. Ver en Puerto serie virtual VSPD y COMPIM de Proteus. El puerto serie es accesible mediante conectores, siendo el DB9 macho (de 9 patillas) el nico que an puede encontrarse en un PC de sobremesa. Patillaje del conector RS232 en el PC: 1. CD 2. RXD 3. TXD 4. DTR 5. GND 6. DSR 7. RTS 8. CTS 9. RI (Carrier Detect) Entrada (Receive Data) Entrada (Transmit Data) Salida (Data terminal Ready) Salida (Ground) (Data Set Ready) Entrada (Request To Send) Salida (Clear To Send) Entrada (Ring Indicator) Entrada

Para comunicarse con un microcontrolador bastan con 3 lneas (visto desde el PC): 3, TXD, Transmisin de datos. 2, RXD, Recepcin de datos.
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 1/18

11/02/13

Comunicacin PIC-PC va RS232

5, GND, Masa. La velocidad de transmisin es un dato importante, y es la cantidad de informacin enviada por segundo. Se expresa en baudios (bits por segundo) y en los puertos COM de un PC suele utilizarse 4800, 9600 baudios o mas. Enviar datos en formato serie RS232 de forma asncrona (la mas simple) es cuestin de hacer que una salida est a nivel alto o bajo en el momento adecuado. Normalmente, cuando no se transmite, la salida est a nivel alto (1), y cuando empieza el bit de inicio, esta pasa a ser de nivel bajo. A 4800 baudios la duracin del bit debe ser de 1/4800 = 208 microsegundos. 8 bits de datos siguen al bit de inicio, cada uno de un periodo. Un nivel alto de ms de un periodo es un bit de parada. Debe tenerse en cuenta que primero se mandan los bits menos significativos o LSB (Least Significant Bit).

Es importante tener en cuenta que en el protocolo RS232 utiliza lgica negativa, un nivel alto (1) es de -3V a -15 voltios, y un nivel bajo (0) es de +3V a +15 voltios. Usualmente los valores son +/-12 voltios. Puesto que un PIC utiliza niveles TTL es necesario un conversor de niveles. El mas utilizado es el circuito integrado MAX232 de Dallas Semiconductor. El MAX232 convierte los niveles RS232 a TTL y viceversa con slo una fuente de 5 voltios. Contiene dos driver TTL-RS232 y dos driver RS232-TTL. Necesita 5 condensadores externos de 1 uF para el MAX232 y de 100nF para el MAX232A. (Se coloca uno de los 5 condensadores entre la patilla 16 y masa). Si se utilizan condensadores electrolticos hay que tener cuidado y respetar la polaridad al conectarlos al circuito.

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

2/18

11/02/13

Comunicacin PIC-PC va RS232

Para mas informacin ver la comunicacin serie. Utilizando un PIC para la comunicacin tenemos dos alternativas: PIC con hardware especfico para el puerto serie, como es el caso del PIC16F876 (a sustituir por el PIC16F886), entre otros (ver patillas 17 y 18). Dispone de una UART (Universal Asynchronous R eceiver-T ransmitter, Transmisor-Receptor Asncrono Universal ) para controlar los puertos y dispositivos serie. PIC que no disponen de este hardware por lo que es necesario implementar por software todos los detalles de la comunicacin serie. Este es el caso por ejemplo del PIC16F84A.

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

3/18

11/02/13

Comunicacin PIC-PC va RS232

Usaremos el PIC16F84A primero para ver un circuito que envia un mensaje ASCII del PIC al PC implementado por software. Luego realizaremos un circuito algo mas complejo para comunicar el PC con el PIC, de forma bidireccional tambin con el PIC16F84A. Mas adelante se ir profundizando mas en este tema pasando por el 16F886 y el 18F2550, este ltimo con puerto serie USB a 12 Mbit/s.

Ejemplo 1. Enviar un mensaje ASCII del PIC al PC


Mandaremos el mensaje "Hola mundo" como caracteres ASCII al puerto de comunicaciones serie COM de un PC. Para enviar caracteres ASCII al PC con el PIC se conecta una salida del PIC al terminal 2 (RXD) del puerto RS232 del PC. En la figura siguiente se muestra como se enva el dato "01001101". Con la calculadora de Windows en vista "cientfica" u otro medio hallamos que "01001101" en binario es "77" en decimal. Con una tabla ASCII o simplemente en una zona de texto, como el block de notas, manteniendo pulsada la tecla ALT y marcando el 77 en el teclado numrico, nos encontraremos que "77" es "M" (m mayscula) en ASCII. Habremos enviado la "M" del PIC al PC.

Como la memoria de datos del PIC es escasa y difcil de usar, pondremos el mensaje a enviar en la memoria de programa. Para acceder a ella utilizaremos una tabla. En la subrutina MSGTXT cargamos en el acumulador el offset o desplazamiento que queremos representar, y este valor lo sumamos al contador del programa. Como resultado de la rutina la instruccin RETLW devolver el valor de los caracteres en el acumulador. Un cero en offset retornar "H", un uno "o", un dos "l", etc.
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 4/18

11/02/13

Comunicacin PIC-PC va RS232

M S G T X T A D D W F R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W R E T L W P C L ,f 0 x 4 8 0 x 6 F 0 x 6 C 0 x 6 1 0 x 2 0 0 x 6 D 0 x 7 5 0 x 6 E 0 x 6 4 0 x 6 F 0 x 0 D 0 x 0 A 0 x 0 0 ;s u m a m o so f f s e ta lP C L ;' H '7 2 d ;' o '1 1 1 d ;' l '1 0 8 d ;' a '9 7 d ;''3 2 d ;' m '1 0 9 d ;' u '1 1 7 d ;' n '1 1 0 d ;' d '1 0 0 d ;' o '1 1 1 d ;r e t o r n od ec a r r o ;n u e v al n e a ;i n d i c ae lf i n a ld e lm e n s a j e

Para imprimir una cadena de caracteres, situamos un registro que apunte al carcter inicial (MSGPTR), y llamamos repetidamente a MSGTXT incrementando el puntero cada vez. Cuando hemos alcanzado el final, la funcin devuelve un cero. La rutina debe inicializarse con el offset cargado en w.
O U T M S G M O V W F M S G L O O P M O V F C A L L A D D L W B T F S C R E T U R N C A L L I N C F G O T O M S G P T R ,W M S G T X T 0 S T A T U S , Z O U T C H M S G P T R ,f M S G L O O P ;m u e v ee lp u n t e r oaW ;r e t o r n ae lc a r c t e rA S C I I ;p o n el ab a n d e r aZ e r oau n os iW=0 ;s a l t as ie lb i tZ e r on oe s t an i v e la l t o ;s il l e g a m o sa lf i n a l ,W=0 ;l l a m aal ar u t i n ad ec o m u n i c a c i ns e r i e ;a p u n t a m o sa ls i g u i e n t ec a r c t e r ;v u e l v eap o rm sc a r a c t e r e s M S G P T R ;m u e v ewa lp u n t e r od e lm e n s a j e

Rutina de transmisin serie de PIC a PC


Al utilizar un PIC16F84 que no dispone de puertos especficos para transmisin serie, la rutina de transmisin se implementar mediante software. La rutina que transmite los caracteres al PC va serie se llama OUTCH. Para conseguir la duracin del bit podemos usar la rutina MIC4 (ver Temporizacin). 52 x 4 bucles de un microsegundo permiten temporizar los 208 microsegundos del periodo de un bit a 4800 baudios. Realmente 12 microsegundos son usados en la cabecera de OUTCH, por lo que usamos los 49 bucles restantes para contar el resto de la transmisin. La subrutina es llamada con el carcter que deber ser transmitido por el bit 0 del puerto A que estar unido a la patill 2 (RXD) del puerto serie del PC a travs de un adaptador TTL-RS232. OUTCH utiliza un registro denominado TXREG en donde se debe almacenar el dato a transmitir. La variable BITS sirve para establecer el nmero de bits a transmitir. Se utiliza la instruccin RRF y el CARRY para ir obteniendo los bits del registro TXREG.
O U T C H M O V W F M O V L W M O V W F B C F T X L O O P M O V L W C A L L R R F B T F S C G O T O S E T C E R O B C F G O T O S E T U N O
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 5/18

T X R E G 8 B I T S P O R T A , 0 0 x 3 1 M I C 4 T X R E G ,f S T A T U S ,C S E T U N O P O R T A , 0 T D O N E

;c o l o c aWe ne lr e g i s t r od et r a n s m i s i n ;8b i t sd ed a t o ss e r nt r a n s m i t i d o s ;B I T Se su nc o n t a d o rp a r al o sb i t s ;b i td ei n i c i oe nl as a l i d as e r i e( a c t i v oan i v e lb a j o ) ;R e t a r d od e1 9 6m i c r o s e g u n d o s3 1 h=4 9 d ;4 9x4=1 9 6m i c r o s e g u n d o s ;r o t a m o sal ad e r e c h ae lb i te ne la c a r r e o ;s ie la c a r r e oe s0s a l t a m o syp o n e m o sl al n e aan i v e lb a j o ;s in o ,p o n e m o sl al n e aan i v e la l t o ;P o n e m o sl as a l i d as e r i ean i v e lb a j o( t r a n s m i t i ru n0 ) ;C o m p r o b a rs is eh a nt r a n s m i t i d ot o d o sl o sb i t sd eT X R E G

11/02/13

Comunicacin PIC-PC va RS232

B S F N O P T D O N E D E C F S Z G O T O M O V L W C A L L B S F M O V L W C A L L R E T U R N

P O R T A , 0

;P o n e m o sl as a l i d as e r i ean i v e la l t o( t r a n s m i t i ru n1 ) ;p a s a m o sap r o b a rs ia c a b a m o s ,d i r e c t a m e n t e ;s ed e c r e m e n t aB I T Sp o re lb i tt r a n s m i t i d oys a l t ac u a n d ol l e g aac e r o ;q u e d a nm sb i t s ,v a m o sat r a n s m i t i re ls i g u i e n t e ;R e t a r d od e2 0 8m i c r o s e g u n d o s3 4 h=5 2 d ;5 2x4= 2 0 8m i c r o s e g u n d o sp a r ae l l t i m ob i td ed a t o sq u eq u e d a ;S a l i d as e r i ean i v e la l t op a r ae lb i td es t o p ;r e t a r d od e1 0 4x4m i c r o s e g u n d o s6 8 h=1 0 4 d ;1 0 4x4= 4 1 6m i c r o s e g u n d o sp a r ad o sb i t sd ep a r a d a

B I T S ,f T X L O O P 0 x 3 4 M I C 4 P O R T A , 0 0 x 6 8 M I C 4

Rutina principal
Ahora tenemos casi todo el cdigo necesario para programar un PIC que transmita el mensaje "Hola mundo". La rutina principal utiliza NMSEC (ver Temporizacin) y puede ser como esta.
I N I C I O B S F M O V L W M O V W F M O V W F B C F B S F M O V L W C A L L M O V L W C A L L E N D L E S S G O T O E N D L E S S ;n o sq u e d a m o sa q u i ,e nu nb u c l ei n f i n i t o S T A T U S , R P 0 0 T R I S A T R I S B S T A T U S , R P 0 P O R T A , 0 0 x C 8 N M S E C 0 O U T M S G ;A c t i v ae lb a n c od em e m o r i a1 . ;t o d o sl o sp i n e sd el o sp u e r t o ss o ns a l i d a s ;e ne lp u e r t oA ;ye ne lp u e r t oB ;A c t i v ae lb a n c od em e m o r i a0 . ;p o n e m o san i v e la l t ol as a l i d as e r i e .L n e ae nr e p o s o . ;r e t a r d od e2 0 0m s e c . ;p a r aq u en oa f e c t e nl a sf l u c t u a c i o n e sd e le n c e n d i d o ;o f f s e ti n i c i a ld e lm e n s a j e ;r e p r e s e n t a m o se lm e n s a j e

Algunos comentarios acerca del algoritmo


Todos los bits de todos los puertos estn configurados como salidas. Los bits de los puertos desconectados nunca deben ser puestos como entradas. Dejar entradas al aire puede provocar un funcionamiento imprevisible e incluso daar el PIC. Otros mensajes pueden ser aadidos a la tabla, siempre que estn en las primeras 256 posiciones de memoria de programa, que pueda ser alcanzado sumando el mximo valor al PCL (Program Counter Low). El orden de las subrutinas no importa; la rutina principal debe ser la primera rutina ejecutada a partir de la direccin 0000. Cualquier caso vale, tanto si lo ponemos directamente, o como si en la direccin 0000 ponemos un 'GOTO INICIO' antes de las instrucciones., de esta manera podramos saltar la posicin de memoria 0004, que podemos reservar para una subrutina de interrupcin.

Conexin del transmisor


Las conexiones que hemos puesto al PIC son pocas: pin 3: RA0 - conexin a la patilla 2 (RXD) del conector DB9 del PC a travs de un conversor TTL-RS232 con el MAX232. pin 4: MCLR - terminal conectado a + 5 V a travs de una resistencia de 10K. Entre este pin y masa se conecta un pulsador para resetear el PIC pin 5: 0V - terminal de alimentacin negativa. Adems de conectarse a masa y a la fuente de alimentacin, debe ser conectado a al pin 5 del conector DB9. pin 14: +5V - terminal positivo de la alimentacin. Un condensador de 100 nF debe ser conectado entre este terminal y masa. Esto previene de acoplamientos y de ruidos en la alimentacin, pero no es imprescindible. pin 15: OSC1 - Una de la salidas del oscilador. Debe ser conectado a un cristal de 4 MHz y a un condensador de 33pF. El otro terminal del condensador debe ser conectado a masa. pin 16: OSC2 - La otra de las salidas del oscilador. Esta va conectada al otro terminal del
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 6/18

11/02/13

Comunicacin PIC-PC va RS232

cristal y a otro condensador de 33pF. El otro terminal de este condensador tambin va a masa. El resto de las patillas quedan sin conectar a nada (al aire). Es importante saber que no cualquier cable serie vale para la conexin entre el PC y el PIC. Debe utilizarse un cable macho-hembra no cruzado.

Esquema electrnico

Programa completo
El programa puede verse aqu:
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;E n v i a rm e n s a j e sA S C I Id e lP I Ca lP Cv i aR S 2 3 2 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ;P r o g r a m ao r i g i n a l : P I C _ P C 0 0 1 . A S M F e c h a :2 0 / 0 5 / 2 0 0 5 ;R e v i s i n :0 . 0 ;P r o g r a m ap a r aP I C 1 6 F 8 4 A ;V e l o c i d a dd er e l o j :4M H z ;I n s t r u c c i n :1 M z = 1u s ;P e r r oG u a r d i n :O F F ;T i p od eR e l o j :X T ;P r o t e c c i nd ec d i g o :O F F ;P O R :O N ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ;D E S C R I P C I ND E LP R O G R A M A ;
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 7/18

11/02/13

Comunicacin PIC-PC va RS232

;E s t ep r o g r a m ac o n e c t aa lP I Cc o nu nP Cat r a v sd e lp u e r t os e r i e . ; ;U t i l i z ae lb i t0d e lp u e r t oAc o m os a l i d as e r i e . ; ;D e b eu t i l i z a r s eu nc o n v e r s o rT T L R S 2 3 2 ,c o m oe lM A X 2 3 2 ,p a r a ;c o n e c t a rl as a l i d ad e lP I CaR X De ne lp u e r t os e r i ed e lP C . ; ;C u a n d os ea l i m e n t ap o rp r i m e r av e z ,oc u a n d os el ed u nr e s e t ;e n v aa lP Ce lm e n s a j e" H o l am u n d o "c o m oc a r a c t e r e sA S C I I . ; ;P a r ar e c i b i re lm e n s a j ep u e d eu t i l i z a r s ee lp r o g r a m aH y p e r t e r m i n a l ;d eW i n d o w soT e r m i n a l T O B ,u n aa p l i c a c i np r o p i ar e a l i z a d aa le f e c t o ;q u e ,a d e m sd ef u n c i o n a rc o m ot e r m i n a l ,p e r m i t ec r e a rf c i l m e n t e ;c d i g od em e n s a j e s . ; ;C o n f i g u r a c i nd e lp u e r t oC O M : ;B i t sp o rs e g u n d o=4 8 0 0b a u d i o s ;B i t sd ed a t o s=8 ;P a r i d a d :n i n g u n a ;B i t sd ep a r a d a=2 ;C o n t r o ld ef l u j o :n i n g u n o ;T i e m p op o rb i t : ;4 8 0 0b a u d i o s>1 / 4 8 0 0s e g>2 0 8 , 3m i c r o s e g u n d o s ; ; * * * * * * * * * * * * * * * * * * * * * * * * * *P a t i l l a s* * * * * * * * * * * * * * * * * * * * * * * * * ; _ _ _ _ _ _ _ _ _ _ _ ; N C-R A , 2| 1 \ _ _ /1 8 | -R A , 1-N C ; N C-R A , 3| 2 1 7 | -R A , 0-AR X Dd e lP Cat r a v sT T L R S 2 3 2 ; N C-R A , 4| 31 6 F 8 4 A1 6 | -O S C 1-[ X T ] ;[ P U L ]-M C L R /| 4 1 5 | -O S C 1-[ X T ] ; G N D| 5 1 4 | -V c c ; N C-R B , 0| 6 1 3 | -R B , 7-n c ; N C-R B , 1| 7 1 2 | -R B , 6-n c ; N C-R B , 2| 8 1 1 | -R B , 5-n c ; N C-R B , 3| 9 _ _ _ _ _ _ _ _ 1 0 | -R B , 4-n c ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * L I S TP = P I C 1 6 F 8 4 A ;P i cau s a r # I N C L U D E< P 1 6 F 8 4 A . I N C > ;L i s t ad ee t i q u e t a sd em i c r o c h i p

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;F u s e s ,c o n f i g u r a no p c i o n e se x t e r n a sd eh a r d w a r ep a r al ap r o g r a m a c i o n _ _ C O N F I G _ C P _ O F F&_ P W R T E _ O N&_ W D T _ O F F&_ X T _ O S C

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;L i s t ad ev a r i a b l e sp a r ae lu s od e lp r o g r a m a ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * M S G P T R T X R E G B I T S C N T M S E C E Q U E Q U E Q U E Q U 0 x 0 C 0 x 0 D 0 x 0 E 0 x 0 F ;P u n t e r od e lm e n s a j e ;R e g i s t r od et r a n s m i s i n ;N m e r od eb i t sd ed a t o s ;N m e r od em i l i s e g u n d o sd er e t a r d o

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * O R G0 ; C o m a n d oq u ei n d i c aa lE n s a m b l a d o r ; l ad i r e c c i nd el am e m o r i ad ep r o g r a m a ; d o n d es i t u a rl as i g u i e n t ei n s t r u c c i n ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; I N I C I O B S F S T A T U S , R P 0 ;A c t i v ae lb a n c od em e m o r i a1 . M O V L W 0 ;t o d o sl o sp i n e sd el o sp u e r t o ss o ns a l i d a s M O V W F T R I S A ;e ne lp u e r t oA M O V W F T R I S B ;ye ne lp u e r t oB
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 8/18

11/02/13

Comunicacin PIC-PC va RS232

B C F B S F M O V L W C A L L M O V L W C A L L E N D L E S S

S T A T U S , R P 0 P O R T A , 0 0 x C 8 N M S E C 0 O U T M S G

;A c t i v ae lb a n c od em e m o r i a0 . ;p o n e m o san i v e la l t ol as a l i d as e r i e .L n e ae nr e p o s o . ;r e t a r d od e2 0 0m s e c . ;p a r aq u en oa f e c t e nl a sf l u c t u a c i o n e sd e le n c e n d i d o ;o f f s e ti n i c i a ld e lm e n s a j e ;r e p r e s e n t a m o se lm e n s a j e

G O T O E N D L E S S ;n o sq u e d a m o sa q u i ,e nu nb u c l ei n f i n i t o ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;S U B R U T I N A S ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; O U T M S G M O V W F M S G P T R ;m u e v ewa lp u n t e r od e lm e n s a j e M S G L O O P M O V F M S G P T R ,W ;m u e v ee lp u n t e r oaW C A L L M S G T X T ;r e t o r n ae lc a r c t e rA S C I I A D D L W 0 ;p o n el ab a n d e r aZ e r oau n os iW=0 B T F S C S T A T U S , Z ;s a l t as ie lb i tZ e r on oe s t an i v e la l t o R E T U R N ;s il l e g a m o sa lf i n a l ,W=0 C A L L O U T C H ;l l a m aal ar u t i n ad ec o m u n i c a c i ns e r i e I N C F M S G P T R ,f ;a p u n t a m o sa ls i g u i e n t ec a r c t e r G O T O M S G L O O P ;v u e l v eap o rm sc a r a c t e r e s ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; O U T C H M O V W F T X R E G ;c o l o c aWe ne lr e g i s t r od et r a n s m i s i n M O V L W 8 ;8b i t sd ed a t o ss e r nt r a n s m i t i d o s M O V W F B I T S ;B I T Se su nc o n t a d o rp a r al o sb i t s B C F P O R T A , 0 ;b i td ei n i c i oe nl as a l i d as e r i e( a c t i v oan i v e lb a j o ) T X L O O P M O V L W 0 x 3 1 ;R e t a r d od e1 9 6m i c r o s e g u n d o s3 1 h=4 9 d C A L L M I C 4 ;4 9x4=1 9 6m i c r o s e g u n d o s R R F T X R E G ,f ;r o t a m o sal ad e r e c h ae lb i te ne la c a r r e o B T F S C S T A T U S ,C ;s ie la c a r r e oe s0s a l t a m o syp o n e m o sl al n e aan i v e lb a j o G O T O S E T U N O ;s in o ,p o n e m o sl al n e aan i v e la l t o S E T C E R O B C F P O R T A , 0 ;P o n e m o sl as a l i d as e r i ean i v e lb a j o( t r a n s m i t i ru n0 ) G O T O T D O N E ;C o m p r o b a rs is eh a nt r a n s m i t i d ot o d o sl o sb i t sd eT X R E G S E T U N O B S F P O R T A , 0 ;P o n e m o sl as a l i d as e r i ean i v e la l t o( t r a n s m i t i ru n1 ) N O P ;p a s a m o sap r o b a rs ia c a b a m o s ,d i r e c t a m e n t e T D O N E D E C F S Z B I T S ,f ;s ed e c r e m e n t aB I T Sp o re lb i tt r a n s m i t i d oys a l t ac u a n d ol l e g aac e r o G O T O T X L O O P ;q u e d a nm sb i t s ,v a m o sat r a n s m i t i re ls i g u i e n t e M O V L W 0 x 3 4 ;R e t a r d od e2 0 8m i c r o s e g u n d o s3 4 h=5 2 d C A L L M I C 4 ;5 2x4= 2 0 8m i c r o s e g u n d o sp a r ae l l t i m ob i td ed a t o sq u eq u e d a B S F P O R T A , 0 ;S a l i d as e r i ean i v e la l t op a r ae lb i td es t o p M O V L W 0 x 6 8 ;r e t a r d od e1 0 4x4m i c r o s e g u n d o s6 8 h=1 0 4 d C A L L M I C 4 ;1 0 4x4= 4 1 6m i c r o s e g u n d o sp a r ad o sb i t sd ep a r a d a R E T U R N ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; N M S E C M O V W F C N T M S E C ;m u e v eWa lr e g i s t r om s e c M S L O O P M O V L W 0 x F 8 ;c u e n t a8m i c r o s e g u n d o sp o re n c i m a C A L L M I C 4 ;2 4 8*4+2=9 9 4 N O P ;r e a l i z ae lr e s t od e lb u c l e N O P ;a a d e6m i c r o s e g u n d o s D E C F S Z C N T M S E C ,f ;d e c r e m e n t ae lc o n t a d o rys a l t ac u a n d ol l e g aac e r o G O T O M S L O O P ;v u e l v ear e a l i z a re lb u c l e R E T U R N ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 9/18

11/02/13

Comunicacin PIC-PC va RS232

; M I C 4 A D D L W 0 x F F B T F S S S T A T U S , Z G O T O M I C 4 R E T U R N ;s u b s t r a e1d eW ;s a l t ac u a n d ol l e g aac e r o ;s in ol l e g aac e r ov u e l v ear e s t a r

; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; M S G T X T A D D W F P C L ,f ;s u m a m o so f f s e ta lP C L R E T L W 0 x 4 8 ;' H '7 2 d R E T L W 0 x 6 F ;' o '1 1 1 d R E T L W 0 x 6 C ;' l '1 0 8 d R E T L W 0 x 6 1 ;' a '9 7 d R E T L W 0 x 2 0 ;''3 2 d R E T L W 0 x 6 D ;' m '1 0 9 d R E T L W 0 x 7 5 ;' u '1 1 7 d R E T L W 0 x 6 E ;' n '1 1 0 d R E T L W 0 x 6 4 ;' d '1 0 0 d R E T L W 0 x 6 F ;' o '1 1 1 d R E T L W 0 x 0 D ;r e t o r n od ec a r r o R E T L W 0 x 0 A ;n u e v al n e a R E T L W 0 x 0 0 ;i n d i c ae lf i n a ld e lm e n s a j e ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; E N D

El programa puede descargarse, de picpcrs232cpp/01.rar y est en "picpcrs232cpp\01\mplab\pic_pc001.asm". Los fuses se configuran con WDT desactivado, oscilador XT, sin proteccin y con POR activado. El programa se ha realizado y simulado con MPLAB.

Prueba del programa


Una vez programado el PIC con ICPROG y JDMD, se monta el circuito en una placa protoboard, y se conecta al puerto serie de un PC. Tambin podemos simular un puerto serie en el PC, de tal manera que creamos un puerto virtual al que pueden acceder los programas exactamente igual como si fuese uno real. Y en lugar de montar fsicamente el circuito del PIC podemos simularlo con Proteus. Ver en Puerto serie virtual VSPD y COMPIM de Proteus. Para probar el funcionamiento del programa, puede ejecutarse un programa de terminal en el PC, como Hyperterminal de Windows, pues es fcil de usar y est al alcance de todo el mundo (debe estar instalado en Inicio/Programas/Accesorios/Comunicaciones/ y si no est, instlelo desde el CD de Windows). Si utilizamos Windows Vista o Windows 7, que no lo incorporan podemos descargarlo de aqu: hyperterminal.rar. Si iniciamos Hyperterminal creamos una nueva conexin y nos conectamos. Podemos seguir las siguientes capturas. Los dos cuadros de dilogo siguientes slo aparecen la primera vez que utilizamos Hyperterminal y no tienen importancia en nuestro caso:

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

10/18

11/02/13

Comunicacin PIC-PC va RS232

Cada vez que utilizamos Hyperterminal nos preguntar por un nombre de conexin. En este caso le hemos puesto picrs232 pero puede ser otro nombre:

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

11/18

11/02/13

Comunicacin PIC-PC va RS232

En este cuadro de dilogo seleccionamos que puerto del PC vamos a utilizar, evidentemente debemos conectar el cable serie a dicho puerto. Si el PC dispone de un slo puerto serie con toda seguridad ser COM1.

Lo configuramos a 4800 baudios, 8 bits de datos, sin bit de paridad, dos de parada y sin control de flujo.

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

12/18

11/02/13

Comunicacin PIC-PC va RS232

Ahora alimentamos el circuito. El mensaje 'Hola mundo' debe aparecer en la pantalla. Cada vez que se resetee el PIC el mensaje se imprimir de nuevo.

Cuando cerremos el programa adems de preguntarnos si queremos desconectarnos nos pregunta si deseamos guardar la conexin. Si elegimos que s la prxima vez que queramos utilizar la configuracin que hemos establecido en la conexin basta que en Inicio/Todos los programas/Accesorios/Comunicaciones/Hyperterminal/picrs232.ht

Los archivos de hyperterminal (*.ht) en Windows XP se guardan en: C:\Documents and Inicio\Programas\Accesorios\Comunicaciones\HyperTerminal\ Settings\...nombreusuario...\Men

Si vamos a esta carpeta y damos doble click al archivo se nos abrir la conexin. Adems se crea un acceso directo a la conexin en dicha carpeta que podemos pegar en el escritorio para obtener
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 13/18

11/02/13

Comunicacin PIC-PC va RS232

un rpido acceso.

TerminalTOB
Tambien se ha desarrollado un programa de terminal en Visual Basic, que adems permite crear cdigo en ensamblador para enviar mensajes, y que se encuentra aqu TerminalTOB.zip.

Cominicacin bidireccional del PIC al PC va RS232.


Se trata de utilizar el puerto serie RS232 de un PC para comunicar el PC con el PIC, de forma bidireccional. Considerando el uso de un PIC16F84 vamos a establecer: VDD: +5V. Terminal positivo de alimentacin. Un condensador de 100 nF debe ser conectado entre este terminal y masa lo mas cerca posible del microcontrolador. Esto previene acoplamientos con ruidos en la alimentacin. VSS: 0V. Terminal de alimentacin negativa (masa). OSC1: Entrada del oscilador. Conectado a un cristal de 4 MHz y a un condensador de 22 pf. El otro terminal del condensador debe ser conectado a masa. OSC2: Salida del oscilador. Conectada al otro terminal del cristal y a otro condensador de 22 pF. El otro terminal de este condensador tambin va a masa (Para 4 MHz ambos condensadores pueden ser de 15 a 33pF pero han de ser iguales). MCLR: Conectado a un circuito de reset/programacin ICSP. RA0: Salida. Conexin a la patilla 2 (RXD) del conector DB9 del PC a travs de un MAX232. RA1: Entrada: Conexin a la patilla 3 (TXD) del conector DB9 del PC a travs de un MAX232. RA2 a RA4: Salida o entrada segn la aplicacin. RB1 a RB7: Salida o entrada segn la aplicacin. RB6 y RB7 utilizados para programacin ICSP.

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

14/18

11/02/13

Comunicacin PIC-PC va RS232

Nota: El pin 5 del conector DB9 debe ser conectado a masa. El circuito base ser el siguiente:

El software necesario para la comunicacin PIC-PC es: Programa en el PIC que incluya subrutinas de control del puerto RS232. Programa en el ordenador que gestione la comunicacin, como HyperTerminal de Windows, TerminalTOB o programas hechos especficamente, por ejemplo en Visual Basic o C++. Es importante destacar que la configuracin del formato de transmisin y recepcin debe ser la misma tanto para el programa en el PIC como para el programa en el PC. En nuestro caso tomaremos: Velocidad de transmisin de 9600 baudios. La duracin de cada bit ser 104 s. Un bit de inicio o Start a nivel bajo. Dato de 8 bits. Sin paridad. Dos bits de final o Stop a nivel alto.

Libreras para RS232


La mejor forma para afrontar el programa a desarrollar es utilizando archivos INCLUDE con las subrutinas necesarias.

RS232.INC
Esta librera incluye subrutinas de control para el PIC16F84 para la comunicacin RS232: RS232_Inicializa: Configura la comunicacin RS232 para el PIC. RS232_LeeDato: El PIC lee un dato por la lnea de entrada.
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 15/18

11/02/13

Comunicacin PIC-PC va RS232

RS232_EnviaDato: El PIC enva un dato por la lnea de salida. La librera puede verse aqu, rs232.inc.

RS232MEN.INC
Esta librera incluye subrutinas para enviar mensajes de texto del PIC al PC: RS232_Mensaje: Muestra en el PC un mensaje grabado en el PIC. RS232_LineasBlanco: Muestra lneas en blanco en el PC. La librera puede verse aqu, rs232men.inc.

RETARDOS.INC
Incluye subrutinas para realizar retardos, desde 4 microsegundos hasta 20 segundos. Se han calculado para un sistema microcontrolador con un PIC trabajando con un cristal de cuarzo a 4 MHz. Como cada ciclo mquina son 4 ciclos de reloj, resulta que cada ciclo mquina tarda 4 x 1/4MHz = 1 s. La librera puede verse aqu, retardos.inc.

Ejemplo 2. Control desde PC


PICRS232Sal.asm Control de salidas mediante un PC y RS232: Desde el teclado de un ordenador se desea controlar el puerto B, segn la siguiente tabla: TECLA 0 1 2 3 4 5 6 7 Espacio SALIDA RB0 = 1 RB1 = 1 RB2 = 1 RB3 = 1 RB4 = 1 RB5 = 1 RB6 = 1 RB7 = 1 Todas a 0

La pulsacin de cualquiera de estas teclas activa el estado de las salidas correspondiente, Slo se activa una salida cada vez. El estado de las salidas aparece reflejado en un mensaje en la pantalla del ordenador. El proyecto en MPLAB picpcrs232cpp/03.rar. y el circuito en Proteus con COMPIM puede descargarse de

Los fuses se configuran con WDT desactivado, oscilador XT, sin proteccin y con POR activado.

Prueba del programa


El programa lo podemos simular o probar fsicamente, en cuyo caso seguiremos los siguientes pasos.
perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 16/18

11/02/13

Comunicacin PIC-PC va RS232

Sin conectar el circuito a la fuente de alimentacin se programa el PIC con ICPROG y JDMD con ICSP. A continuacin se conecta al puerto serie de un PC y se alimenta el circuito. Para probar el funcionamiento del programa, puede ejecutarse un programa de terminal en el PC, como Hyperterminal de Windows o tambin puede utilizarse TerminalTOB. Debe configurarse a 9600 baudios, 8 bits de datos, dos de parada y sin bit de paridad. Y muy importante, el flujo de datos debe ser: ninguno.

Ejemplo 3. Monitorizacin de datos


Se trata de leer el estado de las entradas conectadas a las lneas <RB7:RB4> del Puerto B y enviarlo por el puerto RS232 a un terminal para monitorizar el estado de los mismos. Se utilizan las interrupciones por cambio de nivel en una lnea del Puerto B, por ello las entradas deben conectarse a la parte alta del Puerto B. Tambin se activan las resistencias de pull-up del puerto B, as que basta con dejarlas al aire para ponerlas a 1 o a masa para ponerlas a 0. El programa puede verse aqu, de picpcrs232cpp/picmonitor.rar. Los fuses se configuran con WDT desactivado, oscilador XT, sin proteccin y con POR activado. El orden de las subrutinas no importa; la rutina principal debe ser la primera rutina ejecutada a partir de la direccin 0000. Cualquier caso vale, tanto si lo ponemos directamente, o como si en la direccin 0000 ponemos un 'GOTO INICIO' antes de las instrucciones., de esta manera podramos saltar la posicin de memoria 0004, que podemos reservar para una subrutina de interrupcin. El programa se ha realizado y simulado con MPLAB. Los bits de los puertos desconectados nunca deben ser puestos como entradas, sino que han de configurarse como salidas. Dejar entradas al aire puede provocar un funcionamiento imprevisible e incluso daar el PIC.

Prueba del programa


perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm 17/18

11/02/13

Comunicacin PIC-PC va RS232

El programa lo podemos simular o probar fsicamente, en cuyo caso seguiremos los siguientes pasos. Sin conectar el circuito a la fuente de alimentacin se programa el PIC con ICPROG y JDMD con ICSP. A continuacin se conecta al puerto serie de un PC y se alimenta el circuito. Para probar el funcionamiento del programa, puede ejecutarse Hyperterminal de Windows o TerminalTOB.zip. Configrelo a 9600 baudios, 8 bits de datos, dos de parada, sin bit de paridad y sin control de flujo.

Bibliografa
Libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" E. Palacios, F. Remiro y L. Lpez. Editorial Ra-Ma. www.ra-ma.es

perso.wanadoo.es/pictob/comunicacion_pic_pc_via_rs232.htm

18/18

Anda mungkin juga menyukai