4.-Ejercicios Resueltos de Microcontroladores

March 7, 2017 | Author: Jhon Pichihua H | Category: N/A
Share Embed Donate


Short Description

Download 4.-Ejercicios Resueltos de Microcontroladores...

Description

Ejercicios resueltos de Microcontroladores NIVEL 0 1.

Hacer un programa en Assembler para encender y apagar un led conectado al pin RA0 del Microcontrolador 16F84A. Solución:

LIST P=16F84A INCLUDE CONT1 EQU 0X20 CONT2 EQU 0X21 ORG 0x00 GOTO INICIO ORG 0x05 INICIO bsf STATUS,RP0 clrf TRISA bcf STATUS,RP0 ENCLED bsf PORTA,0 call RETARDO bcf PORTA,0 call RETARDO GOTO ENCLED RETARDO movlw 0xff movwf CONT1 REP1 movlw 0xff movwf CONT2 REP2 decfsz CONT2,1 GOTO REP2 decfsz CONT1,1 GOTO REP1 RETURN END 2.

C1 1nF

X1 C2

U1 16 15 4

1nF

OSC1/CLKIN OSC2/CLKOUT

RA0 RA1 RA2 RA3 RA4/T0CKI

MCLR

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3

R2 330

6 7 8 9 10 11 12 13

D1

PIC16F84A

Hacer un programa en Assembler de tal manera que por el puerto B se obtenga el dato complementado de del dato que ingresa por el puerto A del Microcontrolador PIC 16f84A. Solución

LIST P=16f84A INCLUDE "P16F84A.INC" COMPLEMENTO EQU 0X0C ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf STATUS,5 Movlw 0XFF Movwf TRISA Clrf TRISB Bcf STATUS,5 BUCLE movf PORTA,0 Movwf COMPLEMENTO Comf COMPLEMENTO,0 Movwf PORTB GOTO BUCLE END

0 1 0 1 0

C1 1nF

X1 C2

U1 16 15 4

1nF

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

PIC16F84A

17 18 1 2 3 6 7 8 9 10 11 12 13

1 0 1 0 1

3.

Hacer un código en Assembler para obtener por el puerto B el dato del puerto A multiplicado por tres Solución:

1 1 0 0 0

LIST P=16F84A INCLUDE "P16F84A.INC" SUMA1 EQU 0X0C SUMA2 EQU 0X0D ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf STATUS,5 movlw 0XFF movwf TRISA clrf TRISB bcf STATUS,5

U1 16 15

OSC1/CLKIN OSC2/CLKOUT

4

clrf PORTA clrf PORTB ;……………………………………. BUCLE movf PORTA,0 addwf PORTA,0 movwf SUMA1

RA0 RA1 RA2 RA3 RA4/T0CKI

MCLR

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

6 7 8 9 10 11 12 13

PIC16F84A

1 0 0 1 0 0 0 0

movf PORTA,0 addwf SUMA1,0 movwf PORTB GOTO BUCLE END

4.

17 18 1 2 3

Hacer un código en Assembler para obtener por el puerto B el dato del puerto A intercambiado los nibles alto y bajo. Solución:

LIST P=16F84A INCLUDE ;……………………………………... INTERCAMB EQU 0X0C ORG 0X00 GOTO INICIO ORG 0X05 ;…………………………………..... INICIO bsf STATUS,5 movlw 0xff movwf TRISA clrf TRISB bcf STATUS,5 ;……………………………………… BUCLE movf PORTA,0 movwf INTERCAMB swapf INTERCAMB,0 movwf PORTB GOTO BUCLE END

R2 R3 R4 R5 R6 10k 10k 10k 10k 10k

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3 6 7 8 9 10 11 12 13

PIC16F84A

R7 R8 R9 R10R11R12R13R14 330 330 330 330 330 330 330 330

5.

Hacer un código en Assembler para obtener por el puerto B el dato del puerto A desplazando un bit hacia la izquierda, por la derecha entra un “1” ejemplo A= xxx11001 entonces B=xx110011. Solución:

LIST P=16F84A INCLUDE AUX EQU 0X0C ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf STATUS,5 movlw 0xff movwf TRISA clrf TRISB bcf STATUS,5 clrf PORTB BUCLE movf PORTA,0 movwf AUX rlf AUX,1 bsf AUX,0 movf AUX,0 movwf PORTB GOTO BUCLE END

6.

