4.-ejercicios resueltos de microcontroladores

36
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 <P16F84A.INC> 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. 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 O SC1/CLKIN 16 RB0/INT 6 RB1 7 RB2 8 RB3 9 RB4 10 RB5 11 RB6 12 RB7 13 RA0 17 RA1 18 RA2 1 RA3 2 R A4/T0C KI 3 O SC 2/C LKO U T 15 M C LR 4 U1 PIC 16F84A R1 10k X1 C1 1nF C2 1nF D1 R2 330 O SC1/CLKIN 16 RB0/IN T 6 RB1 7 RB2 8 RB3 9 RB4 10 RB5 11 RB6 12 RB7 13 RA0 17 RA1 18 RA2 1 RA3 2 R A4/T0C KI 3 O SC 2/C LKO UT 15 M CLR 4 U1 PIC 16F84A R1 10k X1 C1 1nF C2 1nF 1 0 1 0 1 0 0 1 0 1

Upload: jhon-pichihua-h

Post on 30-Dec-2015

845 views

Category:

Documents


12 download

TRANSCRIPT

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=16F84AINCLUDE <P16F84A.INC>CONT1 EQU 0X20CONT2 EQU 0X21ORG 0x00GOTO INICIOORG 0x05INICIO bsf STATUS,RP0

clrf TRISAbcf STATUS,RP0

ENCLED bsf PORTA,0call RETARDObcf PORTA,0call RETARDOGOTO ENCLED

RETARDO movlw 0xffmovwf CONT1

REP1 movlw 0xffmovwf CONT2

REP2 decfsz CONT2,1GOTO REP2decfsz CONT1,1GOTO REP1RETURNEND

2. 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=16f84AINCLUDE "P16F84A.INC"COMPLEMENTO EQU 0X0CORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

Movlw 0XFFMovwf TRISAClrf TRISBBcf STATUS,5

BUCLE movf PORTA,0Movwf COMPLEMENTOComf COMPLEMENTO,0Movwf PORTBGOTO BUCLEEND

OSC1/CLKIN16

RB0/INT 6

RB1 7

RB2 8

RB3 9

RB4 10

RB5 11

RB6 12

RB7 13

RA0 17

RA1 18

RA2 1

RA3 2

RA4/T0CKI 3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

X1

C1

1nF

C2

1nF

D1

R2330

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

X1

C1

1nF

C2

1nF

10

1010

0

101

3. Hacer un código en Assembler para obtener por el puerto B el dato del puerto A multiplicado por tresSolución:

LIST P=16F84AINCLUDE "P16F84A.INC"SUMA1 EQU 0X0CSUMA2 EQU 0X0DORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

movlw 0XFFmovwf TRISAclrf TRISBbcf STATUS,5

clrf PORTAclrf PORTB

;…………………………………….BUCLE movf PORTA,0

addwf PORTA,0movwf SUMA1

movf PORTA,0addwf SUMA1,0movwf PORTBGOTO BUCLEEND

4. 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=16F84AINCLUDE <P16F84A.INC>;……………………………………...INTERCAMB EQU 0X0CORG 0X00GOTO INICIOORG 0X05;………………………………….....INICIO bsf STATUS,5

movlw 0xffmovwf TRISAclrf TRISBbcf STATUS,5

;………………………………………BUCLE movf PORTA,0

movwf INTERCAMBswapf INTERCAMB,0movwf PORTBGOTO BUCLEEND

OSC1/CLKIN16

RB0/INT6

RB17

RB2 8

RB3 9

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

0 0 0 1 1

10010000

R110k

OSC1/CLKIN16

RB0/INT 6

RB1 7

RB2 8

RB3 9

RB4 10

RB5 11

RB6 12

RB7 13

RA0 17

RA1 18

RA2 1

RA3 2

RA4/T0CKI 3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

R210k

R310k

R410k

R510k

R610k

R7330

R8330

R9330

R10330

R11330

R12330

R13330

R14330

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=16F84AINCLUDE <P16F84A.INC>AUX EQU 0X0CORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

movlw 0xffmovwf TRISAclrf TRISBbcf STATUS,5clrf PORTB

BUCLE movf PORTA,0movwf AUXrlf AUX,1bsf AUX,0movf AUX,0movwf PORTBGOTO BUCLEEND

