Está en la página 1de 52

Machine Translated by Google

UNIVERSIDAD  TÉCNICA  DE  YILDIZ
FACULTAD  DE  ELECTRICIDAD  ­  ELECTRÓNICA
DEPARTAMENTO  DE  INGENIERÍA  INFORMÁTICA

Microprocesadores  
2010/2011  Primavera  YY
Libro  de  experimentos  de  laboratorio

Estambul  2011
Machine Translated by Google

Contenido

Información  general  y  advertencias  sobre  el  experimento ........................................... .. .................................................. ..................... .....uno

2010/2011  Primavera  YY  Experiment  Program ........................................... .. .................................................. .................. ......uno

Introducción  del  conjunto  de  experimentos  EasyPic6 .................................. ..... ............................................. ..................... .............2

PIC16F887  μC  Introducción.......................................... ........... .................................................... ..... .............................11

Resumen  del  conjunto  de  instrucciones  PIC16F887 .................................. .... ............................................... .................. ...............21

Introducción  del  compilador  MikroC ............................................... .... ............................................... ..................... .............23

Introducción  al  compilador  CCS  C ............................................... ...... ............................................ ...................... .................................24

EXPERIMENTO  1:  Aplicación  de  montaje  de  PIC........................................... ...... ............................................ ...................... .......26

EXPERIMENTO  2 :  Entrada/Salida  y  Aplicación  de  Teclado  4x4 ........................................... ....................................29

EXPERIMENTO  3:  Módulos  e  interrupciones  PIC16F887 ........................................... ....... ..................................................  .31

EXPERIMENTO  4 :  Aplicación  de  Comunicación  Serial  (RS232  e  I2  C)  Usando  Interrupción ......................  34

EXPERIMENTO  5:  GLCD  y  aplicación  de  pantalla  táctil ........................................... .. ................................  36

Recursos................................................. .................................................... ................ .................................. ..........37

Apéndice  1:  Explicaciones  del  comando  PIC16F887 ............................................. ... ............................................................. ................... .....38

Apéndice  2:  Simulación  de  PIC  con  Proteus................................................ ...... ............................................ ...................... ..........45
Machine Translated by Google

Información  general  y  advertencias  sobre  el  experimento

1)  Los  grupos  experimentales  y  las  fechas  se  anunciarán  con  antelación.

2)  Se  realizarán  un  total  de  5  experimentos ,  cada  uno  de  los  cuales  tendrá  una  duración  de  2  horas .

3)  Los  experimentos  se  realizarán  en  grupos  de  2  personas .

4)  Los  experimentos  se  realizarán  con  lenguaje  C  y  lenguaje  ensamblador  PIC  mediante  el  uso  de  compiladores  CCS  C  y  microC  en  

el  conjunto  experimental  EasyPic6 .  El  trabajo  preliminar  para  los  experimentos  se  puede  realizar  en  el  entorno  de  simulación  

de  Proteus.

5)  Antes  de  venir  al  experimento,  verifique  si  tiene  la  última  versión  del  libro  de  prueba.

hazlo.  Es  posible  que  se  realicen  cambios  menores  en  los  experimentos  durante  el  período.

6)  “Qué  hacer  antes  del  experimento  7)  Las   Los  requisitos  de  la  sección  deben  realizarse  antes  del  experimento.

preguntas  al  final  del  experimento  deben  tratar  de  responderse  antes  del  experimento.

8)  "Qué  hacer  en  el  experimento"  se  anunciará  durante  el  experimento.

9)  Está  prohibido  el  intercambio  de  información  entre  estudiantes  durante  el  experimento.

10)  Cuando  se  termine  alguna  de  las  cosas  a  realizar  en  el  experimento,  se  debe  mostrar  al  oficial  y  se  debe  obtener  la  aprobación.

11)  Según  el  reglamento,  el  estudiante  está  obligado  a  continuar  los  experimentos  a  razón  del  80% .

La  continuidad  se  determinará  mediante  encuestas  en  cada  experimento.

12)  La  nota  que  recibirá  el  alumno  del  experimento  al  que  no  asistió  será  cero.

13)  No  se  realizará  prueba  de  recuperación  para  el  laboratorio  del  curso  de  Microprocesadores.

2011/2012  Primavera  YY  Experiment  Program

Los  experimentos  se  realizarán  en  los  laboratorios  D  Block  DB21  y  DB09 .  Las  horas  de  experimentación  y  las  fechas  de  los  grupos  experimentales  

anunciados  se  detallan  a  continuación.

Prueba  1  Prueba  2  Prueba  3  Prueba  4  Prueba  5  20  de  marzo  10  de  abril  

A  (martes  DB21) 17  de  abril  15  de  mayo  22  de  mayo  B  (martes  DB21)

27  marzo  3  abril  24  abril  8  mayo  29  mayo  C  (miércoles  DB21)  28  marzo  

18  abril  25  abril  16  mayo  23  mayo  D  (miércoles  DB21)  4  abril  11  abril  2  mayo  9  mayo  30  E  

(miércoles  DB09)  28  marzo  18  25  de  abril  16  de  abril  23  de  mayo
Machine Translated by Google

Introducción  del  conjunto  de  experimentos  EasyPic6

El  conjunto  de  experimentos  EasyPic6  se  utilizará  durante  los  experimentos.  El  sistema  EasyPic6  es  una  placa  de  aplicación  multifuncional  

desarrollada  para  los  microcontroladores  PIC  de  Microchip.  Se  ha  creado  una  interfaz  de  hardware  con  el  microcontrolador  PIC  en  la  placa  y  

una  serie  de  elementos  de  circuito.

Las  unidades  base  de  la  tarjeta  se  enumeran  a  continuación:
Machine Translated by Google

1)  fuente  de  alimentación

2)  entrada  de  programación  USB

3)  Programador  USB  incorporado  y  depurador  en  circuito  de  hardware  en  tiempo  real  microICD  (depurador  en  circuito)

4)  Módulo  sensor  de  temperatura

5)  Entrada  del  depurador  externo

6)  Puerto  USB  para  microcontroladores  alimentados  por  USB

7)  Módulo  de  entrada  del  convertidor  analógico  a  digital

8)  conector  PS/2

9)  Pantalla  LCD  integrada  de  2x16  caracteres

10)  Interruptores  de  conexión  de  resistencias  para  el  puerto,

11)  Clip  de  selección  desplegable  para  puerto

12)  Pines  de  conexión  de  entrada  y  salida

13)  Tomas  DIP8,  DIP14,  DIP18,  DIP20,  DIP28  y  DIP40

14)  controlador  de  pantalla  táctil

15)  Módulo  de  expansión  de  puertos  16)  

Conector  LCD  gráfico  128x64

17)  Ajuste  de  contraste  gráfico  LCD
Machine Translated by Google

18)  Conector  de  pantalla  táctil

19)  Teclado  menú  20)  

Teclado  4x4

21)  Interruptores  pulsadores

22)  Clip  de  selección  de  nivel  de  entrada  de  pin  cuando  se  presiona  el  botón

23)  Conector  on­off  de  la  resistencia  de  protección

24)  Botón  de  reinicio

25)  LED  conectados  a  los  puertos  de  E/S  del  microcontrolador

26)  ajuste  de  contraste  LCD

27)  Conector  LCD  de  caracteres

28)  Módulo  de  comunicación  RS232