R2 R3 R4 R5 R6 10k 10k 10k 10k 10k

U1 16 15

OSC1/CLKIN OSC2/CLKOUT

4

MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3 6 7 8 9 10 11 12 13

PIC16F84A

R7 R8 R9 R10R11R12R13R14 330 330 330 330 330 330 330 330

Hacer un código en Assembler para rotar hacia la izquierda un bit activado en “1” visualizara por el puerto B. Solución:

LIST P=16F84A INCLUDE CONTA1 EQU 0X0C CONTA2 EQU 0X0D ORG 0X00 GOTO INICIO INICIO bsf STATUS,5 clrf TRISB bcf STATUS,5 movlw 0x01 movwf PORTB BUCLE call RETARDO rlf PORTB,1 GOTO BUCLE RETARDO movlw 0xff movwf CONTA1 r1 movlw 0xff movwf CONTA2 r2 decfsz CONTA2,1 GOTO r2 decfsz CONTA1,1 GOTO r1 return END

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3 6 7 8 9 10 11 12 13

PIC16F84A

R7 R8 R9 R10R11R12R13R14 330 330 330 330 330 330 330 330

7.

Hacer un código en Assembler para rotar hacia la derecha dos bits activados en “11” visualizar por el puerto B.

Solución: ; inicio del programa LIST P=16F84A INCLUDE ; Declaración de registros de propósito general CONTA1 EQU 0X0C CONTA2 EQU 0X0D ; Ubicación en la memoria de programa ORG 0X00 GOTO INICIO ORG 0X05 ; Configuración de puertos INICIO bsf STATUS,5 clrf TRISB bcf STATUS,5 ; Carga de dato al puerto B clrf PORTB movlw 0xc0 movwf PORTB ; inicio del bucle infinito BUCLE call RETARDO rrf PORTB,1 GOTO BUCLE ; retardo para desplazamiento a la derecha RETARDO movlw 0xff movwf CONTA1 r1 movlw 0xff movwf CONTA2 r2 decfsz CONTA2,1 GOTO r2 decfsz CONTA1,1 GOTO r1 return END

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3 6 7 8 9 10 11 12 13

PIC16F84A

R7 R8 R9 R10R11R12R13R14 330 330 330 330 330 330 330 330

8.

Hacer un código en Assembler para un contador binario ascendente visualizar por el puerto B.

Solución: ; Inicio del programa LIST P=16F84A INCLUDE ; Declaración de registros de propósito general CONTA1 EQU 0X0F CONTA2 EQU 0X10 ; Ubicación en la memoria de programa ORG 0x00 GOTO INICIO ORG 0x05 ; Configuración de puertos INICIO bsf STATUS,5 clrf TRISB bcf STATUS,5 ; Poner a cero el puerto B clrf PORTB CALL RETARDO ; Incrementar puerto B BUCLE incf PORTB,1 CALL RETARDO GOTO BUCLE ; Retardo para conteo ascendente RETARDO clrf CONTA1 REP1 clrf CONTA2 REP2 incfsz CONTA2,1 GOTO REP2 incfsz CONTA1,1 GOTO REP1 RETURN END

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3 6 7 8 9 10 11 12 13

PIC16F84A

R7 R8 R9 R10R11R12R13R14 330 330 330 330 330 330 330 330

9.

Hacer un código en Assembler para un contador binario descendente visualizar por el puerto B. Solución:

; Inicio del p´rograma LIST P=16F84A INCLUDE ; Declaración de registros de propósito general CONTA1 EQU 0X0F CONTA2 EQU 0X10 ; Ubicación en la memoria de programa ORG 0x00 GOTO INICIO ORG 0x05 ; Configuración de puertos INICIO bsf STATUS,5 clrf TRISB bcf STATUS,5 ; Cargar datos al puerto B movlw 0xff movwf PORTB CALL RETARDO ; Inicio del bucle infinito BUCLE decf PORTB,1 CALL RETARDO GOTO BUCLE ; Retardo para conteo descendente RETARDO clrf CONTA1 REP1 clrf CONTA2 REP2 incfsz CONTA2,1 GOTO REP2 incfsz CONTA1,1 GOTO REP1 RETURN END

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

R1 10k

17 18 1 2 3 6 7 8 9 10 11 12 13

PIC16F84A

R7 R8 R9 R10R11R12R13R14 330 330 330 330 330 330 330 330