6. 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=16F84AINCLUDE <P16F84A.INC>CONTA1 EQU 0X0CCONTA2 EQU 0X0DORG 0X00GOTO INICIOINICIO bsf STATUS,5

clrf TRISBbcf STATUS,5movlw 0x01movwf PORTB

BUCLE call RETARDOrlf PORTB,1GOTO BUCLE

RETARDO movlw 0xffmovwf CONTA1

r1 movlw 0xffmovwf CONTA2

r2 decfsz CONTA2,1GOTO r2decfsz CONTA1,1GOTO r1returnEND

OSC1/CLKIN16

RB0/INT 6

RB1 7

RB2 8

RB3 9

RB4 10

RB5 11

RB6 12

RB7 13

RA0 17

RA1 18

RA2 1

RA3 2

RA4/T0CKI 3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

R210k

R310k

R410k

R510k

R610k

R7330

R8330

R9330

R10330

R11330

R12330

R13330

R14330

OSC1/CLKIN16

RB0/INT 6

RB1 7

RB2 8

RB3 9

RB4 10

RB5 11

RB6 12

RB7 13

RA0 17

RA1 18

RA2 1

RA3 2

RA4/T0CKI 3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

R7330

R8330

R9330

R10330

R11330

R12330

R13330

R14330

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 programaLIST P=16F84AINCLUDE <P16F84A.INC>; Declaración de registros de propósito generalCONTA1 EQU 0X0CCONTA2 EQU 0X0D; Ubicación en la memoria de programaORG 0X00GOTO INICIOORG 0X05; Configuración de puertosINICIO bsf STATUS,5

clrf TRISBbcf STATUS,5

; Carga de dato al puerto Bclrf PORTBmovlw 0xc0movwf PORTB

; inicio del bucle infinitoBUCLE call RETARDO

rrf PORTB,1GOTO BUCLE

; retardo para desplazamiento a la derechaRETARDO movlw 0xff

movwf CONTA1r1 movlw 0xff

movwf CONTA2r2 decfsz CONTA2,1

GOTO r2decfsz CONTA1,1GOTO r1returnEND

OSC1/CLKIN16

RB0/INT 6

RB1 7

RB2 8

RB3 9

RB4 10

RB5 11

RB6 12

RB7 13

RA0 17

RA1 18

RA2 1

RA3 2

RA4/T0CKI 3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

R7330

R8330

R9330

R10330

R11330

R12330

R13330

R14330

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

Solución:; Inicio del programaLIST P=16F84AINCLUDE <P16F84A.INC>; Declaración de registros de propósito generalCONTA1 EQU 0X0FCONTA2 EQU 0X10; Ubicación en la memoria de programaORG 0x00GOTO INICIOORG 0x05; Configuración de puertosINICIO bsf STATUS,5

clrf TRISBbcf STATUS,5

; Poner a cero el puerto Bclrf PORTBCALL RETARDO

; Incrementar puerto BBUCLE incf PORTB,1

CALL RETARDOGOTO BUCLE

; Retardo para conteo ascendenteRETARDO clrf CONTA1REP1 clrf CONTA2REP2 incfsz CONTA2,1

GOTO REP2incfsz CONTA1,1GOTO REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

R7330

R8330

R9330

R10330

R11330

R12330

R13330

R14330

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

; Inicio del p´rogramaLIST P=16F84AINCLUDE <P16F84A.INC>; Declaración de registros de propósito generalCONTA1 EQU 0X0FCONTA2 EQU 0X10; Ubicación en la memoria de programaORG 0x00GOTO INICIOORG 0x05; Configuración de puertosINICIO bsf STATUS,5

clrf TRISBbcf STATUS,5

; Cargar datos al puerto Bmovlw 0xffmovwf PORTBCALL RETARDO

; Inicio del bucle infinitoBUCLE decf PORTB,1

CALL RETARDOGOTO BUCLE

; Retardo para conteo descendenteRETARDO clrf CONTA1REP1 clrf CONTA2REP2 incfsz CONTA2,1

GOTO REP2incfsz CONTA1,1GOTO REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R110k

R7330

R8330

R9330

R10330

R11330

R12330

R13330

R14330

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

LIST P=16F84AINCLUDE <P16F84A.INC>CONTA1 EQU 0X0CCONTA2 EQU 0X0DCONTA3 EQU 0X0EBYTE EQU 0X0FORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