Para  el  microcontrolador  PIC16F887  donde  se  realizarán  los  experimentos,  las  posiciones  predeterminadas  del  clip  para  el  pin  de  selección  del  

nivel  de  programación,  la  selección  del  zócalo  y  el  extremo  MCLR  son  las  siguientes.  Asegúrese  de  que  estos  ajustes  sean  correctos  durante  el  

experimento.

Las  estructuras  esquemáticas  generales  de  los  módulos  de  hardware  que  se  utilizarán  en  los  experimentos  se  dan  a  continuación.
Machine Translated by Google

Para  el  módulo  de  comunicación  RS232,  los  pines  RC6  y  RC7  que  admiten  comunicación  serial  deben  seleccionarse  
como  hardware.  El  interruptor  8  de  SW7  y  el  interruptor  8  de  SW8  deben  estar  encendidos.  No  se  utilizarán  las  claves  
CTS  y  RTS.  Se  conectará  un  cable  serial  entre  el  equipo  de  experimentación  y  la  computadora.  En  el  lado  de  la  
computadora,  la  comunicación  se  proporcionará  mediante  el  uso  de  Hyperterminal  o  el  programa  Serial  Terminal  de  
MikroC  con  la  velocidad  de  transmisión  adecuada  y  la  configuración  necesaria.

El  DS1820  IC  es  un  sensor  de  temperatura  digital  de  resolución  de  9  bits  que  utiliza  el  protocolo  de  comunicación  
llamado  1­wire.  Para  utilizar  el  DS1820,  se  utiliza  un  conector  de  sensor  de  temperatura  en  el  conjunto  de  experimentos.  
El  terminal  que  se  utilizará  para  proporcionar  comunicación  de  1  hilo  en  el  microcontrolador  se  selecciona  con  el  conector  
J11.  El  esquema  del  conjunto  experimental  para  el  sensor  de  temperatura  es  el  siguiente.
Machine Translated by Google

Hay  un  potenciómetro  en  el  conjunto  que  se  utilizará  para  la  aplicación  de  conversión  de  analógico  a  digital.

El  valor  analógico  se  transmite  a  uno  de  los  terminales  RA0,  RA1,  RA2,  RA3,  RA4  del  microcontrolador  con  la  colocación  
adecuada  del  clip  J15.  El  esquema  de  la  placa  auxiliar  de  conversión  de  analógico  a  digital  es  el  siguiente.

Un  LED  está  conectado  a  cada  terminal  de  E/S  para  ser  utilizado  como  salida  en  el  conjunto.  Los  LED  se  pueden  encender  y  
apagar  con  el  interruptor  correspondiente  del  SW9  por  puerto.  Dado  que  el  extremo  del  ánodo  de  los  LED  está  conectado  al  lado  
del  microcontrolador,  se  debe  dar  un  1  lógico  al  extremo  correspondiente  para  que  se  encienda  el  LED.
Machine Translated by Google

Un  pulsador  está  conectado  a  cada  terminal  de  E/S  para  ser  utilizado  como  entrada  en  el  conjunto.

De  acuerdo  con  el  posicionamiento  de  los  clips  J2,  J17  y  los  interruptores  SW1­SW5,  se  pueden  proporcionar  dos  configuraciones  

diferentes  como  0  lógico  cuando  se  presiona  el  botón,  0  lógico  cuando  se  presiona  el  botón  y  1  lógico  cuando  se  presiona  el  botón.  

Cuando  se  presiona  el  botón  con  J17,  se  selecciona  el  valor  que  se  formará  en  el  extremo  del  microcontrolador,  mientras  que  el  valor  

que  se  formará  en  el  extremo  del  microcontrolador  se  determina  cuando  se  suelta  la  tecla  con  el  clip  J2  cuando  SW1­SW5  está  encendido.

La  configuración  del  botón  pulsador  para  un  extremo  del  puerto  B  se  muestra  en  las  siguientes  figuras.
Machine Translated by Google

A  diferencia  de  los  botones  pulsadores,  se  proporcionan  dos  teclados  separados  en  el  conjunto.  El  teclado  del  
menú  está  configurado  como  pulsadores  (RA0­RA5).  El  teclado  4x4  está  en  la  configuración  de  teclado  clásico.  
Se  usa  para  controlar  el  teclado  RD4­RD7,  RD0­RD3  se  usa  para  leer  el  teclado.  J4  debe  estar  en  la  posición  
desplegable,  SW4,  los  primeros  4  interruptores  deben  estar  en  la  posición  de  encendido.

(teclado  4x4  simbólico)
Machine Translated by Google

Las  conexiones  de  hardware  del  módulo  LCD  de  2x16  caracteres  se  realizan  de  acuerdo  con  el  modo  de  funcionamiento  de  4  
bits.  La  luz  de  fondo  de  la  pantalla  LCD  se  enciende  con  el  interruptor  8  de  SW6  y  la  nitidez  se  puede  ajustar  con  el  potenciómetro  
de  contraste  (P4).  Los  terminales  de  datos  y  control  para  el  LCD  de  caracteres  los  proporcionan  los  terminales  PortB  del  
microcontrolador.  A  continuación  se  muestra  el  esquema  del  módulo  LCD  de  2x16  caracteres.
Machine Translated by Google

10

La  luz  de  fondo  de  la  pantalla  LCD  gráfica  de  128x64  se  enciende  girando  el  interruptor  8  del  SW6  a  la  posición  de  encendido.

El  potenciómetro  P3  se  utiliza  para  el  ajuste  del  contraste.  Para  la  pantalla  LCD  gráfica,  los  datos  los  proporcionan  los  terminales  PortB  del  

microcontrolador  y  los  terminales  PortD  proporcionan  el  control.  La  conexión  de  hardware  para  la  pantalla  LCD  gráfica  de  128x64  se  muestra  

en  la  siguiente  figura.

Se  utiliza  conectando  el  panel  de  pantalla  táctil  al  módulo  GLCD.  Las  coordenadas  para  el  punto  tocado  en  el  panel  se  obtienen  por  

conversión  ADC  con  dos  valores  analógicos  diferentes  leídos  horizontal  y  verticalmente.
Machine Translated by Google

11

Presentamos  PIC16F887  μC

El  microcontrolador  PIC16F887  es  un  controlador  de  8  bits  con  arquitectura  RISC.  Dispone  de  35  mandos  
y  dispone  de  mandos  de  ciclo  único,  excepto  mandos  de  bifurcación.

El  PIC16F887  tiene  una  memoria  de  programa  total  de  8192  palabras,  368  bytes  de  memoria  de  datos  
SRAM  y  256  bytes  de  memoria  de  datos  EEPROM.  35  pines  de  E/S,  10  canales  A/D  de  10  bits,  1  avanzado
Tiene  un  módulo  CCP,  1  módulo  CCP,  1  módulo  transmisor  receptor  asíncrono  síncrono  universal  
mejorado,  1  módulo  de  puerto  serie  síncrono  maestro,  2  módulos  de  comparación,  1  módulo  de  
temporizador  de  8  bits  y  2  de  16  bits.

Las  definiciones  de  las  puntas  de  PIC16F887  se  dan  en  la  siguiente  figura.  Las  diferentes  tareas  para  un  extremo  están  controladas  

por  registros  de  propósito  especial  (SFR)  en  la  memoria  de  datos  SRAM.
Machine Translated by Google

12