10. Hacer un código en Assembler para luces secuenciales llamado desde una tabla mostrar por el puerto B. Solución:

17 18 1 2 3 6 7 8 9 10 11 12 13

1 1 0 0 1 1 0 0

LIST P=16F84A INCLUDE CONTA1 EQU 0X0C CONTA2 EQU 0X0D CONTA3 EQU 0X0E BYTE EQU 0X0F U1 ORG 0X00 GOTO INICIO 16 OSC1/CLKIN RA0 ORG 0X05 15 OSC2/CLKOUT RA1 INICIO bsf STATUS,5 RA2 clrf PORTB 4 MCLR RA3 bcf STATUS,5 RA4/T0CKI clrf PORTB clrf BYTE RB0/INT BUCLE btfsc BYTE,4 RB1 clrf BYTE RB2 movf BYTE,0 RB3 call TABLA movwf PORTB RB4 ; Rutina del retardo RB5 movlw D'20 RB6 movwf CONTA1 RB7 LOOP1 movwf D'20 PIC16F84A movwf CONTA2 LOOP2 movlw D'50 movwf CONTA3 LOOP3 decfsz CONTA3,1 GOTO LOOP3 decfsz CONTA2,1 GOTO LOOP2 decfsz CONTA1,1 GOTO LOOP1 incf BYTE,1 GOTO BUCLE ; Retorno de w con el valor binario correspondiente. TABLA addwf PCL,1 retlw B'10000001' retlw B'01000010' retlw B'00100100' retlw B'00011000' retlw B'00100100' retlw B'01000010' retlw B'10000001' retlw B'11111111' retlw B'00000000' retlw B'11111111' retlw B'00000000' retlw B'11111111' retlw B'11001100' retlw B'00110011' retlw B'10101010' retlw B'01010101' END

Nivel 1 1. Mediante un display alfanumérico mostrar en forma descendente las letras del alfabeto de Z a A. Solución: LIST P=16F877A INCLUDE AUX1 EQU 0X22 AUX2 EQU 0X23 ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf STATUS,5 clrf TRISB clrf TRISC bcf STATUS,5 BUCLE clrf PORTB clrf PORTC movlw b'00001001' movwf PORTB movlw b'00010001' movwf PORTC CALL RETARDO movlw b'01000000' movwf PORTB movlw b'00001001' movwf PORTC CALL RETARDO movlw b'01000000' movwf PORTB movlw b'00010101' movwf PORTC CALL RETARDO movlw b'00110110' movwf PORTB movlw b'00010100' movwf PORTC CALL RETARDO movlw b'00110000' movwf PORTB movlw b'00010001' movwf PORTC CALL RETARDO movlw b'00111110' movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'10000001' movwf PORTB movlw b'00001000' movwf PORTC CALL RETARDO

;Z

U3 13 14

;Y

2 3 4 5 6 7 8 9 10 1

;X

OSC1/CLKIN OSC2/CLKOUT

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

;W PIC16F877A SRCFILE=..\ejem1.hex

;V

;U

;T

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

movlw b'00101101' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00110011' movwf PORTB movlw b'00100110' movwf PORTC CALL RETARDO movlw b'00100111' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00110011' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111111' movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'01110110' movwf PORTB movlw b'00000100' movwf PORTC CALL RETARDO movlw b'01110110' movwf PORTB movlw b'00000001' movwf PORTC CALL RETARDO movlw b'00111000' movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'00110000' movwf PORTB movlw b'00100101' movwf PORTC CALL RETARDO movlw b'00011110' movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'10001001' movwf PORTB movlw b'00001000' movwf PORTC CALL RETARDO

;S

;R

;Q

;P U3 13 14

;O

2 3 4 5 6 7 8 9 10 1

;N

OSC1/CLKIN OSC2/CLKOUT

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

;M PIC16F877A SRCFILE=..\ejem1.hex

;L

;K

;J

;I

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

movlw b'00110110' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111101' movwf PORTB movlw b'00000010' movwf PORTC CALL RETARDO movlw b'00110001' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111001' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00011110' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111001' movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'00111100' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00110111' movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO GOTO BUCLE

;H

;G

;F

U3 13 14 2 3 4 5 6 7

;E

8 9 10 1

OSC1/CLKIN OSC2/CLKOUT

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

;D

;C

;B

;A

