deber tercerp

15
ESCUELA POLITECNICA DEL EJERCITO NOMBRE: LUIS AVILÉS TONATO MATERIA: MICROCONTROLADORES TEMA: PROGRAMACIÓN EN PIC C Ejercicio 1 Escribir un programa que invierta todos los bits del puerto B, cada vez que un registro contador llegue al valor máximo. El registro comienza la cuenta desde cero hasta llegar al valor máximo posible. Si el PIC trabaja a una frecuencia de 4MHz. Diagrama de flujo: Diagrama de bloque: Pic16f877A Led PORTD Led PORTB

Upload: luis-aviles

Post on 12-Apr-2015

44 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Deber TercerP

ESCUELA POLITECNICA DEL EJERCITO

NOMBRE: LUIS AVILÉS TONATO

MATERIA: MICROCONTROLADORES

TEMA: PROGRAMACIÓN EN PIC C

Ejercicio 1

Escribir un programa que invierta todos los bits del puerto B, cada vez que un registro contadorllegue al valor máximo. El registro comienza la cuenta desde cero hasta llegar al valor máximoposible.Si el PIC trabaja a una frecuencia de 4MHz.

Diagrama de flujo:

Diagrama de bloque:

Pic16f877ALed

PORTD

Led

PORTB

Page 2: Deber TercerP

Diseño electrónico:

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

RC2/CCP1 17

RC3/SCK/SCL 18

RD0/PSP0 19

RD1/PSP1 20

RB7/PGD 40RB6/PGC 39

RB5 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

PIC16F877A

D1

LED-RED

D2

LED-RED

D3

LED-RED

D4

LED-RED

D5

LED-RED

D6

LED-RED

D7

LED-RED

D8

LED-RED

D9LED-RED

D10LED-RED

D11LED-RED

D12LED-RED

D13LED-RED

D14LED-RED

D15LED-RED

D16LED-RED

Resultados:

Ejercicio 2

Realizar un juego de luces de una rotación secuencial en el encendido de cada led conectado alpuerto B. Si RA0 = 0 la rotación será de derecha a izquierda, y si RA0 = 1 la rotación será deizquierda a derecha.Si el PIC trabaja a una frecuencia de 4MHz, cada led permanece encendido 0.25 segundos (250ms).

Diagrama de flujo:

Page 3: Deber TercerP

Diagrama de bloque:

Diseño electrónico:

Pic16f877ASwitchRA0

PORTBleds

Page 4: Deber TercerP

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

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

R110k

R1(1)

Resultados:

Swicth =0

Rotacion a la izquierda

Swicth =1

Rotacion a la derecha

Page 5: Deber TercerP

Ejercicio 3

Escribir un programa que cuente el número de veces que se pulsó la tecla conectada al terminal RA4 y que saque ese valor en binario natural por el Puerto B.Diagrama de flujo:

Diagrama de bloques:

Diagrama electrónico:

Pic16f877APulsadorRA4

PORTBleds

Page 6: Deber TercerP

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

R110k

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

Resultados:

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

RC2/CCP1 17

RC3/SCK/SCL 18

RD0/PSP0 19

RD1/PSP1 20

RB7/PGD 40RB6/PGC 39

RB5 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

PIC16F877A

R110k

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

Ejercicio 4

Realizar un circuito que permita mostrar de acuerdo a la siguiente tabla:

Nota:1. Los números ingresados desde el teclado deben tener hasta de 3 dígitos, si ingresa

Page 7: Deber TercerP

más dígitos serán considerados como error.

Diagrama de flujo:

Diagrama de bloque:

Diseño Electrónico:

Page 8: Deber TercerP

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

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7E

6RW

5RS

4

VSS

1VDD

2VEE

3

LCD1LM016L

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

R5

10k

R6

10k

R5(1)

L2L1DCBA

C1C2C3C4

E1E2

C5C6C7

E3

Q12N3904

Q22N3904

Q32N3904

R2

1K

R3

1K

R4

1K

E1E2E3

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U2

74LS48

C7C6C5C4C3C2C1A

BCD

Q42N3904

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

R1

220E0

L2 L1 D C B A

E0

Conclusiones:

Page 9: Deber TercerP

- Se verificó que el lenguaje C es un lenguaje de alto nivel , la programación en lenguaje C es mas sencilla que en lenguaje ensamblador.

- Se verificó que el software realizado en lenguaje C e implementado al hardware da los mismos resultados que los realizados en ensamblador.

- Se comprobó que las instrucciones que posee pic C nos ahorra tiempo durante la programación.Se comprobó que pic c es una herramienta muy útil y eficaz para realizar proyectos que impliquen mayor complejidad.

Recomendaciones:

- Revisar las diferentes instrucciones y estructura del compilador C para PICs .- Verificar la inicialización de las variables utilizadas y de los puertos.

Bibliografía:

Anexos:

- Manual de usuario ejercicio# 4

MANUAL DE USUARIO:

Page 10: Deber TercerP

1) El diseño fue realizado con el pic16f877A.2) Adjuntamos el archivo generado .HEX generado por el compilador picc al circuitos realizado en

proteus.

3) Comenzamos a ejecutar la primera opción:Sw1= ra0Sw2= ra1

Sw1 y sw2 no se presionó. sw1=0; sw2=0

- Se habilita la opción de ingreso por teclado de la siguiente manera:- Para ingresar un numero de 3 dígitos se debe ingresar todos los dígitos por ejemplo:

Para visualizar y guardar los números como el ( 89 , 1 ,100) debemos ingresar por el teclado:089 001100

- Los números se van guardando secuencialmente como estemos ingresando solo digitamos el número completo de 3 dígitos y se guarda automáticamente.

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

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

R5

10k

R6

10k

R5(1)

L2L1DCBA

C1C2C3C4

E1E2

C5C6C7

E3

Q12N3904

Q22N3904

Q32N3904

R2

1K

R3

1K

R4

1K

E1E2E3

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U2

74LS48

C7C6C5C4C3C2C1A

BCD

Q42N3904

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

R1

220E0

L2 L1 D C B A

E0

- Para salir de la opción de ingreso y grabación de los números debemos cambiar el estado de los switch y presionar el ‘*’.

Sw1 no se presionó y sw2 se presionósw1=0; sw2=1

- Ingresamos a la opción de visualizar los datos en el lcd , de forma secuencial y repetitivamente.- Si se ingresa primero a la opción de ingreso y se quiere cambiar los switch , primero se debe

cambiar el estado de los switch y presionar ‘*’.

Page 11: Deber TercerP

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

RC2/CCP1 17

RC3/SCK/SCL 18

RD0/PSP0 19

RD1/PSP1 20

RB7/PGD 40RB6/PGC 39

RB5 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

PIC16F877A

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

R5

10k

R6

10k

R5(1)

L2L1DCBA

C1C2C3C4

E1E2

C5C6C7

E3

Q12N3904

Q22N3904

Q32N3904

R2

1K

R3

1K

R4

1K

E1E2E3

A7 QA 13

B1 QB 12

C2 QC 11

D6 QD 10

BI/RBO4 QE 9

RBI5 QF 15

LT3 QG 14

U2

74LS48

C7C6C5C4C3C2C1A

BCD

Q42N3904

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

R1

220E0

L2 L1 D C B A

E0

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

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

R5

10k

R6

10k

R5(1)

L2L1DCBA

C1C2C3C4

E1E2

C5C6C7

E3

Q12N3904

Q22N3904

Q32N3904

R2

1K

R3

1K

R4

1K

E1E2E3

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U2

74LS48

C7C6C5C4C3C2C1A

BCD

Q42N3904

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

R1

220E0

L2 L1 D C B A

E0

Sw1 se presionó y sw2 no se presionó

Page 12: Deber TercerP

sw1=1; sw2=0- Si se ingresa primero a la opción de ingreso y se quiere cambiar los switch , primero se debe

cambiar el estado de los switch y presionar ‘*’.

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

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

R5

10k

R6

10k

R5(1)

L2L1DCBA

C1C2C3C4

E1E2

C5C6C7

E3

Q12N3904

Q22N3904

Q32N3904

R2

1K

R3

1K

R4

1K

E1E2E3

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U2

74LS48

C7C6C5C4C3C2C1A

BCD

Q42N3904

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

R1

220E0

L2 L1 D C B A

E0

Sw1 y sw2 se presionó sw1=1; sw2=1

- Si se ingresa primero a la opción de ingreso y se quiere cambiar los switch , primero se debe cambiar el estado de los switch y presionar ‘*’.

- En las demás opciones se pude cambiar normalmente los switch sin presionar ninguna tecla.

Page 13: Deber TercerP

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

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

R5

10k

R6

10k

R5(1)

L2L1DCBA

C1C2C3C4

E1E2

C5C6C7

E3

Q12N3904

Q22N3904

Q32N3904

R2

1K

R3

1K

R4

1K

E1E2E3

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U2

74LS48

C7C6C5C4C3C2C1A

BCD

Q42N3904

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

R1

220E0

L2 L1 D C B A

E0