comunicacion pc pic

25
2010 COMUNICACIÓN PC – PIC16F876A Redes Industriales Ing. Isidro Domínguez SANDY MANUELA SÁNCHEZ LÓPEZ SERGIO ABEL GÓMEZ JIMÉNEZ KARINA GARCÍA JIMÉNEZ INGENIERÍA MECATRÓNICA 8A COMUNICACIÓN PC A PIC LLLLLLLLLLL UNIVERSIDAD TECNOLÓGICA DE CAMPECHE

Upload: sandy-sanchez-lopez

Post on 02-Jul-2015

545 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Comunicacion Pc Pic

2010

COMUNICACIÓN PC – PIC16F876ARedes IndustrialesIng. Isidro Domínguez

SANDY MANUELA SÁNCHEZ LÓPEZSERGIO ABEL GÓMEZ JIMÉNEZKARINA GARCÍA JIMÉNEZ

INGENIERÍA MECATRÓNICA8A

COMUNICACIÓN PC A PIC LLLLLLLLLLL

UNIVERSIDAD TECNOLÓGICA DE CAMPECHE

Page 2: Comunicacion Pc Pic

INTRODUCCIÓN

En las prácticas anteriores se observa cómo se realiza la comunicación entre el puerto RS

232 y el puerto USB. En esta práctica se observará la transmisión que se realiza de la PC al

PIC 16f876A. La transmisión se realiza del puerto USB al puerto RS232 de la placa S –

120 de Solaris digital, el envío de datos se realiza en el programa NIPLE 5.2 el cual es

como un interfaz gráfico en donde se puede visualizar el envío y recepción de los paquetes

de bits. El envío se realiza de forma decimal y la recepción se visualiza de manera binaria,

en forma binaria y de acuerdo a la lógica de 1 es voltaje y 0 es bajo voltaje, se realiza el

envío a las salidas del PIC y de visualiza en los destellos de los leds. Al mismo tiempo que

recibe, envía la información de los datos que está recibiendo y los envía a la PC

mostrándolo así en la pantalla del NIPLE.

OBJETIVO

El objetivo es transmitir los datos de la maquina al pic y que se muestre en unos leds esa

información retorna a la pc de nuevo, comprender como es que esta trabajando el pic y la

pc en sincronía.

Page 3: Comunicacion Pc Pic

MATERIALES Y EQUIPOS UTILIZADOS

1 pic16f876A

1 Cristal de cuarzo

2 capacitores de 22 Pf

8 resistencias 220 Ohms

1 Resistencia 10Kh

8 leds

PC

Programador

1 push button

1 protoboard

Tarjeta Solaris – 120

Cable RS 232 a USB

Cable UTP

DESARROLLO DE LA PRÁCTICA

Primero se realiza el programa en el software NIPLE 5.2 el cual se muestra a continuación

y se describe cómo funciona.

Page 4: Comunicacion Pc Pic

Primero se declaran los registros que es enviar y recibir, el segundo paso es declarar los

puertos como estrada y como salida en esta ocasión el bit 8 del puerto C es entrada y los

demás son salidas el puerto B se toma todo como salida ya que alli se mostrara la

información, tercer paso recibir la información que envia la pc lo configuramos y se

configura la interrupción el cual solo permite recibir los datos y no deja hacer ninguna otra

función

Cuarto paso se manda a escribir esa información en el puerto B, el quinto se mandan a

pagar los Led y el ultimo paso se envía la información de nuevo a la PC.

Page 5: Comunicacion Pc Pic

A continuación se muestra el programa realizado en MPLAB

;------------------------------------------------------------

; Código assembler generado por Niple V5.2.0

; Proyecto: 41

; Autor: Sandy Sánchez López, Sergio Abel Jiménez Gómez, Karina García Jiménez

; Fecha: 15/03/2010

; PIC: 16F876A

; Velocidad de reloj: 4 Mhz

; Descripcion:

;------------------------------------------------------------

LIST P=PIC16F876A

_XT_OSC equ 0x3FFD

_DEBUG_OFF equ 0x3FFF

_WDT_OFF equ 0x3FFB

_PWRTE_ON equ 0x3FF7

_BODEN_OFF equ 0x3FBF

_LVP_OFF equ 0x3F7F

_CPD_OFF equ 0x3FFF

_CP_OFF equ 0x3FFF

_WRT_ENABLE_OFF equ 0x3DFF

Page 6: Comunicacion Pc Pic

__config _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON &

_BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_ENABLE_OFF & _CP_OFF

