PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

21
PROGRAMACION DEL MICROCONTROLODADOR PIC16F877 Ing. Carlos Guerra Cordero

description

PROGRAMACION DEL MICROCONTROLODADOR PIC16F877. Ing. Carlos Guerra Cordero. INTRODUCCION Los Microcontroladores son utilizados en muchas áreas de la actividad humana como: electrónica de consumo, telecomunicaciones, automotriz, domótica, etc. - PowerPoint PPT Presentation

Transcript of PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Page 1: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

PROGRAMACION DEL MICROCONTROLODADOR

PIC16F877

Ing. Carlos Guerra Cordero

Page 2: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

INTRODUCCION

Los Microcontroladores son utilizados en muchas áreas de la actividad humana como: electrónica de consumo, telecomunicaciones, automotriz, domótica, etc.

El microprocesador esta diseñado para buscar, decodificar y ejecutar instrucciones sin detenerse. La diferencia entre un microcontrolador y un microprocesador, es que en este ultimo la memoria es externa requiriendo de un bus de datos y direcciones. Un microcontrolador es un dispositivo que integra el CPU, la memoria y los puertos de entrada y salida.

Page 3: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Objetivos•   Determinar las características de los microcontroladores

• Determinar las instrucciones de la arquitectura de la gama media

• Programar instrucciones aplicados a sistemas digítales del uCo. 16F877

Page 4: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Características de los uCo. PIC16F877

Arquitectura es Harvard

Usa arquitectura en la Gama Baja, Media y Alta

Lenguaje de Maquina

Interpreta las instrucciones, que indican el código de operación y los operandos

Usa el software MPLAB para la programación

Usa el PROTEUS como herramienta de simulación

Page 5: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

R A0 /AN 02

R A1 /AN 13

R A2 /AN 2 /VR E F -4

R A 4 /T 0 C K I6

R A 5 /AN 4 /S S7

R E 0 /AN 5 /R D8

R E 1 /AN 6 /W R9

R E 2 /AN 7 /C S1 0

O S C 1 /C L K IN1 3

O S C 2 /C L K O U T1 4

R C 1 /T 1 O S I/C C P 2 1 6

R C 2 /C C P 1 1 7

R C 3 /S C K /S C L 1 8

R D 0 /P S P 0 1 9

R D 1 /P S P 1 2 0

R B 7 /P G D 4 0R B 6 /P G C 3 9

R B 5 3 8R B 4 3 7

R B 3 /P G M 3 6R B 2 3 5R B 1 3 4

R B 0 /IN T 3 3

R D 7 /P S P 7 3 0R D 6 /P S P 6 2 9R D 5 /P S P 5 2 8R D 4 /P S P 4 2 7R D 3 /P S P 3 2 2R D 2 /P S P 2 2 1

R C 7 /R X /D T 2 6R C 6 /T X /C K 2 5R C 5 /S D O 2 4

R C 4 /S D I/S D A 2 3

R A3 /AN 3 /VR E F +5

R C 0 /T 1 O S O /T 1 C K I 1 5

M C L R /V p p /T H V1

U 1

P IC 1 6 F 8 7 7

Page 6: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

ARQUITECTURA DE LA GAMA MEDIA

C = 2{13} x 14 Bit’s = 8192 Instrucciones = 8 KBytes

Page 7: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

C = 2{7} x 8 Bit’s = 128 Bytes

Page 8: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Determinar las instrucciones de la arquitectura de la gama media

a) Instrucciones con Inmediato:

Aritmético:

ADDLW INMED ; (W ← INMED + W)

SUBLW INMED ; (W ← INMED – W)

Lógicos:

ANDLW INMED ; (W ← INMED AND W)

IORLW INMED ; (W ← INMED OR W)

XORLW INMED ; (W ← INMED XOR W)

Transferencia:

MOVLW INMED ; (W ← INMED)

RETLW INMED ; (W ← INMED)

Page 9: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

b) Instrucción con Acceso a Memoria:

Aritmético:

ADDWF F, d ; (d ← {dato} + W)

SUBWF F, d ; (d ← {dato} – W)

Lógico:

ANDWF F, d ; (d ← {dato} AND W)

IORWF F, d ; (d ← {dato} OR W)

XORWF F, d ; (d ← {dato} XOR W)

---------------------------------------------------------------------------------------------------------------------------------

INCF F, d ; (d ← {dato} + 1)

DECF F, d ; (d ← {dato} – 1)

MOVF F, d ; (d ← {dato})

SWAPF F, d ; (Intercambiar)

COMF F, d ; (d ← {dato}’)

RLF F, d ; (Rotar Izquierda)

RRF F, d ; (Rotar Derecha)

----------------------------------------------------------------------------------------------------------------------------------

INCFSZ F, d ; (Incrementar y saltar cero)

DECFSZ F, d ; (Decrementar y saltar cero)

Page 10: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

c) Instrucciones para manipular bit´s:

a) Escritura (Forzar)

BSF F, Bit ; (poner “1” en la dirección del bit)

BCF F, Bit ; (poner “0” en la dirección del bit)

b) Lectura (Testear)

BTFSS F, Bit ; (¿Bit = 1?)

BTFSC F, Bit ; (¿Bit = 0?)

------------------------------------------------------------------------------------------------------------

