You are on page 1of 12

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

Laboratorio de Sistemas Digitales


PRCTICA No. 8 Arquitectura de Microcontroladores PIC !"8##A $laborador %or& Ale'andro (ambrano Diego )ela "ec*a de entrega del in+orme& ,! no-iembre . "ec*a de elaboraci/n de la %r0ctica& ,1 no-iembre ,1 .

Contenido
1 O !etivo"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1 # In$orme""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1 #"1 Introduccin"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1 #"# %rela oratorio"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""& #"' (a oratorio"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""& ' )onclusiones"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""11 * +ecomendaciones"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1# , +e$erencias - .i liogra$a""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1# / 0ne1os""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1#

2b'eti-o
Introducir la arquitectura de los microcontroladores PIC16F877A. Aprender a utilizar el entorno de desarrollo MPLAB X I ! para el desarrollo de aplicaciones del PIC16F877A. Familiarizar al estudiante con la pro"ramaci#n de microcontroladores a ni$el ensam%lador. Introducir el mane&o de puertos di"itales del microcontrolador

, In+orme
2.1 Introduccin
Los microcontroladores son dispositi$os pro"rama%les que adem's de realizar procesamiento de datos( pro$een de inter)aces inte"radas para interactuar con otros dispositi$os o con *ard+are e,terno. Al"unos e&emplos son de estas 1

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

inter)aces son- puertos de comunicaci#n serial( puertos de comunicaci#n inal'm%rica( con$ersores A. ( puertos di"itales( contadores( relo&es / "eneradores de P0M. !n esta pr'ctica se introduce la arquitectura del microcontrolador PIC 16F877A( el cual es un dispositi$o de 12 pines. La Fi"ura 1 muestra un dia"rama de %loques del micro3arquitectura de este dispositi$o. La arquitectura del dispositi$o est' con)ormada de 45 instrucciones que se e&ecutan en un solo ciclo( 4 modos de direccionamiento 6directo( indirecto / relati$o7 / un stoc8 de 8 ni$eles para almacenamiento temporal de in)ormaci#n.

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

!l set de instrucciones puede clasi)icarse en tres cate"or9as1. :peraciones orientadas a %/tes ;. :peraciones orientadas a %its 4. :peraciones de literales / control. Cada instrucci#n est' codi)icada en 11 %its de acuerdo al )ormato que se muestra en la Fi"ura ;. Para las instrucciones tipo %/te( ) denota un re"istro del )ile re"ister / d denota donde de%e ser almacenado el resultado de la operaci#n. <i d=2 el resultado es almacenado en el re"istro 0 / si es i"ual a 1 es almacenado en el re"istro ). Para las instrucciones tipo %it( % representa el %it a ser operado / ) el re"istro que contiene a ese %it. Finalmente para las instrucciones de literales o control 8 representa un $alor de 8 u 11 %its. Cada ciclo de instrucci#n requiere de 1 ciclos de relo& para ser e&ecutada. Por e&emplo si se utiliza un oscilador de 1 M>z( cada instrucci#n requiere de 1 us para ser e&ecutada por el *ard+are. La Fi"ura 4 resume el set de instrucciones completo de este dispositi$o. ?oda instrucci#n e&ecuta una secuencia @ead3 Modi)/30rite 6@M07 so%re un re"istro. !sto si"ni)ica que cada $ez que una instrucci#n opere so%re un re"istro( el procesador leer' el re"istro( lue"o modi)icar' el re"istro colocando ceros en todos sus %its / lue"o almacenar' el resultado de la operaci#n. !sto se realiza aAn en operaciones de lectura.

'

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

!l PIC 16F877A di$ide su memoria en dos se"mentos. !l primer se"mento contiene la memoria de pro"rama / al stac8. La memoria de pro"rama de 8B,11 que $a desde la direcci#n 2222* *asta la 1FFF* / el stac8 se implementa como un %loque de memoria independiente( como se muestra en la !rrorC @e)erence source not )ound.. A su $ez la memoria de pro"rama esta di$idida en tres espacios de memoria!l se"undo se"mento de memoria corresponde a la memoria de datos( la cual est' di$ida en 1 %ancos con un total de 468,8 re"istros. !stos %ancos contienen @e"istros de Prop#sito Deneral 6DP@7 / re"istros de )unciones especiales 6<F@7. Los primeros 4; re"istros de cada %anco est'n ocupados por el <F@ / a continuaci#n los DP@. La Fi"ura 5 muestra el mapa de memoria de datos. Los %its @PE1-2F del re"istro de estado 6<?A?G< @!DI<?!@ <@7 permiten seleccionar en que %anco se est' tra%a&ando.

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

!l %anco de re"istros muestra las direcciones de la memoria e,puestas en el si"uiente "r')ico-

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

2.2 Prelaboratorio
Como tra%a&o pre$io se realiz# un documento descri%iendo los %its de re"istro del <F@( ad&unto como Ane,o. ?am%ien se realizo un c#di"o en assem%ler para ser implementado en MPLAB X I !( el cual esta%lece que pines del pic $an a ser usados como entrada / cuales con salidasSTART BANKSEL PORTC CLRF PORTC BANKSEL TRISC CLRF TRISC ; ; ; ; SELECCIONAR PORT C DE BANCO LIMPIAR PORT C A CEROS SELECCIONAR BANCO TRISC PONER TRISC EN 0 (OUTPUT)

BANKSEL PORTB ; SELEC PORT B DE BANCO CLRF PORTB ; LIMPIAR PORT B BANKSEL TRISB ; SELEC TRIS B DE BANCO MOVLW B'00001111' MOVWF TRISB ; MOVER LITERAL ANTERIOR A TRISB BANKSEL OPTION_REG BCF OPTION_REG,7 ; HABILITO PULL UPS END

2.3 Laboratorio
!n el la%oratorio se realizo un c#di"o para implementar un decodi)icador de BC a un led 7 se"mentos. !l c#di"o realizado )ue!"#$%&'( )1*+,77-."#$ ; TODO INSERT CONFIG CODE HERE USING CONFIG BITS GENERATOR __CONFIG _FOSC_/T 0 _WDTE_OFF 0 _PWRTE_OFF 0 _BOREN_ON 0 _LVP_OFF 0 _CPD_OFF 0 _WRT_OFF 0 _CP_OFF RES_VECT GOTO )2372-9 CODE 010000 START ; )23$(4432 2(4(5 6($532 ; 73 53 8(7"##"#7 3+