;------------------------------------------------------------

; Declaración de Registros

;------------------------------------------------------------

w equ 0x0000

status equ 0x0003

portb equ 0x0006

portc equ 0x0007

pclath equ 0x000a

intcon equ 0x000b

pir1 equ 0x000c

rcsta equ 0x0018

txreg equ 0x0019

rcreg equ 0x001a

_np_w equ 0x0020

recibir equ 0x0021

enviar equ 0x0022

_np_chks_1 equ 0x0025

_np_chks_2 equ 0x0026

_np_aviso equ 0x0027

_np_temp1 equ 0x0028

_np_temp2 equ 0x0029

_np_status equ 0x002f

Page 7: Comunicacion Pc Pic

_np_tiempo equ 0x0031

_np_tiempo1 equ 0x0033

_np_tiempo2 equ 0x0034

_np_tiempo3 equ 0x0035

_np_banderas2 equ 0x0039

opcion equ 0x0081

trisb equ 0x0086

trisc equ 0x0087

pie1 equ 0x008c

txsta equ 0x0098

spbrg equ 0x0099

;------------------------------------------------------------

; Declaración de Bits

;------------------------------------------------------------

c equ 0 ;carry / borrow bit

cren equ 4 ;

gie equ 7 ;habilitador general de interrupciones

peie equ 6 ;ee write complete interrupt enable bit

rcie equ 5 ;

rcif equ 5 ;bandera de interrupcion por fin de recepción usart.

rp0 equ 5 ;registrer bank select bit

rp1 equ 6 ;registrer bank select bit

spen equ 7 ;

Page 8: Comunicacion Pc Pic

txif equ 4 ;bandera de interrupcion por fin de transmisión usart.

z equ 2 ;bit cero

sub_inte equ 0 ;bandera de subrrutina cancelada por interrupcion.

;------------------------------------------------------------

; Inicio

;------------------------------------------------------------

reset org 0

goto paso2

org 4

movwf _np_w

swapf _np_w,1

movf status,w

bcf status,rp0 ;cambiar a banco 0

bcf status,rp1

movwf _np_status

bcf status,rp0 ;cambiar a banco 0

bcf status,rp1

btfsc pir1,rcif

goto interrupción_rc

salir_interrupcion

bsf _np_banderas2,sub_inte ;activar la bandera de rutina cancelada por interrupcion

movf _np_status,w

Page 9: Comunicacion Pc Pic

movwf status

swapf _np_w,w

retfie

;------------------------------------------------------------

; inicio de la interrupción por rc usart

;------------------------------------------------------------

interrupción_rc_salir

bcf pir1,rcif

goto salir_interrupcion

interrupción_rc

inte_rc_usart_2_esperar_byte_1

bcf status,rp0 ;cambiar a banco 0

bcf status,rp1

btfss pir1,rcif

goto inte_rc_usart_2_esperar_byte_1

movf rcreg,w

movwf recibir

bcf pir1,rcif

inte_rc_usart_2_esperar_byte_2

btfss pir1,rcif

goto inte_rc_usart_2_esperar_byte_2

movf rcreg,w

Page 10: Comunicacion Pc Pic

movwf enviar

bcf pir1,rcif

inte_rc_usart_2_esperar_byte_3

btfss pir1,rcif

goto inte_rc_usart_2_esperar_byte_3

movf rcreg,w

movwf _np_chks_2

bcf pir1,rcif

inte_rc_usart_2_esperar_byte_4

btfss pir1,rcif

goto inte_rc_usart_2_esperar_byte_4

movf rcreg,w

movwf _np_chks_1

bcf pir1,rcif

clrf _np_chks_1

clrf _np_chks_2

clrf _np_aviso

clrf _np_temp1

clrf _np_temp2

movf recibir,w

movwf _np_temp1

call checksum

movf enviar,w

movwf _np_temp1

Page 11: Comunicacion Pc Pic

call checksum

inte_rc_usart_3

goto interrupción_rc_salir

;------------------------------------------------------------

; programa principal

;------------------------------------------------------------

paso2

movlw b'10000000' ;configurar el puerto c como esssssss

bsf status,rp0 ;cambiar a banco 1

bcf status,rp1

movwf trisc

movlw b'00000000' ;configurar el puerto b como ssssssss

movwf trisb

paso4

movlw b'00100110'

bsf status,rp0 ;cambiar a banco 1

bcf status,rp1

movwf txsta

movlw .25

movwf spbrg