clrf PORTBbcf STATUS,5clrf PORTBclrf BYTE

BUCLE btfsc BYTE,4clrf BYTEmovf BYTE,0call TABLAmovwf PORTB

; Rutina del retardomovlw D'20movwf CONTA1

LOOP1 movwf D'20movwf CONTA2

LOOP2 movlw D'50movwf CONTA3

LOOP3 decfsz CONTA3,1GOTO LOOP3decfsz CONTA2,1GOTO LOOP2decfsz CONTA1,1GOTO LOOP1incf BYTE,1GOTO BUCLE

; Retorno de w con el valor binario correspondiente.TABLAaddwf 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

11001100

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

Nivel 11. Mediante un display alfanumérico mostrar en forma descendente las letras del

alfabeto de Z a A.

Solución:

LIST P=16F877AINCLUDE <P16F877A.INC>AUX1 EQU 0X22AUX2 EQU 0X23 ORG 0X00GOTO INICIOORG 0X05

INICIO bsf STATUS,5clrf TRISBclrf TRISCbcf STATUS,5

BUCLE clrf PORTB clrf PORTC movlw b'00001001' ;Z movwf PORTB movlw b'00010001' movwf PORTC CALL RETARDO movlw b'01000000' ;Y movwf PORTB movlw b'00001001' movwf PORTC CALL RETARDO movlw b'01000000' ;X movwf PORTB movlw b'00010101' movwf PORTC CALL RETARDO movlw b'00110110' ;W movwf PORTB movlw b'00010100' movwf PORTC CALL RETARDO movlw b'00110000' ;V movwf PORTB movlw b'00010001' movwf PORTC CALL RETARDO movlw b'00111110' ;U movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'10000001' ;T movwf PORTB movlw b'00001000' movwf PORTC CALL RETARDO

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U3

PIC16F877ASRCFILE=..\ejem1.hex

movlw b'00101101' ;S movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00110011' ;R movwf PORTB movlw b'00100110' movwf PORTC CALL RETARDO movlw b'00100111' ;Q movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00110011' ;P movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111111' ;O movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'01110110' ;N movwf PORTB movlw b'00000100' movwf PORTC CALL RETARDO movlw b'01110110' ;M movwf PORTB movlw b'00000001' movwf PORTC CALL RETARDO movlw b'00111000' ;L movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'00110000' ;K movwf PORTB movlw b'00100101' movwf PORTC CALL RETARDO movlw b'00011110' ;J movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'10001001' ;I movwf PORTB movlw b'00001000' movwf PORTC CALL RETARDO

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U3

PIC16F877ASRCFILE=..\ejem1.hex

movlw b'00110110' ;H movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111101' ;G movwf PORTB movlw b'00000010' movwf PORTC CALL RETARDO movlw b'00110001' ;F movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111001' ;E movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00011110' ;D movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00111001' ;C movwf PORTB movlw b'00000000' movwf PORTC CALL RETARDO movlw b'00111100' ;B movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO movlw b'00110111' ;A movwf PORTB movlw b'00100010' movwf PORTC CALL RETARDO

GOTO BUCLE

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

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U3

PIC16F877ASRCFILE=..\ejem1.hex

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:

LIST P=16F877INCLUDE "P16F877.INC"BIT0 EQU 0X20BIT1 EQU 0X21BIT2 EQU 0X22ORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

movlw b'11111111'movwf TRISCclrf TRISBbcf STATUS,5movfw PORTCmovwf BIT0movwf BIT1movwf BIT2movlw b'00000011'andwf BIT0,1movlw b'00000011'subwf BIT0,0btfss STATUS,2GOTO PUERTOB0bsf PORTB,0GOTO ORRR

PUERTOB0 bcf PORTB,0GOTO ORRR

ORRR movlw b'00001100'andwf BIT1,1movlw b'00000000'subwf BIT1,1btfss STATUS,2GOTO PUERTOB1bcf PORTB,1GOTO XORRR

PUERTOB1 bsf PORTB,1GOTO XORRR

XORRR movlw b'00110000'andwf BIT2,1movlw b'00000000'subwf BIT2,0btfss STATUS,2GOTO MAYORGOTO IGUAL

IGUAL bcf PORTB,2GOTO INICIO

MAYOR movlw b'00110000'subwf BIT2,0btfss STATUS,2GOTO DIFERENTECEROGOTO IGUAL