Las  definiciones  de  terminal  y  las  tareas  para  el  microcontrolador  PIC16F887  se  proporcionan  a  continuación.  Cuando  se  examina  
la  siguiente  tabla,  por  ejemplo,  el  pin  3  se  puede  usar  como  terminal  de  salida  de  entrada  digital  RA1  o  como  terminal  de  entrada  
analógica  AN1  con  los  ajustes  apropiados.  De  acuerdo  con  los  valores  predeterminados  de  los  registros  de  configuración  del  
puerto  después  del  reinicio,  se  pueden  configurar  como  entradas  analógicas.  Todos  los  terminales  se  configuran  como  entradas  
analógicas  después  del  reinicio.  Por  esta  razón,  para  usar  el  pin  3  para  fines  de  entrada  y  salida  digital,  la  inicialización  del  puerto  
deseado  debe  realizarse  en  el  software.
Machine Translated by Google

13

La  estructura  interna  de  PIC16F887  se  muestra  a  continuación.  El  bus  de  dirección  de  memoria  de  programa,  el  bus  de  dirección  
de  memoria  de  datos  SRAM,  el  bus  de  memoria  de  programa,  el  bus  de  memoria  de  datos  SRAM  y  el  direccionamiento  de  
EEPROM  y  los  extremos  de  datos  están  marcados  en  la  figura.  El  registro  W  (registro  de  trabajo)  se  utiliza  como  acumulador  y  
registro  de  propósito  general  en  PIC16F887.
Machine Translated by Google

14

La  organización  de  la  memoria  de  programa  de  PIC16F887  se  muestra  en  la  siguiente  figura.  Las  direcciones  de  vector  de  reinicio  
e  interrupción  en  la  memoria  del  programa  también  están  marcadas  en  la  figura.  Cuando  el  sistema  se  inicia  por  primera  vez  o  
cuando  se  crea  una  condición  de  reinicio  con  el  circuito  de  reinicio,  el  valor  de  dirección  0x0000  se  carga  en  la  PC.  De  manera  
similar,  en  caso  de  interrupción,  la  dirección  0x0004  se  carga  en  la  PC.

El  valor  de  PC  se  crea  con  los  registros  PCL  y  PCLATH.  La  cifra  para  obtener  el  valor  de  PC  se  da  a  continuación.
Machine Translated by Google

15

La  organización  de  la  memoria  de  datos  SRAM  se  proporciona  a  continuación.  En  esta  estructura,  hay  
registros  de  funciones  especiales  para  el  ajuste  y  control  de  los  periféricos  y  áreas  de  registros  de  
propósito  general  disponibles  para  el  usuario.
Machine Translated by Google

dieciséis

Las  definiciones  de  bits  y  los  valores  de  restablecimiento  de  los  registros  SFR  importantes  ubicados  en  la  región  SRAM  se  

proporcionan  en  la  siguiente  tabla.

Dirección Nombre Bit  7 Bit  6 Bit  5 Bit  4 Bit  3 Bit  2 Bit  1 bit  0 Reiniciar

Su  valor  
03h  ESTADO PIR RP1 RP0 A PD CON corriente  continua C es  0001  1xxx
05h  PORTA    RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx  xxxx
06h  PUERTO RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx  xxxx
07h  PUERTO RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx  xxxx
08h  PUERTO RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx  xxxx
09h PUERTA — — — — RE3 RE2 RE1 RE0 ­­­­ xxxx
0Bh  INTCON GIE COMO  ESTO T0IE NO RBI T0IF INTF RBIF 0000  000x
17h  CCP1CON P1M1 P1M0  DC1B1  DC1B0  CCP1M3  CCP1M2  CCP1M1  CCP1M0  0000  0000
1Fh  ADCON0 ADCS1 ADCS0  CHS3 CHS2 CHS1 CHS0  IR/TERMINADO  ADON  0000  0000
85h Trisa TRISA7 TRISA6  TRISA5  TRISA4  TRISA3 TRISA2 TRISA1 TRISA0  1111  1111
86h TRIB TRIB7 TRISB6  TRISB5  TRISB4  TRISB3 TRISB2 TRISB1 TRIB0  1111  1111
87h TRISC TRISC7 TRISC6  TRISC5  TRISC4  TRISC3 TRISC2 TRISC1 TRISC0  1111  1111
88h TERCERO TRISD7 TRISD6  TRISD5  TRISD4  TRISD3 TRISD2 TRISD1 TRISD0  1111  1111
89h TRES — — — —  TRISE3 TRISE2 TRISE1 TRISE0  ­­­­  1111
10Ch  EDAT EEDAT7 EEDAT6  EEDAT5  EEDAT4  EEDAT3  EEDAT2  EEDAT1  EEDAT0  0000  0000
10Dh  EADR EEADR7 EEADR6  EEADR5  EEADR4  EEADR3  EEADR2  EEADR1  EEADR0  0000  0000
188h  ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0  1111  1111
189h  ANSELH — —  ANS13  ANS12  ANS11  ANS10 ANS9 RESP8  ­­11  1111
18  canales  EECON1 EEPGD — — —  WRERR  WREN WR RD x­­­x000
–  =  regiones  no  asignadas,  x  =  indeterminado

Los  modos  para  direccionar  la  memoria  de  datos  SRAM  se  dan  a  continuación  como  direccionamiento  directo  y  direccionamiento  indirecto.

Direccionamiento  directo:  7  bits  de  la  dirección  ram  de  9  bits  provienen  de  la  instrucción  y  el  bit  2  proviene  del  registro  STATUS<6:5>.
Machine Translated by Google

17

//Si  ESTADO  se  define  como  0x03
ESTADO  BSF,  6

ESTADO  BSF,  5
MOVLW  0xFF

MOVWF  0x0C

//  0xFF  escrito  en  el  registro  EECON1  SFR

//Si  ESTADO  se  define  como  0x03
ESTADO  BSF,  6

ESTADO  FBC,  5
MOVLW  0xFF

MOVWF  0x0C

//  0xFF  se  ha  escrito  en  el  registro  EEDAT  SFR

Direccionamiento  indirecto:  8  bits  de  la  dirección  de  9  bits  provienen  del  registro  FSR  y  un  bit  proviene  del  registro  STATUS<7>.

ESTADO  FBC,  7
MOV  LW  0x20

MOVWF  FSR

NEXT :  CLRF  INDF //  en  direccionamiento  indirecto  se  accede  a  la  celda  de  memoria  escrita  en  el  registro  INDF
FSR  FIN

BTFSS  FSR,4

GOTO  NEXT //  Borra  la  memoria  de  datos  SRAM  entre  las  direcciones  0x20  ­0x2F

A  diferencia  de  los  modos  de  direccionamiento  mencionados  anteriormente,  el  modo  de  direccionamiento  relativo  también  es
esta  apoyado.
Machine Translated by Google

18

La  estructura  esquemática  de  los  registros  y  módulos  SFR  necesarios  para  los  módulos  PIC16F887  que  se  utilizarán  en  los  
experimentos  a  realizar  se  muestra  a  continuación.

A  continuación  se  presenta  la  estructura  del  módulo  EUSART.
Machine Translated by Google

19

La  estructura  del  módulo  de  conversión  analógico­digital  se  muestra  a  continuación.

La  estructura  del  módulo  Capture /  Compare /  PWM  se  muestra  a  continuación.
Machine Translated by Google

20