bcf status,rp0 ;cambiar a banco 0

Page 12: Comunicacion Pc Pic

bsf rcsta,spen ;habilitacion del puerto de comunicacion serial

bsf rcsta,cren

bsf intcon,gie ;activar habilitador general de interrupciones.

bsf intcon,peie ;activar habilitador general de interrupciones por perifericos.

bsf status,rp0 ;cambiar a banco 1

bsf pie1,rcie ;activar interrupción por fin de recepción por usart.

;escribir en el puerto b

bcf status,rp0 ;cambiar a banco 0

movf enviar,w

movwf portb

movlw .1 ;temporizador 1 seg

call tiempo_1_255_mega_c

;escribir en el puerto b

movlw d'0'

movwf portb

bcf intcon,gie ;desactivar habilitador general de interrupciones.

movf enviar,w ;enviar el dato enviar

movwf _np_temp1

call rs232_tc6_9600

bsf intcon,gie ;activar habilitador general de interrupciones.

movlw .1 ;temporizador 1 seg

call tiempo_1_255_mega_c

goto paso4 ;cierra el ciclo

Page 13: Comunicacion Pc Pic

;------------------------------------------------------------

; Declaración de Subrutinas

;------------------------------------------------------------

checksum

;calculo de checksum

bcf status,rp0 ;cambiar a banco 0

bcf status,rp1

btfsc _np_aviso,0

goto checksum_1

bsf _np_aviso,0

movlw .255

movwf _np_chks_1

movwf _np_chks_2

checksum_1

movf _np_temp1,w

xorwf _np_chks_2,1

clrf _np_temp2

checksum_2

incf _np_temp2,1

movf _np_temp2,w

bcf status,2

sublw .9

btfsc status,2

Page 14: Comunicacion Pc Pic

goto checksum_salir

bcf status,0

rrf _np_chks_1,1

rrf _np_chks_2,1

btfss status,0

goto checksum_2

movlw b'00000001'

xorwf _np_chks_2,1

movlw b'10100000'

xorwf _np_chks_1,1

goto checksum_2

checksum_salir

return

tiempo_1_255_mega_c

movwf _np_tiempo

goto tiempo_1_255_mega_c_1

tiempo_1_255_mega_c_bucle2

nop

nop

nop

nop

nop

nop

Page 15: Comunicacion Pc Pic

nop

tiempo_1_255_mega_c_1

movlw .10

movwf _np_tiempo1

tiempo_1_255_mega_c_bucle1

nop

nop

movlw .99

movwf _np_tiempo2

tiempo_1_255_mega_c_bucle0

nop

nop

nop

movlw .200

movwf _np_tiempo3

tiempo_1_255_mega_c_bucle

nop

nop

decfsz _np_tiempo3,1

goto tiempo_1_255_mega_c_bucle

nop

nop

nop

decfsz _np_tiempo2,1

Page 16: Comunicacion Pc Pic

goto tiempo_1_255_mega_c_bucle0

nop

nop

nop

decfsz _np_tiempo1,1

goto tiempo_1_255_mega_c_bucle1

decfsz _np_tiempo,1

goto tiempo_1_255_mega_c_bucle2

return

rs232_tc6_9600

;enviar un dato rs232 por portc,6 (por usart)

movlw b'00100110'

bsf status,rp0 ;cambiar a banco 1

bcf status,rp1

movwf txsta

movlw .25

movwf spbrg

bcf status,rp0 ;cambiar a banco 0

bsf rcsta,spen

movf _np_temp1,w

movwf txreg

rs232_tc6_9600_eperar

Page 17: Comunicacion Pc Pic

btfss pir1,txif

goto rs232_tc6_9600_eperar

return

End

Page 18: Comunicacion Pc Pic

Ahora se mostrará la transferencia de datos a través dela pc y el pic

Page 19: Comunicacion Pc Pic

Como se mostró en las figuras anteriores se pudo transmitir datos de la PC al pic y viceversa.

Page 20: Comunicacion Pc Pic

CONCLUSIÓN

La práctica anterior se llevo a cabo utilizando los recursos que están a nuestro alcance, se

comprendió como se transmiten los datos lo principal de esto es la programación uno se

cumplió con los objetivos puestos anteriormente, y se notó como la representación de bits

en el protoboard y como lo mostraba el programa se cumplió y se muestra de manera

práctica en el video anexo a este trabajo. Entonces con esto concluimos nuestra práctica

realizando el objetivo que era hacer la comunicación entre el PC y el PIC16F876A.