DIFERENTECERO bsf PORTB,2GOTO INICIOEND

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877A

AND

OR

XOR

012345

011

1 0 1 0 0 1

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=16F84AINCLUDE "P16F84A.INC"ORG 0X00GOTO INICIOORG 0X05

INICIO bsf STATUS,5movlw 0xffmovwf TRISAclrf TRISBbcf STATUS,5movlw b'00000000'subwf PORTA,0btfss STATUS,2GOTO UNOGOTO IMPRIME1

IMPRIME1 movlw b'10101010'movwf PORTBGOTO INICIO

UNO movlw b'00000001'subwf PORTA,0btfss STATUS,2GOTO DOSGOTO IMPRIME2

IMPRIME2 movlw b'01010101'movwf PORTBGOTO INICIO

DOS movlw b'00000010'subwf PORTA,0btfss STATUS,2GOTO TRESGOTO IMPRIME3

IMPRIME3 movlw b'00001111'movwf PORTBGOTO INICIO

TRES movlw b'11110000'movwf PORTBGOTO INICIOEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

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 0x0cORG 0x00 GOTO INICIOORG 0x05

INICIO clrf PORTB

bsf STATUS,5clrf TRISBmovlw b'00000011'movwf TRISA bcf STATUS,5

clrf TEMP

LOOP movf PORTA,W andlw b'00000011' movwf TEMP btfsc STATUS,Z GOTO APAGAR

movlw b'00000001'subwf TEMP,0btfsc STATUS,2 GOTO ENCENDER

movlw b'00000010'subwf TEMP,Wbtfsc STATUS,2 GOTO ENCENDER

APAGAR bcf PORTB,0 GOTO LOOP

ENCENDER bsf PORTB,0 GOTO LOOPend

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

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á apagadoSolución:

RA1 RA2 RA3 RB0;; 0 0 0 0 ; 0 0 1 0 ; 0 1 0 0 ; 0 1 1 1 ; 1 0 0 0 ; 1 0 1 1 ; 1 1 0 1 ; 1 1 1 0 ;;; ZONA DE DATOS

__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC; configuración para el; Grabador

LIST p=16F84A ; ProcesadorINCLUDE <P16F84A.INC> ; definición de los operando utilizados

NUM EQU d'1'; ZONA DE CODIGOSORG 0 ; el programa comienza en la dirección 0 de memoria de programa

INICIO bsf STATUS,RP0movlw b'00000000'movwf TRISBmovlw b'00000111'movwf TRISAbcf STATUS,RP0

PRINCIPALmovf PORTA,Wandlw b'000000111'call salidamovwf PORTBgoto PRINCIPAL

salida addwf PCL,Fretlw b'0'retlw b'0'retlw b'0'retlw b'1'retlw b'0'retlw b'1'retlw b'1'retlw b'0'

END

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

6. Efecto de luces tipo Auto Fantástico con un 16F84A por el puerto b, RB0 a RB7Solución:

LIST P=16F84AINCLUDE "P16F84A.INC"CONTA1 EQU 0X0CCONTA2 EQU 0X0DORG 0X00GOTO INICIOINICIO bsf STATUS,5

clrf TRISBbcf STATUS,5movlw b'10000000'movwf PORTBCALL RETARDOmovlw b'01000000'movwf PORTBCALL RETARDOmovlw b'00100000'movwf PORTBCALL RETARDOmovlw b'00010000'movwf PORTBCALL RETARDOmovlw b'00001000'movwf PORTBCALL RETARDOmovlw b'00000100'movwf PORTBCALL RETARDOmovlw b'00000010'movwf PORTBCALL RETARDOmovlw b'00000001'movwf PORTBCALL RETARDOmovlw b'00000010'movwf PORTBCALL RETARDOmovlw b'00000100'movwf PORTBCALL RETARDOmovlw b'00001000'movwf PORTBCALL RETARDO

RETARDO clrf CONTA1REP1 clrf CONTA2REP2 incfsz CONTA2,1GOTO REP2incfsz CONTA1,1GOTO REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA2 1

RA3 2

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

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 0X0CCONTA2 EQU 0X0DCONTADOR 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

EXPLORA btfsc PORTA,0 goto EXPLORA goto SI

SI incf CONTADOR,1 Call RETARDOmovf CONTADOR,0

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 CONTADORclrf PORTBgoto EXPLORA