; Retardo para visualizar el zyx… RETARDO clrf AUX1 REP1 clrf AUX2 REP2 incfsz AUX2,1 GOTO REP2 decfsz AUX1,1 GOTO REP1 return END

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877A SRCFILE=..\ejem1.hex

33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

2. Por el puerto B mostrar las siguientes operaciones: portB.0 = portC.0 and portC.1, portB.1= portC.2 or portC.3, portB.2 = portC.4 xor portC.5. Solución:

U1

8 9 10 1

RB0/INT RB1 RB2 RA0/AN0 RB3/PGM RA1/AN1 RB4 RA2/AN2/VREF-/CVREF RB5 RA3/AN3/VREF+ RB6/PGC RA4/T0CKI/C1OUT RB7/PGD 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

33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

5

4

3

0 1 1

AND

2

1

OR XOR 0

0 1

2 3 4 5 6 7

OSC1/CLKIN OSC2/CLKOUT

1 0

13 14

1 0

LIST P=16F877 INCLUDE "P16F877.INC" BIT0 EQU 0X20 BIT1 EQU 0X21 BIT2 EQU 0X22 ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf STATUS,5 movlw b'11111111' movwf TRISC clrf TRISB bcf STATUS,5 movfw PORTC movwf BIT0 movwf BIT1 movwf BIT2 movlw b'00000011' andwf BIT0,1 movlw b'00000011' subwf BIT0,0 btfss STATUS,2 GOTO PUERTOB0 bsf PORTB,0 GOTO ORRR PUERTOB0 bcf PORTB,0 GOTO ORRR ORRR movlw b'00001100' andwf BIT1,1 movlw b'00000000' subwf BIT1,1 btfss STATUS,2 GOTO PUERTOB1 bcf PORTB,1 GOTO XORRR PUERTOB1 bsf PORTB,1 GOTO XORRR XORRR movlw b'00110000' andwf BIT2,1 movlw b'00000000' subwf BIT2,0 btfss STATUS,2 GOTO MAYOR GOTO IGUAL IGUAL bcf PORTB,2 GOTO INICIO MAYOR movlw b'00110000' subwf BIT2,0 btfss STATUS,2 GOTO DIFERENTECERO GOTO IGUAL DIFERENTECERO bsf PORTB,2 GOTO INICIO END

3. Según el estado de los interruptores RA0 y RA1, activar los leds RB0-RB7 conectados a la puerta B, conforme a la siguiente tabla de la verdad:

Solución: LIST P=16F84A INCLUDE "P16F84A.INC" ORG 0X00 GOTO INICIO ORG 0X05 INICIO

IMPRIME1 UNO

IMPRIME2 DOS

IMPRIME3 TRES

bsf STATUS,5 movlw 0xff movwf TRISA clrf TRISB bcf STATUS,5 movlw b'00000000' subwf PORTA,0 btfss STATUS,2 GOTO UNO GOTO IMPRIME1 movlw b'10101010' movwf PORTB GOTO INICIO movlw b'00000001' subwf PORTA,0 btfss STATUS,2 GOTO DOS GOTO IMPRIME2 movlw b'01010101' movwf PORTB GOTO INICIO movlw b'00000010' subwf PORTA,0 btfss STATUS,2 GOTO TRES GOTO IMPRIME3 movlw b'00001111' movwf PORTB GOTO INICIO movlw b'11110000' movwf PORTB GOTO INICIO END

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

PIC16F84A

17 18 1 2 3 6 7 8 9 10 11 12 13

4. Una lámpara conectada en RB0 se controla mediante dos interruptores conectados en RA1 y RA2. Cuando cualquiera de los interruptores cambie de estado, la lámpara también lo hará. Solución: List P=16F84 INCLUDE "P16F84.INC" TEMP equ 0x0c ORG 0x00 GOTO INICIO ORG 0x05 INICIO clrf

PORTB

bsf clrf movlw movwf bcf

STATUS,5 TRISB b'00000011' TRISA STATUS,5

clrf

TEMP

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

LOOP movf PORTA,W andlw b'00000011' movwf TEMP btfsc STATUS,Z GOTO APAGAR movlw b'00000001' subwf TEMP,0 btfsc STATUS,2 GOTO ENCENDER movlw b'00000010' subwf TEMP,W btfsc STATUS,2 GOTO ENCENDER APAGAR

bcf PORTB,0 GOTO LOOP

ENCENDER bsf PORTB,0 GOTO LOOP end