La  estructura  de  la  función  I2C  para  el  módulo  MSSP  se  muestra  a  continuación:
Machine Translated by Google

21

Resumen  del  conjunto  de  instrucciones  PIC16F887

Estado
Código  de  operación  de  14  bits
Mnemotécnico, Afectado
Descripción Ciclos notas
operandos
MSb LSb

OPERACIONES  DE  REGISTRO  DE  ARCHIVO  ORIENTADO  A  BYTE

ADDWF  f,  d  Añadir  W  y  f 1 00  0111  dfff  ffff  C,  DC,  Z  00  0101  dfff  ffff 1,  2  


ANDWF  f,  d  Y  W  con  f CON
1,  2  
CLRF F Borrar  f 1  1 00  0001  ffff  ffff CON 2
CLRW – Borrar  W 1 00  0001  0xxx  xxxx CON

COMF f,  d  Complemento  ff,  d   00  1001  ffff  ffff CON


1,  2  
DECF Decremento  f 00  0011  dfff  ffff  00  1011  dfff  ffff CON
1,  2  
DECFSZ  f,  d  Decrementar  f,  Saltar  si  0 1  1  1(2) 1,  2,  3

FIN f,  d  Incrementar  ff,  d   00  1010  ffff  ffff CON


1,  2  
INCFSZ Incrementar  f,  Saltar  si  0 1  1(2) 00  1111  ffff  ffff 1,  2,  3

IORWF  f,  d  Inclusivo  OR  W  con  f 00  0100  dff  ffff  00  1000  dff  ffff CON


1,  2  
MOVF  f,  d  Mover  f 1  1 CON
1,  2
MOVWF  f  Mover  W  a  f 1 00  0000  ffff  ffff

NOP ­  No  operacion 1 00  0000  0xx0  0000


RLF f,  d  Rotar  a  la  izquierda  f  a  través  de   1 00  1101  ffff  ffff C 1,  2  
FRR Carry  f,  d  Rotar  a  la  derecha  f  a  través  de  Carry 1 00  1100  dfff  ffff C 1,  2  
SUBWF  f,  d  Restar  W  de  f 00  0010  dfff  ffff  C,  DC,  Z  00  1110  dfff  ffff 1,  2  
SWAPF  f,  d  Intercambiar  nibbles  en  f 1  1 1,  2

XORWF  f,  d  OR  exclusivo  W  con  f 1 00  0110  ffff  ffff CON


1,  2

OPERACIONES  DE  REGISTRO  DE  ARCHIVOS  ORIENTADOS  A  BITS

FCB f,   poco  claro  f 1 01  00bb  bfff  ffff 1,  2  


BSF bf,  b Juego  de  bits  f 1 01  01bb  bfff  ffff 1,  2

BTFSC f,  b Bit  Test  f,  Saltar  si  Borrar 1  (2)   01  10bb  bfff  ffff 3

BTFSS f,  b Prueba  de  bits  f,  omitir  si  se  establece 1  (2) 01  11bb  bfff  ffff 3

OPERACIONES  LITERAL  Y  DE  CONTROL

ADDLW k  Añadir  literal  y  W 1 11  111x  kkkk  kkkk  C,  DC,  Z

ANDLW k  AND  literal  con  W 1 11  1001  kkkk  kkkk CON

LLAMAR 10   0kkk   jajaja   jajaja  


k­ Llamar  subrutina  Borrar  vigilancia 2  1
CLRWDT 00 0000 0110 0100
Temporizador
A,  PD
IR  A k  Ir  a  dirección 2 10  1kkkkkkkkkkkk

IORLW k literal  OR  inclusivo  con  W 1 11  1000  kkkk  kkkk CON

MOVLW k  Mover  literal  a  W 1 11  00xx  kkkk  kkkk


– 2 00  0000  0000  1001
RECUPERAR Regreso  de  interrupción
RETLW k Regresa  con  literal  en  W 2 11  01xx  kkkk  kkkk

DEVOLVER Regresar  de  subrutina  Entrar 00   0000   0000   1000


–  –
2  1
DORMIR Modo  de  espera 00 0000 0110 0011  TO,  PD  11  
SUBLW k Restar  W  de  literal 1 110x  kkkk  kkkk  C,  CC,  Z

XORLW k Exclusivo  OR  literal  con  W 1 11  1010  kkkk  kkkk CON

1:  Cuando  se  modifica  un  registro  de  E/S  en  función  de  sí  mismo  (p.  ej.,  MOVF  GPIO,  1),  el  valor  utilizado  será  el  valor  presente  en  los  propios  pines.  
Por  ejemplo,  si  el  latch  de  datos  es  '1'  para  un  pin  configurado  como  entrada  y  un  dispositivo  externo  lo  reduce,  los  datos  se  volverán  a  escribir  con  un  
'0'.
2:  Si  esta  instrucción  se  ejecuta  en  el  registro  TMR0  (y  en  su  caso,  d  =  1),  el  preescalador  se  borrará  si  se  asigna  al  módulo  Timer0.

3:  Si  se  modifica  el  Contador  de  programa  (PC),  o  una  prueba  condicional  es  verdadera,  la  instrucción  requiere  dos  ciclos.  El  segundo  ciclo  se  ejecuta  
como  NOP.
Machine Translated by Google

22

campo  Descripción

F Registrar  dirección  de  archivo  (0x00  a  0x7F)

W  Registro  de  trabajo  (acumulador)

b Dirección  de  bit  dentro  de  un  registro  de  archivo  de  8  

k bits  Campo  literal,  dato  constante  o  etiqueta  No  importa  
X la  ubicación  (=  0  o  1).  El  ensamblador  generará  código  
con  x  =  0.  Es  la  forma  de  uso  recomendada  para

compatibilidad  con  todas  las  herramientas  de  software  de  
Microchip.

d Selección  de  destino;  d  =  0:  almacena  el  resultado  en  W,  d  =  1:  
almacena  el  resultado  en  el  registro  del  archivo  f.  El  valor  
predeterminado  es  d  =  1.

Contador  de  programa  de  PC
TO  Bit  de  tiempo  de  espera

C  Bit  de  transporte

Bit  de  acarreo  de  dígitos  de  CC

CON bit  cero

Bit  de  apagado  PD
Machine Translated by Google

23

Introducción  del  compilador  MikroC

MikroC  es  un  compilador  de  C  para  microcontroladores  PIC.

Para  crear  un  proyecto  y  subirlo  al  microcontrolador  se  siguen  los  siguientes  pasos:

1)  Al  ejecutar  el  programa  mikroC,  se  abre  el  IDE  microC  2)  Se  

abre  una  nueva  ventana  de  proyecto  yendo  a  Proyecto  >  Nuevo  proyecto  3)  

Después  de  ingresar  el  nombre  y  la  ruta  del  proyecto,  se  selecciona  PIC16F887  en  el  menú  

Dispositivo  4)  El  valor  del  reloj  se  ingresa  como  8,000,000  5)  Se  hace  clic  en  el  botón  Predeterminado  

en  la  sección  Indicadores  del  dispositivo  6)  El  código  relevante  se  escribe  en  el  archivo .c  creado  

por  el  compilador  7)  El  proyecto  se  compila  a  través  de  Proyecto>  Construir  8)  El  archivo  hexadecimal  

se  compila  a  través  de  Herramientas  >  mi  programador  se  transfiere  al  microcontrolador

