programacion del microcontrolodador pic16f877

21
PROGRAMACION DEL MICROCONTROLODADOR PIC16F877 Ing. Carlos Guerra Cordero

Upload: cutler

Post on 05-Feb-2016

79 views

Category:

Documents


2 download

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

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