RA0 RA1 RA2 RA3 RA4/T0CKI

PIC16F84A

17 18 1 2 3 6 7 8 9 10 11 12 13

5. Una lámpara conectada en RB1 se controla mediante 3 interruptores conectados en RA1, RA2 y RA3. Cuando 2 interruptores están en estado alto se activara la salida RB1, en otra condición la salida estará apagado Solución: RA1 RA2 RA3 RB0 ; ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; 1 ; 1 ; ; ; ZONA DE DATOS

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

0 0 0 1 0 1 1 0

__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC; configuración para el ; Grabador LIST p=16F84A ; Procesador INCLUDE ; definición de los operando utilizados NUM EQU d'1' ; ZONA DE CODIGOS ORG 0 ; el programa comienza en la dirección 0 de memoria de programa INICIO bsf movlw movwf movlw movwf bcf

STATUS,RP0 b'00000000' TRISB b'00000111' TRISA STATUS,RP0

PRINCIPAL movf andlw call movwf goto

PORTA,W b'000000111' salida PORTB PRINCIPAL

salida addwf retlw retlw retlw retlw retlw retlw retlw retlw

PCL,F b'0' b'0' b'0' b'1' b'0' b'1' b'1' b'0'

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC16F84A

END

RA0 RA1 RA2 RA3 RA4/T0CKI

17 18 1 2 3 6 7 8 9 10 11 12 13

6. Efecto de luces tipo Auto Fantástico con un 16F84A por el puerto b, RB0 a RB7 Solución: LIST P=16F84A INCLUDE "P16F84A.INC" CONTA1 EQU 0X0C CONTA2 EQU 0X0D ORG 0X00 GOTO INICIO INICIO bsf STATUS,5 clrf TRISB bcf STATUS,5 movlw b'10000000' movwf PORTB CALL RETARDO movlw b'01000000' movwf PORTB CALL RETARDO movlw b'00100000' movwf PORTB CALL RETARDO movlw b'00010000' movwf PORTB CALL RETARDO movlw b'00001000' movwf PORTB CALL RETARDO movlw b'00000100' movwf PORTB CALL RETARDO movlw b'00000010' movwf PORTB CALL RETARDO movlw b'00000001' movwf PORTB CALL RETARDO movlw b'00000010' movwf PORTB CALL RETARDO movlw b'00000100' movwf PORTB CALL RETARDO movlw b'00001000' movwf PORTB CALL RETARDO RETARDO

U1 16 15 4

clrf CONTA1 REP1 clrf CONTA2 REP2 incfsz CONTA2,1 GOTO REP2 incfsz CONTA1,1 GOTO REP1 RETURN END

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

PIC16F84A

17 18 1 2 3 6 7 8 9 10 11 12 13

7. Diseñe un contador de 8 bits, que se incrementa cada vez que se pulsa “P” (RA0). Visualice el resultado por el puerto B. Activar un led (RA1), cuando el contador llegue a D’120’ y apagarlo cuando llegue a D’200’. Repetir el ciclo. Solución: List P=16F84A INCLUDE "P16F84A.INC" CONTA1 EQU 0X0C CONTA2 EQU 0X0D CONTADOR EQU 0X0E ORG 0x00 GOTO INICIO ORG 0x05 INICIO bsf STATUS,5 bsf TRISA,0 bcf TRISA,1 clrf TRISB bcf STATUS,5 clrf CONTADOR clrf PORTB movf CONTADOR,0 movwf PORTB

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

EXPLORA btfsc PORTA,0 goto EXPLORA goto SI SI incf CONTADOR,1 Call RETARDO movf CONTADOR,0 PIC16F84A

movwf PORTB sublw .120 btfss STATUS,Z goto VALOR2 bsf PORTA,1 goto EXPLORA VALOR2 movf CONTADOR sublw .200 btfss STATUS,Z goto EXPLORA bcf PORTA,1 clrf CONTADOR clrf PORTB goto EXPLORA RETARDO movlw 0xff movwf CONTA1 REP1 movlw 0xff movwf CONTA2 REP2 decfsz CONTA2,1 GOTO REP2 decfsz CONTA1,1 GOTO REP1 RETURN End

RA0 RA1 RA2 RA3 RA4/T0CKI

17 18 1 2 3 6 7 8 9 10 11 12 13

1