d) Instrucciones de salto:

GOTO Dirección

CALL Dirección

Page 11: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Otras Instrucciones:

CLRW ; Borrar Instrucción

CLRF ; Borrar Dirección

MOVWF F ; (Mover W → Dirección)

SLEEP ; Descansa

CLRWDT ; Perro Guardián

NOP ; No hace nada

Page 12: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

SFR : Son registros propios del CPU que se encuentran en la memoria de datos, y son:

STATUS, INDF, FSR, INTCON, PLC y PCLATH

Page 13: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Hay parte de los registros del CPU que se encuentran en la memoria de datos

Configuran los puertos como entrada/salida:

* TRISX (A, B, C, D, E) ; Define la configuración de los puertos y determina el sentido (in/out)

TRSIB { 1 = Entrada y 0 = Salida }

* PORTX (A, B, C, D, E); Determina si entra “0” o “1” al puerto

Registro de Control

Page 14: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877
Page 15: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

USO DEL MPLAB:

• MPLAB ←

• Proyect – New ←

• Configure – Select Device ←

• Project – Set Language Tool Locations ←

microchip MPASM Toolsuite

Executables

MPASM Assembler (mpasmwin.exe) OK

• Debugger ←

Select Tool – MPLAB SIM ←

• File – New ←

Despues de copiar el archivo fuente, procedemos a guardarlo en una carpeta

Simulación en Proteus 6 Professional

• C ←

Program Files – Labcenter Electronics – Proteus 6 Professional – BIN – ISIS - yes

Page 16: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

; Activar Led

LIST P=16F877

INCLUDE <P16F877.INC>

ORG 0000H

CLRF PORTB ; 00000000

BSF STATUS,RP0 ; BNK-1

BCF TRISB,0 ; RBO COMO SALIDA

BCF STATUS,RP0 ; BNK 0

BSF PORTB,0 ; LED ON

GOTO $

END

Page 17: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

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/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

PIC16F877

R1

0.3k

D1LED-GREEN

Page 18: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

; Controlar el Led con un Boton

LIST P=16F877

INCLUDE <P16f877.INC>

ORG 0000H

BSF STATUS,RP0 ; BNK-1

BSF TRISC,0 ; RC0 COMO ENTRADA

BCF TRISB,0 ; RB0 COMO SALIDA

BCF STATUS,RP0 ; BNK-0;------------------------------------------------------------------------------------------------------------------------------------TESTEA

BTFSS PORTC,0 ; ¿RC0=1?

GOTO ACTIVARAPAGAR

BCF PORTB,0 ; (LED OFF)(RB0=0)

GOTO TESTEAACTIVAR

BSF PORTB,0 ; (LED ON)(RB0=1)

GOTO TESTEA

END

Page 19: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

D2LED-BLUE

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/PSP0 19

RD1/PSP1 20

RB7/PGD40

RB6/PGC39

RB5 38RB4

37RB3/PGM

36RB2

35RB1

34RB0/INT

33

RD7/PSP7 30RD6/PSP6

29RD5/PSP5

28RD4/PSP4

27RD3/PSP3

22RD2/PSP2

21

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877

R1

0.3k

R210k

Page 20: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

LABORATORIO # 3

Hacer un programa y simularlo y que haga lo siguiente:

1.- Hay 8 Led’s conectados al puerto “B” y que se comporte como un contador

2.- Se desea que el Led se desplace a la izquierda uno a la vez y debe retroceder y así sucesivamente.

3.- Que en el Display salga los # de 0 al 9

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/CCP2 16

RC2/CCP1 17

RC3/SCK/SCL 18

RD0/PSP0 19

RD1/PSP1 20

RB7/PGD 40RB6/PGC 39RB5 38RB4 37

RB3/PGM 36RB2 35RB1 34

RB0/INT 33

RD7/PSP7 30RD6/PSP6 29RD5/PSP5 28RD4/PSP4 27RD3/PSP3 22RD2/PSP2 21

RC7/RX/DT 26RC6/TX/CK 25RC5/SDO 24

RC4/SDI/SDA 23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 15

MCLR/Vpp/THV1

U1

PIC16F877

R110k

D1LED-GREEN

D2LED-GREEN

D3LED-GREEN

D4LED-GREEN

D5LED-GREEN

D6LED-GREEN

D7LED-GREEN

D8LED-GREEN

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/CCP2 16

RC2/CCP1 17

RC3/SCK/SCL 18

RD0/PSP0 19

RD1/PSP1 20

RB7/PGD 40RB6/PGC 39RB5 38RB4 37

RB3/PGM 36RB2 35RB1 34

RB0/INT 33

RD7/PSP7 30RD6/PSP6 29RD5/PSP5 28RD4/PSP4 27RD3/PSP3 22RD2/PSP2 21

RC7/RX/DT 26RC6/TX/CK 25RC5/SDO 24

RC4/SDI/SDA 23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 15

MCLR/Vpp/THV1

U1

PIC16F877

D1LED-GREEN

D2LED-GREEN

D3LED-GREEN

D4LED-GREEN

D5LED-GREEN

D6LED-GREEN

D7LED-GREEN

D8LED-GREEN

Problema 1 Problema 2

Page 21: PROGRAMACION DEL MICROCONTROLODADOR PIC16F877

Problema 3

FIN