El  bloque  Asm  debe  usarse  cuando  se  desea  usar  instrucciones  de  ensamblado  PIC  con  el  compilador  MikroC.

myvar  sin  firmar ;  void  
main()  { mivar=0;  asm  {

MOVIL  10
MOVLW  test_main_global_myvar_1
}
}

Tiene  bibliotecas  de  aplicaciones  generales  o  específicas  de  microcontroladores  en  las  que  se  desarrollarán  aplicaciones  en  el  

compilador  MikroC.  Se  puede  acceder  a  las  explicaciones  de  estas  bibliotecas  a  través  de  la  ruta  Bibliotecas  de  MikroC  en  la  pestaña  

Contenidos  del  menú  Ayuda  >  Ayuda  en  el  IDE  de  mikroC.

!
Al  examinar  el  archivo .lst  creado  como  resultado  del  proceso  de  compilación  con  el  compilador  MikroC,  se  pueden  ver  los  

comandos  de  ensamblado  PIC  producidos  contra  los  códigos  c.
Machine Translated by Google

24

Introducción  al  compilador  CCS  C

CCS  C  es  un  compilador  de  C  para  microcontroladores  PIC.

Para  crear  un  proyecto  y  subirlo  al  microcontrolador  se  siguen  los  siguientes  pasos:

1)  Al  ejecutar  PIC  C  Compiler,  se  abre  CCS  C  IDE  2)  Se  
selecciona  Project  Wizard  en  la  pestaña  Project  3)  Se  
especifica  la  ruta  para  guardar  el  proyecto  4)  PIC16F887  
se  selecciona  como  Device  en  General  title  Options  tab  en  la  ventana  PIC  Wizard  5)  Se  ingresa  el  valor  8,000,000  como  
Frecuencia  del  oscilador  6)  En  la  sección  Fusibles  Se  selecciona  Osc  de  alta  velocidad  (>4  mhz)  7)  Se  marca  la  opción  
Habilitar  MSCLR  8)  Los  ajustes  se  confirman  con  el  botón  OK  9)  El  código  relevante  se  escribe  en  el .  c  creado  por  el  
compilador  10)  El  proyecto  se  compila  haciendo  clic  en  el  botón  Compile  debajo  de  la  pestaña  Compile  en  la  ventana  
IDE  11)  Se  ejecuta  el  programa  Mikroelektronika  mikroProg  Suite  For  PIC  12)  PIC16F  se  selecciona  en  la  sección  MCU  
Family  13)  PIC16F887  se  selecciona  en  Sección  del  dispositivo  14)  El  archivo  hexadecimal  compilado  mediante  Archivo  
>  Cargar  hexadecimal  se  carga  en  el  programa  15)  El  código  hexadecimal  se  carga  en  el  microcontrolador  con  el  botón  
Escribir
Machine Translated by Google

25

Cuando  se  usan  instrucciones  de  ensamblaje  PIC  con  el  compilador  CCS  C,  se  debe  usar  el  bloque  asm.

anular  función_asm(){ #asm

FBC  3,6
FBC  3,5
MOVIL  0x11
MOVWF  0x20
FBC  3,6
FBS  3,5
MOV  LW  0x33
MOVWF  0x20
#endasmo
}

Desde  el  menú  de  ayuda  de  las  descripciones  de  las  bibliotecas  de  aplicaciones  del  compilador  CCS  C accesible.

!
Al  examinar  el  archivo .lst  creado  como  resultado  del  proceso  de  compilación  con  el  compilador  CCS  C,  se  pueden  ver  los  
comandos  de  ensamblaje  PIC  producidos  contra  los  códigos  c.
Machine Translated by Google

26

EXPERIMENTO  1:  Aplicación  de  ensamblaje  PIC

Cosas  que  hacer  antes  del  experimento

¿Cuál  es  el  tamaño  de  palabra  de  la  memoria  del  programa  para  el  PIC16F887?

Dado  que  el  tamaño  de  la  memoria  del  programa  para  el  PIC16F887  es  de  114688  bits  en  total,  ¿cuántos  valores  de  palabra  de  la  memoria  del  

programa  se  pueden  direccionar?

¿Cuál  es  el  ancho  del  bus  de  direcciones  de  la  memoria  del  programa?

¿Cuál  es  el  tamaño  de  palabra  de  la  memoria  SRAM  para  el  PIC16F887?

Dado  que  el  tamaño  de  la  memoria  SRAM  para  el  PIC16F887  es  de  2944  bits  en  total,  ¿cuántos  valores  de  palabra  de  memoria  SRAM  se  pueden  

abordar?

¿Cuál  es  el  ancho  del  bus  de  direcciones  de  memoria  SRAM?

¿Cuáles  son  los  anchos  de  bus  y  bus  de  dirección  de  memoria  de  datos  EEPROM  para  el  PIC16F887?  (Tamaño  total  de  la  memoria  de  datos  

EEPROM  2048  bits)

Examine  los  registros  SFR  que  se  utilizarán  en  el  experimento.  (Para  información  más  detallada,  ver  catálogo  16F887 )

Compile  el  código  de  plantilla  de  la  pregunta  de  ejemplo  1  dado  y  configúrelo  para  que  se  use  como  el  código  hexadecimal  para  16F887  en  Proteus.  

Al  iniciar  Proteus  en  modo  de  depuración,  observe  la  dirección  de  reinicio  para  el  PIC16F887.

Pregunta  de  ejemplo  1  Encuentre  la  dirección  de  la  función  principal  compilando  el  código  de  la  plantilla  y  ejecutando  Proteus  en  modo  de  depuración.  

Consulte  los  pasos  para  ramificarse  a  la  función  principal  desde  el  reinicio.  Examine  el  archivo  *.lst  resultante  de  la  compilación.

La  pregunta  de  ejemplo  1  implementa  el  cambio  deseado  en  el  código  de  la  plantilla:  En  la  memoria  de  datos  SRAM  del  PIC16F887,  implemente  el  

programa  que  escribe  1  en  la  dirección  de  desplazamiento  20  del  banco  3  si  el  bit  5  del  valor  en  el  desplazamiento  0x20  del  banco  1  es  0  y  1  en  el  

desplazamiento  del  banco  2  20  si  el  bit  1  es  1  con  instrucciones  de  montaje  PIC. .  Compile  el  código  con  el  compilador  CCS  C  y  ejecútelo  en  la  

simulación  de  Proteus  correspondiente.

Pregunta  de  ejemplo  2  Realice  el  cambio  deseado  en  el  código  de  la  plantilla:  Cree  el  programa  con  instrucciones  de  ensamblaje  PIC,  que  lee  las  

primeras  3  palabras  (en  las  direcciones  0x00,  0x01,  0x02)  en  la  región  de  memoria  de  datos  EEPROM  del  PIC16F887  y  las  escribe  desde  el  banco3  

dirección  de  desplazamiento  0x20  en  la  región  de  memoria  de  datos  SRAM.  Compile  el  código  con  el  compilador  CCS  C  y  ejecútelo  en  la  simulación  

de  Proteus  correspondiente.

Registros  Importantes  para  el  Experimento:

REGISTRO  DE  ESTADO

Contiene  el  estado  aritmético  de  la  unidad  ALU,  el  estado  de  reinicio  y  los  bits  de  selección  de  banco.

b7 b6 b5 b4 b3 b2 b1 b0

PIR RP1 RP0 CON