8. Utilizando un PIC16F84 realice un Juego de Luces de 8 leds, donde por medio de un Pulsador de Inicio el Juego se coloque en funcionamiento. El Juego se comportara de la siguiente manera: Los leds inicialmente se encenderán solo uno a la vez en secuencia, de DERECHA a IZQUIERDA y de IZQUIERDA a DERECHA; Este proceso lo realizara 7 veces, donde al terminar pasara a la siguiente secuencia que se comportara de la siguiente manera: El secuenciador será de 8 leds donde encenderán uno por uno, y al estar todos encendidos se apagaran; Este Proceso se realizara 5 veces. Luego todo este proceso se realizara nuevamente. Nota: Utilice las instrucciones RLF y RRF. Solución: LIST P=16F84A INCLUDE AUX1 EQU 0X0C AUX2 EQU 0X0D CONTA1 EQU 0X0E CONTA2 EQU 0X0F ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf STATUS,5 clrf TRISB bsf TRISA,0 bcf STATUS,5 clrf PORTB BUCLE1 btfss PORTA,0 GOTO BUCLE1 clrf PORTB clrf AUX1 clrf AUX2 bsf PORTB,0 BUCLE2 CALL RETARDO rlf PORTB,1 btfss PORTB,0 GOTO BUCLE2 BUCLE4 rrf PORTB,1 CALL RETARDO btfss PORTB,0 GOTO BUCLE4 incf AUX1 movlw 0x07 subwf AUX1,0 btfss STATUS,2 GOTO BUCLE2 BUCLE3 clrf PORTB incf AUX2 bsf PORTB,0 CALL RETARDO bsf PORTB,1 CALL RETARDO bsf PORTB,2 CALL RETARDO bsf PORTB,3 CALL RETARDO bsf PORTB,4 CALL RETARDO

RETARDO REP1 REP2

bsf PORTB,5 CALL RETARDO bsf PORTB,6 CALL RETARDO bsf PORTB,7 CALL RETARDO movlw 0x05 subwf AUX2,0 btfss STATUS,2 GOTO BUCLE3 clrf PORTB GOTO BUCLE1 movlw 0xff movwf CONTA1;CONTADOR1 = 0XFF movlw 0xff movwf CONTA2;CONTADOR2 = 0XFF decfsz CONTA2,1 GOTO REP2 decfsz CONTA1,1 GOTO REP1 RETURN END

U1 16 15 4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

PIC16F84A

17 18 1 2 3 6 7 8 9 10 11 12 13

9. Utilizando un PIC16F84 realice un Contador de 4 en 4 que cuando llegue a 40 realice el encendido de una alarma por medio del Pin RA4, luego de ello se debe realizar el contador de 4 en 4 de forma descendente y al terminar se debe realizar todo el proceso nuevamente Solución: LIST P=16f84A INCLUDE "P16f84A.INC" CONTADOR1 EQU 0X20 CONTADOR2 EQU 0X21 AUX1 EQU 0X22 AUX2 EQU 0X23 ORG 0X00 GOTO INICIO ORG 0X05 INICIO bsf bcf clrf bcf clrf

STATUS,RP0 TRISA,4 TRISB STATUS,RP0 PORTB

VUELTA

clrf movlw addwf CALL movf sublw

VOLVER

STATUS .4 PORTB,1 RETARDO PORTB,0 .40

btfss STATUS,Z GOTO VUELTA CALL RETARDO bsf PORTA,4 movlw .4 subwf PORTB,1 CALL RETARDO movf PORTB,0 sublw .4

RETARDO REP1 REP2

movlw 0xff movwf AUX1 movlw 0xff movwf AUX2 decfsz AUX2,1 goto REP2 decfsz AUX1,1 GOTO REP1 RETURN END

4

OSC1/CLKIN OSC2/CLKOUT MCLR

RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

17 18 1 2 3

0

6 7 8 9 10 11 12 13

PIC16F84A

0 0 0 1 1 0 0 0

btfss STATUS,Z GOTO VOLVER bcf PORTA,4 GOTO VUELTA

U1 16 15

10. Utilizando un PIC16F877 realice la captación de dos números de 4 bits, los cuales ambos son suministrados por el Puerto B. Estos números deben de ser comparados para lo siguiente: Si N1=N2 encender una alarma. (Por RA0) Si N1>N2 realizar la suma de estos números para luego realizar un contador desde este valor hasta su desbordamiento. (Mostrar por el Puerto A) Si N1
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF