Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 onoff 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 1wire. 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 SW1SW5, 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 SW1SW5 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 (RA0RA5). El teclado 4x4 está en la configuración de teclado clásico.
Se usa para controlar el teclado RD4RD7, RD0RD3 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 xx000
– = 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ógicodigital 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
OPERACIONES DE REGISTRO DE ARCHIVOS ORIENTADOS A BITS
OPERACIONES LITERAL Y DE CONTROL
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
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 AN0AN7
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 AN0AN7
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 09.
Á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 0255 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
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.