Professional Documents
Culture Documents
Materia: Microcontroladores
Contenido
Objetivos generales........................................................................................................................ 3 Introduccin................................................................................................................................... 4 Practica 1 Sumador de cuatro bits .................................................................................................. 5 Objetivo de la prctica ................................................................................................................ 5 Desarrollo de la prctica ............................................................................................................. 5 Simulacin.................................................................................................................................. 6 Materiales para simulacin..................................................................................................... 6 Programa ................................................................................................................................... 7 Descripcin del Programa ....................................................................................................... 7 Practica 2 Sumador y Restador de cuatro bits ................................................................................ 9 Objetivo de la prctica ................................................................................................................ 9 Desarrollo de la prctica ............................................................................................................. 9 Simulacin................................................................................................................................ 10 Materiales para simulacin................................................................................................... 10 Programa ................................................................................................................................. 11 Descripcin del Programa ..................................................................................................... 12 Practica 3 Retardo de 100ms ........................................................................................................ 13 Objetivo de la prctica .............................................................................................................. 13 Desarrollo de la prctica ........................................................................................................... 13 Simulacin................................................................................................................................ 14 Materiales para simulacin................................................................................................... 14 Programa ................................................................................................................................. 15 Descripcin del Programa ..................................................................................................... 16 Practica 4 Rotacin de Leds .......................................................................................................... 17 Objetivo de la prctica .............................................................................................................. 17 Desarrollo de la prctica ........................................................................................................... 17 Simulacin................................................................................................................................ 18 Materiales para simulacin................................................................................................... 18 Programa ................................................................................................................................. 19 Descripcin del Programa ..................................................................................................... 21
Objetivos generales
Con las siguientes prcticas se pretende realizar distintas prcticas utilizando el PIC16F877A, esto implica que se aprenda a programar en lenguaje ensamblador utilizando las distintas instrucciones que dicho PIC nos proporciona. As como tambin realizar la simulacin de nuestro circuito para poder cargar el programa en l y de esta forma hacer visual lo que estamos realizando en nuestro programa.
Introduccin
A travs de programas realizados en lenguaje ensamblador y simulaciones se realiz cuatro distintas practicas con el objetivo de aprender a utilizar las distintas instrucciones bsicas que se le pueden ordenar a un microcontrolador en este caso para todas las practicas se utiliz el PIC16F877A. Para la realizacin de estas prcticas primeramente fue de suma importancia aprender a realizar la configuracin de los puertos I/O. As como tambin, como podemos declarar nuestras variables y el tipo de PIC a utilizar. Otro factor que es indispensable para realizar las practicas es conocer lo que realiza y la sintaxis de cada una de las instrucciones. Las prcticasque se realiz son las siguientes: y y y y Realizar la suma de dos nmeros de 4 bits. Realizar la suma o la resta de dos nmeros de 4 bits, indicando el tipo de operacin a travs de un selector. Realizar un retardo de un total de 100ms. A travs de un selector de 4 opciones, indicar el desplazamiento del encendido de un led con un retardo de 500ms.
Objetivo de la prctica
Esta prctica pretende realizar la suma de dos nmeros de cuatro bits, introducidos por el usuario a travs de dos dip-switch y teniendo como salida el encendido de leds con el resultado de la operacin. Los datos tanto de entrada como los de salidas sern en el sistema binario, los cuales sern procesados por el programa previamente cargado al microcontrolador.
Desarrollo de la prctica
La suma se realiza por medio de un programa cargado previamente al PIC en la simulacin. El programa cuenta de varias etapas las cuales son las siguientes: y y y y y y Se indica el tipo de PIC a utilizar Se indica el tipo de cristal a utilizar Se desactiva un error que aparece en la compilacin Se realiza la declaracin de variables a utilizar y en el nmero de registro donde queda almacenada. Se realiza la configuracin de los puertos en este caso en puerto B se configura como entrada y el puerto D como salida. Finalmente se realiza el programa que realizara la operacin.
Simulacin
Materiales para simulacin
y y y y
1 2 6 1
DSW1
8 7 6 5
OFF ON
1 2 3 4
U1
13 14 2 3 4 5 6 7 8 9 10 1 OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30
DIPSW_4
R1
1k
RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877A
DSW2
8 7 6 5
OFF ON
1 2 3 4
DIPSW_4
D6
LED-BLUE
D5
LED-BLUE D4
LED-BLUE
D3
LED-BLUE D2
LED-BLUE D1
LED-BLUE
Programa
;--------------------------------------------------include p16f877a.inc" list p=16f877a errorlevel 1,-302 __Config _XT_OSC &_WDT_OFF ;----------------------------------------------------------VAR1 EQU 0x20 VAR2 EQU 0x21 VAR3 EQU 0x22 RESUL EQU 0x23 ;----------------------------------------------------------BSF MOVLW MOVWF MOVLW MOVWF CLRF BCF STATUS,5 0x06 ADCON1 0xFF TRISB TRISD STATUS,5 END GOTO INICIO CLRF CLRF INICIO MOVF MOVWF ANDLW MOVWF MOVF ANDLW MOVWF SWAPF ADDWF MOVWF MOVWF PORTD PORTB PORTB,0 VAR1 0x0F VAR2 VAR1,0 0xF0 VAR3 VAR3,0 VAR2,0 RESUL PORTD
;-----------------------------------------------------------
Para que el programa realice las operacin en este caso la suma, primeramente los datos introducidos en el puerto B se mueven al registro w, los datos almacenados en registro w se mueven a una primera variable en este caso VAR1, de dicha variable se realiza un and con los nibles bajos del puerto B y se almacena en el registro w, el cual posteriormente se enva a una tercera variable en este caso VAR2. Se carga nuevamente VAR1 al registro w y se realiza un and pero ahora con los nibles altos y se almacena en VAR3. Los datos almacenados en la VAR3 quedan almacenados entonces en el nible alto del puerto B , lo cual no nos sirve si es que queremos sumar dos nmeros de 4 bits, por
lo tanto, con la instruccin SWAPF se realiza un cambio de los datos de la VAR3 de un nibles alto a un nible bajo y los datos se almacenan en w. Finalmente se realiza la suma de VAR2 con w y el resultado de la operacin se mueven al puerto B para que as podamos observarlo a travs de los leds.
Desarrollo de la prctica
La suma o la resta se realizan por medio de un programa cargado previamente al PIC en la simulacin. El programa cuenta de varias etapas las cuales son las siguientes: y y y y y y Se indica el tipo de PIC a utilizar Se indica el tipo de cristal a utilizar Se desactiva un error que aparece en la compilacin Se realiza la declaracin de variables a utilizar y en el nmero de registro donde queda almacenada. Se realiza la configuracin de los puertos en este caso en puertoA y B se configura como entrada y el puerto D como salida. Finalmente se realiza el programa que realizara la operacin.
Simulacin
Materiales para simulacin
y y y y y
1 2 6 2 1
PIC16F87A Dip-Switch de cuatro entradas Leds Resistencias (1k y 220) Dip-Switch de dos entradas
DSW1
8 7 6 5
1
RB0/I RB1 RB2 RB3/PG RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30
DIPSW _4
220
DIPSW _2
LED-BL E
D5 D4
LED-BL E
D3 D2 D1
LED-BL E
LED-BL E
LED-BL E
10
8 9 10
8 7 6 5
DIPSW _4
D6
RA0/A 0 RA1/A 1 RA2/A 2/VRE / VRE RA3/A 3/VRE RA4/ 0 KI/ 1O RA5/A 4/SS/ 2O RC0/T1OSO/T1CKI RE0/A 5/RD RC1/ 1OSI/CCP2 RE1/A 6/W R RC2/CCP1 RE2/A 7/ S RC3/SCK/SCL RC4/SDI/SDA CLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT
4 3
R2
DSW3
1 2
OS 1/ LKI OS 2/ LKO
2 3 4 5 6 7
13 14
DSW2
1 2 3 4
1 2 3 4
R1
1k
Programa
include"p16f877a.inc" list p=16f877a errorlevel 1,-302 __Config _XT_OSC &_WDT_OFF ;--------------------------------VAR1 VAR2 VAR3 EQU 0x20 EQU 0x21 EQU 0x22 SUMA GOTO SUMA GOTO RESTA MOVF MOVWF ANDLW MOVWF MOVF ANDLW MOVWF SWAPF STATUS,5 0x06 ADCON1 0xFF TRISB 0xFF TRISA TRISD STATUS,5 RESTA ADDWF MOVWF GOTO MOVF MOVWF ANDLW MOVWF MOVF ANDLW MOVWF SWAPF SUBWF MOVWF GOTO SELECC SELECC BTFSC PORTA,0 11 END PORTB,0 VAR1 0x0F VAR2 VAR1,0 0xF0 VAR3 VAR3,0 VAR2,0 PORTD SELECC PORTB,0 VAR1 0x0F VAR2 VAR1,0 0xF0 VAR3 VAR3,0 VAR2,0 PORTD
RESUL EQU 0x23 ;--------------------------------BSF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CLRF BCF
Para que el programa realice las operacin en este caso la suma o la resta, primeramente los datos introducidos en el puerto B se mueven al registro w, los datos almacenados en registro w se mueven a una primera variable en este caso VAR1, de dicha variable se realiza un and con los nibles bajos del puerto B y se almacena en el registro w, el cual posteriormente se enva a una tercera variable en este caso VAR2. Se carga nuevamente VAR1 al registro w y se realiza un and pero ahora con los nibles altos y se almacena en VAR3. Los datos almacenados en la VAR3 quedan almacenados entonces en el nible alto del puerto B , lo cual no nos sirve si es que queremos sumar dos nmeros de 4 bits, por lo tanto, con la instruccin SWAPF se realiza un cambio de los datos de la VAR3 de un nibles alto a un nible bajo y los datos se almacenan en w. Finalmente se realiza la operacin correspondiente, si es suma se utiliza la instruccin ADDWF la cual suma la VAR2 con w; si la operacin a realizar es resta se utiliza la instruccin SUBWF la cual resta VAR2 con w. El resultado de la operacin se mueven al puerto B para que as podamos observarlo a travs de los leds.
12
Desarrollo de la prctica
El retardo a se realiza por medio de un programa cargado previamente al PIC en la simulacin. El programa cuenta de varias etapas las cuales son las siguientes: y y y y y y Se indica el tipo de PIC a utilizar Se indica el tipo de cristal a utilizar Se desactiva un error que aparece en la compilacin Se realiza la declaracin de variables a utilizar y en el nmero de registro donde queda almacenada. Se realiza la configuracin del puerto D como salida. Finalmente se realiza el programa en el cual ser llamado el retardo de 100ms.
13
Simulacin
Materiales para simulacin
y y y
1 1 1
1
13 14 2 3 4 5 6 7 8 9 10 1
1/ L IN 2/ L T
RA0/AN0 RA1/AN1 RA2/AN2/ REF-/ REF RA3/AN3/ REF+ RA4/T0 I/ 1 T RA5/AN4/ / 2 T RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1 I/CCP2 RE1/AN6/ R RC2/CCP1 RE2/AN7/ RC3/ CK/ CL RC4/SDI/SDA MCLR/ pp/T V RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877A
33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30
A B C D
D1
LED-BL E
14
Programa
include"p16f877a.inc" list p=16f877a errorlevel 1,-302 __Config _XT_OSC &_WDT_OFF ;----------------------------------------------------------VAR1 EQU VAR2 EQU 0x20 0x21 CLRW MOVWF CALL GOTO TRISD RETARDO PROGRAMA
;----------------------------------------------------------RETARDO MOVLW MOVWF MOVLW DEC2 DEC1 MOVWF DECFSZ GOTO DECFSZ GOTO MOVLW MOVWF DEC3 DECFSZ GOTO d'130' VAR2 d'255' VAR1 VAR1,1 DEC1 VAR2,1 DEC2 d'52' VAR1 VAR1,1 DEC3
;------------------------------------------------------BSF MOVLW MOVWF MOVLW MOVWF CLRF BCF STATUS,5 0x06 ADCON1 0xFF TRISB TRISD STATUS,5
PROGRAMA
15
En el programa principal se carga a w el valor de 1, posteriormente ese valor se manda al puerto D donde se podr observar por medio del encendido y apagado del led el retardo de 100ms. Enseguida, se manda a llamar a la subrutina en este caso etiquetada como RETARDO (todo esto es para que el led se logre encender los 100ms). Finalmente se borra los datos cargados a w y se vuelven a enviar a w, posteriormente se manda a llamar a la subrutina RETARDO (esto realiza el apagado del led). Por medio de la instruccin GOTO se regresa a PROGRAMA. Para realizar la subrutina de retardo se realiz operaciones de tal forma que al correr el programa el retardo dure exactamente 100ms. para ello fue indispensable utilizar tres variables en este caso DEC1, DEC2 y DEC3, las cuales son utilizadas como contadores. Tambin la instruccin DECFSZ para ir decrementando nuestras variables.
16
Desarrollo de la prctica
La rotacin del encendidos de los leds se realiza por medio de un programa cargado previamente al PIC en la simulacin. El programa cuenta de varias etapas las cuales son las siguientes: y y y y y y Se indica el tipo de PIC a utilizar Se indica el tipo de cristal a utilizar Se desactiva un error que aparece en la compilacin Se realiza la declaracin de variables a utilizar y en el nmero de registro donde queda almacenada. Se realiza la configuracin del puerto B como entrada y el puerto D como salida. Finalmente se realiza el programa en el cual se indica la forma en que se rotara el encendido de los leds.
17
Simulacin
Materiales para simulacin
y y y y
1 8 1 2
U1
C1/CL IN C2/CL UT R 0/INT R 1 R 2 R 3/ R 4 R 5 R 6/ C R 7/ D
D
33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 4 3
L D-R D
D2
@
L D-R D
IC16 877
D3
@
L D-R D
D4
L D-R D
D5
@
L D-R D
D6
@
L D-R D
D7
@
L D-R D D8
L D-R D
18
& '
8 9 10
( ( $
&% %&%
2 3 4 5 6 7
R R R R R R
0/ N0 1/ N1 2/ N2/ R -/C R 3/ N3/ R 4/T0C I/C1 UT 5/ N4/ /C2 UT RC0/T1 /T1C I R 0/ N5/RD RC1/T1 I/CC 2 R 1/ N6/ R RC2/CC 1 R 2/ N7/C RC3/ C / CL RC4/ DI/ D CLR/ pp/TH RC5/ D RC6/TX/C RC7/R /DT
DI
_2
D1
0 1 2 3 4 5 6 7
R2
330
987
0( ) 0( ) ) ) 10( ) ) ) )
%$ $
&% &% (
13 14
OFF
65
1
1 2
ON
R1
Programa
include"p16f877a.inc" list p=16f877a errorlevel 1,-302 __Config _XT_OSC &_WDT_OFF ;----------------------------------------------------------VAR1 VAR2 VAR3 VAR4 VAR5 EQU 0x20 EQU 0x21 EQU 0x22 EQU 0x24 EQU0x25 DERECHA SELEC2 SELEC1 SELEC BTFSC GOTO GOTO BTFSS GOTO GOTO BTFSC GOTO GOTO MOVLW MOVWF BCF MOVLW DER BSF MOVLW MOVWF MOVLW MOVWF CLRF BCF STATUS,5 CALL 0x06 RLF ADCON1 0xFF TRISB TRISD STATUS,5 IZQUIERDA DECFSZ GOTO GOTO MOVLW MOVWF BCF MOVLW IZQ d'8' CONT1 CONT2 MOVWF CALL RRF DECFSZ S CONT1,1 DER ELEC d'8' CONT1 STATUS,0 d'128' PORTD RETARDO PORTD,0 CONT1,1 PORTD,0 RETARDO MOVWF PORTB,0 SELEC2 SELEC1 PORTB,1 SELEC IZQUIERDA PORTB,1 IDDI DERECHA d'8' CONT1 STATUS,0 d'1' PORTD
19
GOTO GOTO IDDI MOVLW MOVWF MOVWF BCF MOVLW IZQ1 MOVWF CALL RRF DECFSZ GOTO BCF MOVLW DER1 MOVWF CALL RLF DECFSZ GOTO GOTO RETARDO MOVLW MOVWF MOVLW MOVWF MOVLW
IZQ SELEC d'8' CONT1 CONT2 STATUS,0 d'128' PORTD RETARDO PORTD,0 CONT1,1 IZQ1 STATUS,0 d'1' PORTD RETARDO PORTD,0 CONT2,1 DER1 SELEC DEC4 INIC DEC2 DEC1 DEC3
MOVWF MOVLW MOVWF MOVLW MOVWF NOP DECFSZ GOTO DECFSZ GOTO DECFSZ GOTO MOVLW MOVWF NOP DECFSZ GOTO DECFSZ GOTO NOP NOP
d'100'
20
En el programa primero entra el selector el cual dependiendo la entrada del usuario va mandarlo a cuatro subrutinas diferentes los cuales son: 00 No enciende ningn led 01 Rotacin del encendido de los leds de derecha a izquierda 10 Rotacin del encendido de los leds de izquierda a derecha 11 Rotacin de los leds de derecha a izquierda y de derecha a izquierda En el programa se utilizan las instrucciones DECFSZ para decrementar las variables, RRF y RLF para rotar los bits hacia la derecha y hacia la izquierda respectivamente, BTFSS y BTFSC para hacer las condicionales del selector. As como tambin se aplica un retardo de 500ms, el cual es el tiempo de encendido del led antes de que rote y encienda el siguiente led
21