PROGRAMACION DEL MICROCONTROLODADOR PIC16F877
description
Transcript of PROGRAMACION DEL MICROCONTROLODADOR PIC16F877
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.
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.
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
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
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
ARQUITECTURA DE LA GAMA MEDIA
C = 2{13} x 14 Bit’s = 8192 Instrucciones = 8 KBytes
C = 2{7} x 8 Bit’s = 128 Bytes
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)
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)
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
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
SFR : Son registros propios del CPU que se encuentran en la memoria de datos, y son:
STATUS, INDF, FSR, INTCON, PLC y PCLATH
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
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
; 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
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
; 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
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
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
Problema 3
FIN