RETARDO movlw 0xffmovwf CONTA1

REP1 movlw 0xffmovwf CONTA2

REP2 decfsz CONTA2,1GOTO REP2decfsz CONTA1,1GOTO REP1RETURN

End

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA0 17

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

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=16F84AINCLUDE <P16F84A.INC>AUX1 EQU 0X0CAUX2 EQU 0X0DCONTA1 EQU 0X0ECONTA2 EQU 0X0FORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

clrf TRISBbsf TRISA,0bcf STATUS,5clrf PORTB

BUCLE1 btfss PORTA,0GOTO BUCLE1clrf PORTBclrf AUX1clrf AUX2bsf PORTB,0

BUCLE2 CALL RETARDOrlf PORTB,1btfss PORTB,0GOTO BUCLE2

BUCLE4 rrf PORTB,1CALL RETARDObtfss PORTB,0GOTO BUCLE4incf AUX1movlw 0x07subwf AUX1,0btfss STATUS,2GOTO BUCLE2

BUCLE3 clrf PORTBincf AUX2bsf PORTB,0CALL RETARDO

bsf PORTB,1CALL RETARDO

bsf PORTB,2CALL RETARDO

bsf PORTB,3CALL RETARDO

bsf PORTB,4CALL RETARDO

bsf PORTB,5CALL RETARDO

bsf PORTB,6CALL RETARDO

bsf PORTB,7CALL RETARDO

movlw 0x05subwf AUX2,0btfss STATUS,2GOTO BUCLE3

clrf PORTB GOTO BUCLE1RETARDO movlw 0xff

movwf CONTA1;CONTADOR1 = 0XFFREP1 movlw 0xff

movwf CONTA2;CONTADOR2 = 0XFFREP2 decfsz CONTA2,1

GOTO REP2decfsz CONTA1,1GOTO REP1RETURN

END

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

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 nuevamenteSolución:

LIST P=16f84AINCLUDE "P16f84A.INC"

CONTADOR1 EQU 0X20CONTADOR2 EQU 0X21AUX1 EQU 0X22AUX2 EQU 0X23

ORG 0X00GOTO INICIOORG 0X05

INICIO bsf STATUS,RP0bcf TRISA,4clrf TRISBbcf STATUS,RP0clrf PORTB

VUELTA clrf STATUSmovlw .4addwf PORTB,1CALL RETARDOmovf PORTB,0sublw .40

btfss STATUS,ZGOTO VUELTA

VOLVER CALL RETARDObsf PORTA,4movlw .4subwf PORTB,1CALL RETARDOmovf PORTB,0sublw .4

btfss STATUS,ZGOTO VOLVERbcf PORTA,4GOTO VUELTA

RETARDO movlw 0xffmovwf AUX1

REP1 movlw 0xffmovwf AUX2

REP2 decfsz AUX2,1goto REP2decfsz AUX1,1GOTO REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

0

00011000

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<N2 realizar el complemento a 1 del númeroN2. (Mostrar por el Puerto A)El número N1 son los 4 bits menos significativos del Puerto B y el numero N2 son los 4 bits más significativos del Puerto B.

Solución:LIST P=16F877INCLUDE "P16f877.INC"NUMERO1 EQU 0X20NUMERO2 EQU 0X21CONTA1 EQU 0X23CONTA2 EQU 0X24ORG 0X00INICIO bsf STATUS,5

movlw 0xFFmovwf TRISBclrf TRISCbcf TRISA,0bcf STATUS,5

BUCLE clrf PORTAmovlw 0x0Fandwf PORTB,0movwf NUMERO1movlw 0xF0andwf PORTB,0movwf NUMERO2swapf NUMERO2,1movfw NUMERO1subwf NUMERO2,0btfss STATUS,0GOTO MAYORGOTO MENORGOTO BUCLE

MAYOR movfw NUMERO1addwf NUMERO2,0movwf PORTC

INCRE CALL RETARDOincfsz PORTCGOTO INCREGOTO FINAL

RETARDO movlw 0xffmovwf CONTA1

REP1 movlw 0xffmovwf CONTA2

REP2 decfsz CONTA2,1GOTO REP2decfsz CONTA1,1GOTO REP1RETURN

IMPRIME bsf PORTA,0'GOTO BUCLE