CORRIENTE  CONTINUA/ C/
Bit7 Selección  de  banco  de  direccionamiento  indirecto  
bit  0  =  banco0  y  banco1

1  =  banco2  ve  banco3
Machine Translated by Google

27

Bit<6:5>  Bits  de  selección  de  banco  de  direccionamiento  directo
00  =  banco0

01  =  banco1

10  =  banco2

11  =  banco3

Bit2 indicador  de  

cero  0  =  resultado  de  la  operación  aritmética  o  lógica  no  0  

1  =  resultado  de  la  operación  aritmética  o  lógica  0  resultado  
Bit1 de  la  suma  de  dígitos  (consiste  en  el  cuarto  bit  de  bajo  significado),  resta  obtenida  suma  (ocurre  desde  
bit0 el  bit  significativo  más  alto),  resta  obtenida

REGISTRO  ANSEL  y  ANSELH

Bits  de  selección  de  E/S  analógica  a  digital  para  los  puertos  A  y  E.  (ANSEL)

b7 b6 b5 b4 b3 b2 b1 b0
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0

Bit<7:0>  Bits  de  selección  analógicos;  E/S  digital  o  terminal  selector  analógico  para  terminales  AN0­AN7

1  =  Entrada  analógica

0  =  E/S  digitales

Bits  de  selección  de  E/S  analógica  a  digital  para  el  puerto  B.  (ANSELH)

b7 b6 b5 b4 b3 b2 b1 b0
ANS13 ANS12 ANS11 ANS10 ANS9 ANS8

Bit<5:0>  Bits  de  selección  analógicos;  E/S  digital  o  terminal  selector  analógico  para  terminales  AN0­AN7

1  =  Entrada  analógica

0  =  E/S  digitales

Los  terminales  que  se  pueden  configurar  como  E/S  analógica  o  digital  y  las  definiciones  correspondientes  de  E/S  digital  y  terminal  analógico  son  los  

siguientes.  Todos  los  terminales  que  se  pueden  configurar  como  entradas  analógicas  obtienen  el  valor  inicial  como  entrada  analógica  ajustada,  debido  

al  restablecimiento  de  los  valores  predeterminados.  Si  se  van  a  utilizar  los  extremos  correspondientes  para  E/S  digital,  los  valores  iniciales  deseados  se  

deben  proporcionar  en  el  software.

EECON1:  REGISTRO  DE  CONTROL  DE  EEPROM

b7 b6 b5 b4 b3 b2 b1 b0
EEPGD WRERR  WREN WR RD
Bit7 Bit  de  selección  de  programa/datos  EEPROM

0  =  acceso  a  memoria  de  datos  

1  =  acceso  a  memoria  de  programa
Bit3 Bandera  de  error  de  EEPROM

0  =  Aplicación  de  parches  interrumpida

1  =  Operación  de  escritura  exitosa
Bit2 Bit  de  permiso  de  escritura  de  la  EEPROM

0  =  Impedir  la  escritura  de  datos  en  la  EEPROM

1  =  Habilitar  ciclo  de  escritura
Machine Translated by Google

28

Bit1 bit  de  control  de  escritura

0  =  ciclo  de  escritura  de  EEPROM  completado  con  éxito

1  =  Iniciar  ciclo  de  escritura
bit0 bit  de  control  de  lectura

0  =  No  empezar  a  leer

1  =  Iniciar  ciclo  de  lectura

EEADR:  REGISTRO  DE  DIRECCIÓN  EEPROM

b7 b6 b5 b4 b3 b2 b1 b0
EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0

Bit<7:0>  Dirección  de  retención  de  registro  en  operaciones  de  lectura  y  escritura  de  EEPROM

EEDAT:  REGISTRO  DE  DATOS  EEPROM

b7 b6 b5 b4 b3 b2 b1 b0
EEDAT7 EDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EDTA1 EHEAD0

Bit<7:0>  Registro  que  contiene  datos  en  operaciones  de  lectura  y  escritura  de  EEPROM

Cosas  que  hacer  durante  el  experimento

SE  DARÁN  PREGUNTAS  DURANTE  EL  EXPERIMENTO

Preguntas  de  fin  de  experimento

¿Para  qué  se  utilizan  las  memorias  de  datos  EEPROM  y  SRAM  del  microcontrolador  PIC16F887?

¿Cuál  es  el  nombre  que  se  le  da  a  las  arquitecturas  de  procesador  que  tienen  una  pequeña  cantidad  de  instrucciones  y  están  diseñadas  

para  completar  la  mayoría  de  estas  instrucciones  en  tiempos  de  ciclo  cortos?

¿Cuál  es  el  nombre  que  se  le  da  a  las  arquitecturas  de  procesador  en  las  que  la  memoria  de  datos  y  la  memoria  de  programa  están  separadas?

¿Cuáles  son  las  ventajas  y  desventajas  de  la  memoria  de  datos  y  la  memoria  de  programa  separadas?
Machine Translated by Google

29

EXPERIMENTO  2:  Entrada/Salida  y  Aplicación  de  Teclado  4x4

Cosas  que  hacer  antes  del  experimento

Explicar  el  concepto  de  antirrebote  en  el  uso  de  botones/botones/interruptores  en  aplicaciones  de  entrada.  Especifique  y  describa  un  método  

para  la  implementación  de  rebotes  de  software.

Investigue  la  lógica  del  escaneo  de  llaves  4x4.  (teclado  4x4)

Examine  los  registros  SFR  que  se  utilizarán  en  el  experimento.  (Para  información  más  detallada,  ver  catálogo  16F887 )

Por  ejemplo,  la  pregunta  1,  abra  la  simulación  de  Proteus  e  inicie  la  simulación.  Observe  el  resultado  de  la  aplicación  de  luz  deslizante  en  

PORTD  como  resultado  de  ejecutar  un  código  hexadecimal  proporcionado  por  simulación  por  precompilado.  Realice  el  cambio  necesario  en  el  

código  de  plantilla  de  la  pregunta  de  muestra  1:  implemente  la  implementación  de  luz  flotante  con  los  comandos  de  ensamblado  PIC.

Realice  los  cambios  necesarios  en  el  código  de  la  plantilla  proporcionado  para  la  pregunta  de  ejemplo  2:  Implemente  el  programa  con  comandos  

de  ensamblaje  PIC,  que  enciende  todos  los  LED  en  el  PORTD  para  el  botón  SW1  solo  cuando  se  presiona,  y  apaga  todos  los  LED  en  el  PORTD  

para  los  botones  SW2,  cuando  solo  se  suelta  el  botón.

Por  ejemplo,  la  pregunta  3,  abra  la  simulación  de  Proteus  e  inicie  la  simulación.  Observe  la  impresión  de  "4321"  en  la  pantalla  de  7  piezas  como  

resultado  de  la  ejecución  de  un  código  hexadecimal,  que  se  compiló  previamente  y  se  proporcionó  con  la  simulación.  Realice  el  cambio  

necesario  en  el  código  de  plantilla  de  la  pregunta  de  muestra  3:  Implemente  el  código  ensamblador  PIC  que  imprimirá  los  últimos  4  dígitos  de  

su  número  en  la  pantalla  de  7  segmentos.

Registros  Importantes  para  el  Experimento:

PORTx:  REGISTRO  DE  PORTx  (x:  se  aplica  a  A,  B,  C  y  D,  E)

b7 b6 b5 b4 b3 b2 b1 b0
Rx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0