; TODO ADD INTERRUPTS HERE IF USED MAIN_PROG CODE )2372-9 START BANKSEL PORTC ; %(5 %"#:(2 )%-$( 9-"#

; SELECCIONAR PORT C DE BANCO

&

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

CLRF PORTC BANKSEL TRISC CLRF TRISC

; LIMPIAR PORT C A CEROS ; SELECCIONAR BANCO TRISC ; PONER TRISC EN 0 (OUTPUT)

BANKSEL PORTB ; SELEC PORT B DE BANCO CLRF PORTB ; LIMPIAR PORT B BANKSEL TRISB ; SELEC TRIS B DE BANCO MOVLW B'00001111' MOVWF TRISB ; MOVER LITERAL ANTERIOR A TRISB BANKSEL OPTION_REG BCF OPTION_REG,7 ; HABILITO PULL UPS BCF STATUS, RP0 ; SELECCIONAR BANCO 0 BCF STATUS, RP1 ; SELECCIONAR BANCO 0 MOVLW 01;0 MOVWF FSR ; CAMBIAR DIRECC FSR A 01;0 MOVLW 0101 MOVWF INDF ; MOVIENDO DATO REGISTRO W

INCF FSR,1 ; SUMADNO UNO AL FSR APUNTA OTRA DIRECCION ; T !0 MOVLW 01<F MOVWF INDF INCF FSR,1 ; T !1 MOVLW 011; MOVWF INDF INCF FSR,1 ; T !; MOVLW 010* MOVWF INDF INCF FSR,1 ; T != MOVLW 01<C MOVWF INDF INCF FSR,1 ; T !< MOVLW 01;< MOVWF INDF INCF FSR,1 ; T !> MOVLW 01;0 MOVWF INDF 2

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

INCF FSR,1 ; T !* MOVLW 010F MOVWF INDF INCF FSR,1 ; T !7 ; MOVLW 01=0 ; MOVWF FSR ; T ! 7 MOVLW 0100 ; T !, MOVWF INDF INCF FSR,1 MOVLW 010C ; T !? MOVWF INDF LA@O MOVLW 01;0 MOVWF FSR ; REGRESAR FSR DIRECCION ;0 ; LEO PORTB A ALMACENO EN W SUMA W CON FSR LEE LO BUE APUNTA FSR A ALMACENA EN W MUEVE W A PORT C

MOVF PORTB,0 ADDWF FSR,1 ; MOVF INDF,0 ; MOVWF PORTC ;

GOTO LA@O ; GENERAR LOOP END

Para @ealizar el mane&o de 1 displa/ de 7 se"mentos se realiza lo si"uienteComo se de%en encender 1 displa/ para poder mostrar cualquier numero entre 2 HHHH. Para esto podemos usar un transistor PIP como s+itc* de acti$aci#n / usamos tam%iJn un CI 7117. !l *ard+are a usarse ser' el si"uiente-

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

Las entradas del dip s+itc* ser'n las mismas que para el presente pro/ecto( el c#di"o en %asic para un numero es!"#$%&'( )1*+,77-."#$ ; TODO INSERT CONFIG CODE HERE USING CONFIG BITS GENERATOR __CONFIG _FOSC_/T 0 _WDTE_OFF 0 _PWRTE_OFF 0 _BOREN_ON 0 _LVP_OFF 0 _CPD_OFF 0 _WRT_OFF 0 _CP_OFF RES_VECT GOTO )2372-9 CODE 010000 START ; )23$(4432 2(4(5 6($532 ; 73 53 8(7"##"#7 3+

; TODO ADD INTERRUPTS HERE IF USED MAIN_PROG CODE )2372-9 START BANKSEL PORTC CLRF PORTC BANKSEL TRISC CLRF TRISC ; ; ; ; ; %(5 %"#:(2 )%-$( 9-"#

SELECCIONAR PORT C DE BANCO LIMPIAR PORT C A CEROS SELECCIONAR BANCO TRISC PONER TRISC EN 0 (OUTPUT)

BANKSEL PORTB ; SELEC PORT B DE BANCO CLRF PORTB ; LIMPIAR PORT B BANKSEL TRISB ; SELEC TRIS B DE BANCO MOVLW B'00001111' MOVWF TRISB ; MOVER LITERAL ANTERIOR A TRISB BANKSEL OPTION_REG BCF OPTION_REG,7 ; HABILITO PULL UPS BCF STATUS, RP0 ; SELECCIONAR BANCO 0

14

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

BCF STATUS, RP1 ; SELECCIONAR BANCO 0 MOVLW 01;0 MOVWF FSR ; CAMBIAR DIRECC FSR A 01;0 MOVLW 0101 MOVWF INDF ; MOVIENDO DATO REGISTRO W

INCF FSR,1 ; SUMADNO UNO AL FSR APUNTA OTRA DIRECCION ; T !0 LA@O MOVLW 01;0 MOVWF FSR ; REGRESAR FSR DIRECCION ;0 ; LEO PORTB A ALMACENO EN W SUMA W CON FSR LEE LO BUE APUNTA FSR A ALMACENA EN W MUEVE W A PORT C

MOVF PORTB,0 ADDWF FSR,1 ; MOVF INDF,0 ; MOVWF PORTC ;

GOTO LA@O ; GENERAR LOOP END !n el c#di"o pre$io solo se tiene que instaurar el orden para que se enciencdan cada uno de los nAmeros con su codi)icaci#n en >e,adecimal( es decir almacenamos los nAmeros en el orden que de%er9an ser mostrados.

. Conclusiones
!sta pr'ctica consisti# en la implementaci#n en un microcontrolador( el PIC 16F877A( de una codi)icaci#n de 1 %its a 7 se"mentos. !l la%oratorio )ue un J,ito( /a que se pudo realizar la implementaci#n. Primero se escri%i# el c#di"o( / lue"o se lo implement#. La implementaci#n tu$o un "rado de di)icultad moderado( por lo que con cierto es)uerzo se pudo realizar. !ste la%oratorio re)orz# nuestros conocimientos acerca del tema tratado( anteriormente estudiado en clase. !ste la%oratorio( se aprendi# a con)i"urar los puertos del PIC para realizar el tra%a&o deseado( / el c#di"o necesario para implementarlo. Por ello con este la%oratorio se aprendi# a utilizar el entorno de desarrollo MPLAB X I ! para el desarrollo de aplicaciones para el desarrollo de aplicaciones del PIC16F877A( tam%iJn se pudo )amiliarizar con la pro"ramaci#n de microcontroladores a ni$el de ensam%lador( por lo que est' pr'ctica cumpli# con nuestros o%&eti$os.

11

Departamento de Ingeniera Elctrica/Electrnica, Universidad San Francisco de Quito

3 Recomendaciones 4 Re+erencias 5 6ibliogra+7a


>arris( a$id. Digital design and computer architecture. ;nd ed. 0alt*amMor"an Bau)mann( ;214. Print.

! Ane8os

1#

You might also like