MENOR movfw NUMERO1subwf NUMERO2,0btfsc STATUS,2GOTO IMPRIMEcomf NUMERO2,0movwf PORTCGOTO BUCLE

FINAL movlw b'00000000'movwf PORTCGOTO BUCLELEND

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL 18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA 23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877

0011

111 0

NUMERO 1

NUMERO2

10001111

0

11. Utilizando un PIC16F84, realice un contador binario de 5 a 55 por medio de leds, en bucle infinito.

Solución:

LIST P=16F84AINCLUDE "P16F84A.INC"

CONTA1 EQU 0X0CCONTA2 EQU 0X0D

ORG 0x00 GOTO INICIOORG 0X05

INICIO bsf STATUS,5 movlw .0 movwf PORTB bcf STATUS,5 clrf PORTB

BUCLE movlw .5movwf PORTB

BUCLE1 CALL RETARDOincf PORTB

movlw .55subwf PORTB,0

btfss STATUS,ZGOTO BUCLE1CALL RETARDOGOTO BUCLE

RETARDO movlw 0xffmovwf CONTA1

REP1 movlw 0xffmovwf CONTA2

REP2 decfsz CONTA2,1GOTO REP2

decfsz CONTA1,1GOTO REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA2 1

RA3 2

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

01111000

12. Utilizando un PIC16F84 realice un secuenciador de 8 leds de izquierda a derecha y de derecha a izquierda por el Puerto B. Se deben ir encendiendo los leds de 3 en 3 en forma secuencial. (Mientras tres leds estén encendidos todos los demás están apagados). El secuenciador a la izquierda se realiza por medio de la activación de un switch colocado en RA0 en activo bajo. El secuenciador a la derecha se realiza por la activación de un switch colocado en RA1 en activo bajo. En otros estados de la entrada la salida será apagado.

Solución:

LIST P = 16F84AINCLUDE "P16F84A.INC"CONTA1 EQU 0X0CCONTA2 EQU 0X0DORG 0X00GOTO INICIOORG 0X05INICIO bsf STATUS,5

clrf TRISBmovlw 0XFFmovwf TRISAbcf STATUS,5

BUCLE btfsc PORTA,0GOTO BUCLE2btfsc PORTA,1GOTO IZQUIERDAGOTO BUCLE3

BUCLE2 btfsc PORTA,1GOTO BUCLE3GOTO DERECHA

BUCLE3 clrf PORTBGOTO BUCLE

RETARDO movlw 0xffmovwf CONTA1

REP1 movlw 0xffmovwf CONTA2

REP2 decfsz CONTA2,1GOTO REP2decfsz CONTA1,1GOTO REP1RETURN

DERECHA movlw B'00000000'movwf PORTBCALL RETARDOmovlw B'11100000'movwf PORTBCALL RETARDOmovlw B'01110000'movwf PORTBCALL RETARDOmovlw B'00111000'movwf PORTBCALL RETARDOmovlw B'00011100'movwf PORTBCALL RETARDOmovlw B'00001110'movwf PORTBCALL RETARDOmovlw B'00000111'movwf PORTB

OSC1/CLKIN16

RB0/INT6

RB1 7

RB2 8

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

R210k

R3330

R4330

R5330

R6330

R7330

R8330

R9330

R10330

D1LED-GREEN

D2LED-GREEN

D3LED-GREEN

D4LED-GREEN

D5LED-GREEN

D6LED-GREEN

D7LED-GREEN

D8LED-GREEN

R1110k

DERECHA A IZQUIERDA

IZQUIERDA A DERECHA

CALL RETARDOmovlw B'00000000'movwf PORTBCALL RETARDOGOTO BUCLE

IZQUIERDA movlw B'00000000'movwf PORTBCALL RETARDOmovlw B'00000111'movwf PORTBCALL RETARDOmovlw B'00001110'movwf PORTBCALL RETARDOmovlw B'00011100'movwf PORTBCALL RETARDOmovlw B'00111000'movwf PORTBCALL RETARDOmovlw B'01110000'movwf PORTBCALL RETARDOmovlw B'11100000'movwf PORTBCALL RETARDOmovlw B'00000000'movwf PORTBCALL RETARDOGOTO BUCLEEND