Bit<7:0>  Terminal  de  E/S  PORTx

0  =  Escribir  0  lógico  en  el  extremo  del  puerto

1  =  Escribir  1  lógico  en  el  extremo  del  puerto

TRISx :  REGISTRO  DE  CONTROL  TRIESTADO  PORTx  (se  aplica  a  x :  A,  B,  C  y  D,  E)

b7 b6 b5 b4 b3 b2 b1 b0
TRISx7 TRISx6 TRESEx5 TRESEx4 TRISx3 TRISx2 TRESEx1 TRESEx0

Bit<7:0>  Bits  de  control  triestado  PORTx

0  =  Establecer  propina  como  salida

1  =  Establecer  propina  como  entrada

Cosas  que  hacer  durante  el  experimento:

SE  DARÁN  PREGUNTAS  DURANTE  EL  EXPERIMENTO
Machine Translated by Google

30

Preguntas  de  fin  de  experimento

¿Por  qué  la  comunicación  del  microcontrolador  con  el  mundo  exterior  se  realiza  a  través  de  puertos  pero  no  a  través  de  rutas  de  datos/

direcciones?

Complete  la  siguiente  tabla  con  los  valores  que  se  deben  enviar  a  la  pantalla  de  7  segmentos  con  
cátodo  común  y  ánodo  común  para  mostrar  los  números  0­9.

Ánodo  común cátodo  común
gfedcbagfedcba
0
1 0  0  0  0  1  1  0
2
3
4
5
6
7  1  1  1  1  0  0  0
8
9
Machine Translated by Google

31

EXPERIMENTO  3:  Módulos  e  interrupciones  PIC16F887

Cosas  que  hacer  antes  del  experimento:

Examine  la  estructura  y  los  registros  relacionados  de  los  módulos  PORTB,  Timer  1,  ADC  y  CCP2  para  el  microcontrolador  PIC16F887.  Investigue  

los  usos  y  propósitos  de  estos  módulos.

Explora  el  concepto  de  corte.  Revise  y  enumere  las  diferentes  fuentes  de  interrupción  para  el  PIC16F887.  Enumere  los  registros  y  bits  relacionados  

con  la  interrupción  externa  (relacionados  con  INT  RB0),  la  interrupción  del  temporizador  1,  la  interrupción  del  ADC,  la  interrupción  del  CCP2,  y  

describa  sus  funciones.

El  experimento  3  se  realizará  utilizando  el  compilador  CCS  C  y  el  lenguaje  C.  A  continuación  se  encuentran  las  bibliotecas  de  varios  módulos  para  

este  compilador,  échale  un  vistazo.

Biblioteca  CCS  ADC

CONFIGURAR_ADC_CANAL( )

CONFIGURACIÓN_ADC_PORTS( )

Modo  SETUP_ADC  (modo):  
modo  analógico  a  digital.  Las  opciones  válidas  varían  según  el  dispositivo.  Consulte  el  archivo .h  de  dispositivos  para  ver  todas  las  opciones.  
Algunas  opciones  típicas  incluyen:

•  ADC_OFF  •  

ADC_CLOCK_INTERNAL  •  

ADC_CLOCK_DIV_32

LEER_ADC( )

ADC_DONE  
#dispositivo  ADC=x

Biblioteca  CCS  CCP

SET_PWM1_DUTY( )

El  modo  SETUP_CCP1(modo)  
es  una  constante.  Las  constantes  válidas  están  en  el  archivo  de  dispositivos .h  y  son  las  siguientes:

Deshabilitar  el  PCC:

•  CCP_OFF
Establezca  el  modo  CCP  en  PWM:

•  CCP_PWM  Habilitar  modulador  de  ancho  de  pulso

SET_PWM2_DUTY( )

CONFIGURACIÓN_CCP2( )
Machine Translated by Google

32

Biblioteca  de  temporizador  CCS

ESTABLECER_TEMPORIZADOR0( )

El  modo  SETUP_TIMER_0( )  
puede  ser  una  o  dos  de  las  constantes  definidas  en  el  archivo .h  de  los  dispositivos.

•  RTCC_INTERNAL,  RTCC_EXT_L_TO_H  o  RTCC_EXT_H_TO_L  •  RTCC_DIV_2,  

RTCC_DIV_4,  RTCC_DIV_8,  RTCC_DIV_16,  RTCC_DIV_32,  RTCC_DIV_64,
RTCC_DIV_128,  RTCC_DIV_256

•  Se  puede  usar  una  constante  de  cada  grupo  or'ed  junto  con  el  |  operador

ESTABLECER_TEMPORIZADOR1( )

Los  valores  del  modo  
SETUP_TIMER_1(mode)  pueden  ser:

•  T1_DISABLED,  T1_INTERNAL,  T1_EXTERNAL,  T1_EXTERNAL_SYNC  •  T1_CLK_OUT  •  
T1_DIV_BY_1,  T1_DIV_BY_2,  T1_DIV_BY_4,  T1_DIV_BY_8  •  las  constantes  de  diferentes  grupos  se  
pueden  unir  con  or  junto  con  |

ESTABLECER_TEMPORIZADOR2( )

El  modo  SETUP_TIMER_2(mode,  period,  postscale)  puede  
ser  uno  de  los  siguientes:

•  T2_DISABLED,  T2_DIV_BY_1,  T2_DIV_BY_4,  T2_DIV_BY_16

period  es  un  int  0­255  que  determina  cuándo  se  restablece  el  valor  del  reloj,

postscale  es  un  número  del  1  al  16  que  determina  cuántos  temporizadores  se  desbordan  antes  de  una  interrupción:  (1  significa  una  vez,  2  
significa  dos  veces,  y  así  sucesivamente).

Biblioteca  de  E/S  CCS

SET_TRIS_A( )
CONJUNTO_TRIS_B( )

SET_TRIS_C( )
SET_TRIS_D( )

ENTRADA_A( )
ENTRADA_B( )
ENTRADA_C( )
ENTRADA_D( )

SALIDA_A( )
SALIDA_B( )
SALIDA_C( )
SALIDA_D( )
SALIDA_CAMBIO( )

Biblioteca  de  retardo  CCS

DEMORA_MS( )

DELAY_US( )
Machine Translated by Google

33

Los  cálculos  requeridos  del  período  PWM,  el  trabajo  y  la  resolución  durante  el  experimento  se  dan  a  continuación:

[( )] ( )

( ) ( )

[ ( )]

Dado  que  el  ancho  del  pulso  puede  ser  tanto  como  el  período  PWM,  el  valor  significativo  más  grande  que  se  puede  
escribir  como  valor  de  trabajo  se  puede  calcular  tomando  PulseWidth=PWMPeriod.  El  valor  es  el  período  
funcionamiento  
de  
del  microcontrolador.  En  los  experimentos  se  utiliza  una  frecuencia  operativa  de  8  MHz.

Cosas  que  hacer  durante  el  experimento

SE  DARÁN  PREGUNTAS  DURANTE  EL  EXPERIMENTO

Preguntas  de  fin  de  experimento

Después  de  realizar  los  ajustes  necesarios  de  los  módulos  de  hardware  (como  CCP,  Timer),  ¿cuáles  son  los  efectos  en  
la  ejecución  del  comando  durante  su  trabajo?  Explique  la  pregunta  comparando  una  pieza  del  programa  que  alterna  el  
LED  conectado  al  pin  RA0  cada  5  segundos  con  el  módulo  del  temporizador  y  el  retraso  del  software  en  el  caso  de  que  
lo  haya  hecho.

Para  la  señal  analógica  dada  a  continuación,  muestree  con  una  resolución  de  3  bits  con  un  período  de  1  segundo.  Trace  el  
resultado  en  el  siguiente  gráfico.
Machine Translated by Google

34

EXPERIMENTO  4:  Aplicación  de  comunicación  serial  (RS232  e  I2C)  usando  interrupción

Cosas  que  hacer  antes  del  experimento:

Busque  niveles  eléctricos  significativos  para  los  lados  del  receptor  y  el  transmisor  para  los  protocolos  de  comunicación  RS232  e  I2C.  (Por  ejemplo,  

en  RS  232,  el  rango  de  ­5:­15  se  acepta  como  0  lógico  en  el  lado  del  transmisor).

Investigue  la  cantidad  mínima  de  conexiones  y  definiciones  de  terminales  requeridas  para  los  protocolos  de  comunicación  RS232  e  I2C.

Busque  las  definiciones  de  formato  para  el  siguiente  marco  de  datos  de  muestra  del  protocolo  de  comunicación  RS232:  velocidad  en  baudios,  

número  de  bits  de  datos,  tipo  de  paridad,  número  de  bits  de  parada.  ¿Es  D1  LSB  o  MSB  para  datos?

104 s

D1

Comienzo  inactivo Datos Paridad Detener inactivo

Para  el  protocolo  de  comunicación  I2C,  las  condiciones  de  inicio,  parada,  comunicación  direccional  maestro esclavo  y  comunicación  direccional  

esclavo maestro  se  indican  a  continuación.

Examine  los  registros  SFR  16F887  para  comunicación  RS232  e  I2C.

Examine  la  información  del  catálogo  de  8583  RTC  IC.

La  plantilla  de  código  que  se  puede  usar  para  el  uso  de  la  interrupción  de  comunicación  en  serie  para  el  compilador  CCS  C  se  proporciona  a  

continuación.
Machine Translated by Google

35

#include  "principal.h"

#INT_RDA  
vacío  rda_isr(){
//Esta  función  se  llama  cuando  se  produce  una  interrupción  de  recepción  de  datos  en  serie  RS232 }

#INT_TBE  
vacío  tbe_isr(){
//Esta  función  se  llama  cuando  se  produce  una  interrupción  de  transmisión  de  datos  en  serie  RS232 }

void  main()
{ enable_interrupts(GLOBAL);//activar  las  interrupciones  
enable_interrupts(INT_RDA);//activar  la  interrupción  de  recepción  serie  RS232  enable_interrupts(INT_TBE);//
activar  la  interrupción  de  envío  serie  RS232

A  continuación  se  proporciona  un  formulario  de  conexión  de  ejemplo  para  el  IC  PC8583.

Cosas  que  hacer  durante  el  experimento:

SE  DARÁN  PREGUNTAS  DURANTE  EL  EXPERIMENTO
Machine Translated by Google

36

EXPERIMENTO  5:  GLCD  y  aplicación  de  pantalla  táctil

Cosas  que  hacer  durante  el  experimento:

SE  DARÁN  PREGUNTAS  DURANTE  EL  EXPERIMENTO
Machine Translated by Google

37

recursos
Información  del  catálogo  16F887:  http://ww1.microchip.com/downloads/en/DeviceDoc/41291E.pdf

Guía  del  usuario  de  EasyPic6:  
http://www.mikroe.com/eng/downloads/get/311/easypic6_manual_v100.pdf

Guía  del  usuario  de  MikroProg :  
http://www.mikroe.com/eng/downloads/get/1265/mikroprog_manual_v100.pd0f

Información  del  catálogo  RTC  8583:  http://www.datasheetcatalog.org/datasheet/philips/PCF8583_5.pdf
Machine Translated by Google
38
Apéndice  1:  Explicaciones  del  comando  PIC16F887
Machine Translated by Google
39
Machine Translated by Google
40
Machine Translated by Google
41
Machine Translated by Google
42
Machine Translated by Google
43
Machine Translated by Google
44
Machine Translated by Google

45

Anexo  2:  Simulación  PIC  con  Proteus

En  Proteus,  el  programa  ISIS  se  usa  para  la  simulación  de  circuitos  y  el  programa  ARES  se  usa  para  preparar  la  placa  de  circuito  impreso.  Para  simular  PIC  con  

Proteus  ISIS  se  deben  seguir  los  siguientes  pasos.

Después  de  ejecutar  el  programa  ISIS,  la  ventana  de  selección  de  dispositivos  se  abre  haciendo  clic  en  los  botones  marcados  en  secuencia.

En  la  ventana  de  selección  de  dispositivos,  el  dispositivo  deseado  se  busca  escribiendo  directamente  el  nombre  del  dispositivo  que  se  utilizará  en  el  cuadro  de  

palabras  clave  o  seleccionando  el  título  de  la  ventana  de  categoría.  Los  resultados  de  la  búsqueda  se  enumeran  en  la  ventana  de  resultados.  Al  seleccionar  el  

dispositivo  deseado  y  presionar  el  botón  OK,  el  dispositivo  se  agrega  a  la  ventana  del  dispositivo  del  programa.

El  dispositivo  PIC16F887  se  selecciona  de  la  ventana  de  dispositivos  del  programa  y  se  agrega  al  entorno  experimental.
Machine Translated by Google

46

En  el  entorno  del  experimento,  haga  clic  con  el  botón  derecho  en  el  menú  de  propiedades  del  dispositivo  para  realizar  la  configuración  relacionada  con  el  dispositivo.

Se  ingresa  desde  el  menú  que  se  abre  con  el  botón  del  mouse.

La  frecuencia  de  reloj  del  procesador  debe  establecerse  en  8  MHz  en  las  propiedades  del  dispositivo.
Machine Translated by Google

47

Debe  mostrar  la  ruta  del  archivo .cof  para  el  código  que  ha  compilado  como  archivo  de  programa.  En  la  carpeta  donde  se  encuentra  
el  archivo .cof, .c, .h  etc.  Asegúrate  de  tener  los  códigos  fuente.

Después  de  pasar  el  menú  de  propiedades  del  dispositivo  con  Aceptar,  al  presionar  el  botón  de  pausa   comienza  con.  pausa
del  proceso  de  depuración  se  abre  la  ventana  de  código  y  la  ventana  de  variables.
Machine Translated by Google

48
Machine Translated by Google

49

Con  el  botón  derecho  del  mouse  en  el  PIC16F887,  las  ventanas  de  registros,  memoria  de  datos,  memoria  de  programa,  memoria  de  
datos  EPROM,  pila,  código  fuente  y  variables  se  pueden  abrir  desde  el  menú  de  la  CPU  PIC.
Machine Translated by Google

50

Ejecutar,  pasar  por  encima,  entrar,  salir,  ejecutar  hasta  el  cursor  y  alternar  el  punto  de  interrupción  en  la  ventana  del  código  fuente

La  operación  de  depuración  se  realiza  con  botones.

Se  puede  agregar  un  punto  de  interrupción  en  el  código  fuente.

A  continuación  se  muestra  el  contenido  modificado  en  la  memoria  de  datos  como  resultado  de  la  ejecución  paso  a  paso  hasta  la  línea  marcada  en  el  código  fuente.

También podría gustarte