13. Se tienen 2 switch que de acuerdo a las combinaciones de estos se realizaran uno de los siguientes procesos:Si el SW1 = 1 y SW2 =0 se realiza la intermitencia de 8 leds 10 veces. Si el SW1=0 y el SW2=1 encender 8 leds de 2 en 2 de adentro hacia fuera y de afuera hacia adentro. Este proceso se debe ejecutar 5 veces.Si el SW1=0 y el SW2=0 el valor actual del puerto debe mantenerse. Si el SW1=1 y el SW2=1 se realizara un contador de 6 en 6 hasta 36.

Solución:

LIST P=16F84AINCLUDE "P16F84A.INC"DIEZ EQU 0X0CCONTA1 EQU 0X0DCONTA2 EQU 0X0ECINCO EQU 0X0FSEIS EQU 0X10 ORG 0X00GOTO INICIOINICIO bsf STATUS,5

movlw 0XFFmovwf TRISAclrf TRISBbcf STATUS,5movlw D'10movwf DIEZmovlw D'5movwf CINCOmovlw D'6movwf SEIS

BUCLE movlw b'01'subwf PORTA,0btfss STATUS,2GOTO DOS

IMPRIME movlw b'11111111'movwf PORTBCALL RETARDOclrf PORTBCALL RETARDOdecfsz DIEZGOTO IMPRIMEGOTO BUCLE

DOS movlw b'10'subwf PORTA,0btfss STATUS,2GOTO TRESGOTO IMPRIME1

IMPRIME1 movlw b'00011000'movwf PORTBcall RETARDOmovlw b'00100100'movwf PORTBcall RETARDOmovlw b'01000010'movwf PORTBcall RETARDOmovlw b'10000001'movwf PORTBcall RETARDOmovlw b'01000010'movwf PORTBcall RETARDOmovlw b'00100100'movwf PORTBcall RETARDOmovlw b'00011000'movwf PORTBcall RETARDOdecfsz CINCOGOTO IMPRIME1GOTO BUCLE

TRES movlw b'00'subwf PORTA,0btfss STATUS,2GOTO IMPRIME2GOTO BUCLE

IMPRIME2 clrf PORTBIMPRIME3 movlw D'6

addwf PORTB,1call RETARDOdecfsz SEIS,1GOTO IMPRIME3GOTO BUCLE

RETARDO movlw 0xffmovwf CONTA1

REP1 movlw 0xffmovwf CONTA2

REP2 decfsz CONTA2,1goto REP2decfsz CONTA1,1goto REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

01000010

14. Por medio de la activación de 1 de 4 suitch, realizara lo siguiente: Si RA0=1 rota a la izquierda con solo 1 led encendido. Si RA1=1 rota a la derecha con solo 1 led encendido. Si RA2=1 rota a la izquierda dejando encendido cada led. Si RA3=1 rota a la derecha dejando encendido cada led La muestra se realiza por el puerto B.

Solución:

LIST P=16F84AINCLUDE "P16F84A.INC"CONTA1 EQU 0X0CCONTA2 EQU 0X0D ORG 0X00ORG 0X05

bsf STATUS,5movlw 0xFFmovwf TRISAclrf TRISBbcf STATUS,5

BUCLE movlw b'0001'subwf PORTA,0btfss STATUS,2GOTO SEGUNDOmovlw b'00000001'movwf PORTB

IMPRIMIR1 CALL RETARDOrlf PORTB,1btfss STATUS,0GOTO IMPRIMIR1GOTO BUCLE

SEGUNDO movlw b'0010'subwf PORTA,0btfss STATUS,2GOTO TERCEROmovlw b'10000000'movwf PORTB

IMPRIMIR2 CALL RETARDOrrf PORTB,1btfss STATUS,0GOTO IMPRIMIR2GOTO BUCLE

TERCERO movlw b'0100'subwf PORTA,0btfss STATUS,2GOTO CUARTOmovlw b'00000000'movwf PORTBCALL RETARDOmovlw b'00000001'movwf PORTBCALL RETARDOmovlw b'00000011'movwf PORTBCALL RETARDOmovlw b'00000111'movwf PORTBCALL RETARDOmovlw b'00001111'

movwf PORTBCALL RETARDOmovlw b'00011111'movwf PORTBCALL RETARDOmovlw b'00111111'movwf PORTBCALL RETARDOmovlw b'01111111'movwf PORTBCALL RETARDOmovlw b'11111111'movwf PORTBCALL RETARDOGOTO BUCLE

CUARTO movlw b'1000'subwf PORTA,0btfss STATUS,2GOTO BUCLEmovlw b'00000000'movwf PORTBCALL RETARDOmovlw b'10000000'movwf PORTBCALL RETARDOmovlw b'11000000'movwf PORTBCALL RETARDOmovlw b'11100000'movwf PORTBCALL RETARDOmovlw b'11110000'movwf PORTBCALL RETARDOmovlw b'11111000'movwf PORTBCALL RETARDOmovlw b'11111100'movwf PORTBCALL RETARDOmovlw b'11111110'movwf PORTBCALL RETARDOmovlw b'11111111'movwf PORTBCALL RETARDOGOTO BUCLE

RETARDO movlw 0xffmovwf CONTA1

REP1 movlw 0xffmovwf CONTA2

REP2 decfsz CONTA2,1goto REP2decfsz CONTA1,1goto REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB7 13

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

1 1 1 1 1 1 0 0

R510k

15. Leer las tres líneas más bajas del puerto A, que fijan el número de leds que se iluminan en la salida. A si por ejemplo si lee el dato “xx101” (cinco) en los leds conectados al puerto B se iluminara el código “00011111” encendiéndose cinco leds.

Solución:

LIST P=16F84AINCLUDE "P16F84A.INC" CONTA1 EQU 0X0CCONTA2 EQU 0X0DAUX EQU 0X0EORG 0x00 GOTO INICIOORG 0X05 INICIO bsf STATUS,5

bsf TRISA,0bsf TRISA,1bsf TRISA,2clrf TRISBbcf STATUS,5 clrf PORTA clrf PORTB

BUCLEmovf PORTA,0movwf AUXbtfsc STATUS,ZGOTO CEROMovlw b'00000001'Subwf AUX,0btfsc STATUS,ZGOTO UNOMovlw b'00000010'subwf AUX,0btfsc STATUS,ZGOTO DOSMovlw b'00000011'Subwf AUX,0btfsc STATUS,ZGOTO TRESmovlw b'00000100'subwf AUX,0btfsc STATUS,ZGOTO CUATROmovlw b'00000101'subwf AUX,0btfsc STATUS,ZGOTO CINCOMovlw b'00000110'subwf AUX,0btfsc STATUS,ZGOTO SEIS

;******* SIETEmovlw b'01111111'movwf PORTBGOTO BUCLE

CERO movlw b'0000000'movwf PORTBGOTO BUCLE

UNO movlw b'00000001'movwf PORTBGOTO BUCLE

DOS movlw b'00000011'movwf PORTBGOTO BUCLE

TRES movlw b'00000111'movwf PORTBGOTO BUCLE

CUATRO movlw b'00001111'movwf PORTBGOTO BUCLE

CINCO movlw b'00011111'movwf PORTBGOTO BUCLE

SEIS movlw b'00111111'movwf PORTBGOTO BUCLE

RETARDO movlw 0xffmovwf CONTA1;CONTADOR1 = 0XFF

REP1 movlw 0xffmovwf CONTA2;CONTADOR2 = 0XFF

REP2 decfsz CONTA2,1GOTO REP2decfsz CONTA1,1GOTO REP1RETURNEND

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA2 1

RA3 2

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

101

0 0 0 1 1 1 1 1

16. Hacer un programa para 16F84 de tal manera que a través de dos displays pueda visualizarse un contador decimal de 0 – 99 ascendentes.

Solución:

;INICIO DEL PROGRAMAlist p = 16F84AINCLUDE <P16F84A.INC>

CONTA1 EQU 0X0CCONTA2 EQU 0X0DAUX EQU 0X0E

ORG 0X00GOTO INICIOORG 0X05

INICIO bsf STATUS,5 clrf TRISA clrf TRISB bcf STATUS,5

clrf PORTA clrf PORTB

BUCLE AUMENTO incf PORTB call RETARDO

movf PORTB,0sublw 0X09btfss STATUS,ZGOTO AUMENTOincf PORTAclrf PORTBmovf PORTA,0sublw 0x0Abtfss STATUS,Z

GOTO AUMENTOclrf PORTAGOTO BUCLE

RETARDO clrf CONTA1REP1 clrf CONTA2REP2 incfsz CONTA2,1 GOTO REP2 decfsz CONTA1,1 GOTO REP1 return END

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A