Paso 3: Software
El enlace de software se enumera a continuación. Mientras que se destina a la 16F688, fácilmente se adaptó a otras versiones de la foto. Usted necesitará cambiar la línea que identifica la versión de PIC (lista =) y el archivo de inclusión, pero los cambios intuitivas. La línea __CONFIG también necesite ajustar sólo porque uno o dos de las etiquetas utilizadas se deletrean diferentemente en algunos de los archivos de inclusión.
La mayoría del software se refiere al manejo de LCD y las rutinas de retardo por lo que las partes deben conocer si vieron algunos de los episodios anteriores. Una cosa a la nota en el frente es que la sección de declaración de variables (UDATA) es un poco diferente. Porque los registros de control EEPROM están todos en el Banco 1 de memoria, decidí también colocar las variables EE_Addr y EE_Data en el Banco 1. Que requieran el uso de etiquetas como parte de las declaraciones de dirección Inicio UDATA. Banco 0 de datos comienza en hex de Dirección 20 mientras que el Banco 1 de datos comienza en la dirección A0 hexagonales. También tenemos que ser conscientes a través del programa en cuanto a qué Banco de memoria estamos en al leer y escribir. Mi regla general, como se indica en el encabezado, es para siempre salir de una subrutina en el banco 0.
Porque estamos usando registros específicos de la EEPROM para Lee y escribe, no hay que preocuparse por donde en la dirección de la EEPROM del mapa se encuentra. Hace la vida un poco más fácil porque básicamente solo contamos con un índice de 00 a FF hexadecimal. Muchas de las fotos tienen 256 bytes de EEPROM pero algunos solo tienen 128 bytes (por ejemplo el 16F627/8) así que ser conscientes de que para sus aplicaciones.
El código para leer y escribir la EEPROM se deriva de lo que figura en la hoja de datos pero hay un par de diferencias importantes, especialmente en la sección de escritura. Para una lectura, simplemente configurar la dirección deseada en EEADR, punto a memoria de datos (a diferencia de la memoria de programa Flash), mando a leer y luego leer los datos del registro EEDAT. El proceso de escritura sigue algunos de los mismos pasos pero con algunas diferencias notables en medio de la secuencia. Una vez más, comenzamos estableciendo la dirección deseada en EEADR y llenarla EEDAT con el byte de datos que desea escribir. A continuación debemos establecer una bandera de "Habilitar escritura". Usted puede pensar como el pin de R/W en chips de memoria o la pantalla LCD. Como se mencionó anteriormente, debemos permitir que el proceso de escritura completar sin interrupción, así que este es el punto en que sería borrar la bandera GIE. Si te fijas en la hoja de datos, hay código hay que realmente borra GIE y luego bucles hasta que GIE está claro. Se pone allí debido a la posibilidad de que una interrupción puede ocurrir antes de la clara de GIE realmente surte efecto (reloj cuatro ciclos o ciclo de una instrucción). Porque la devolución desde el controlador de interrupción vuelve a habilita GIE automáticamente, el comando clear puede obtener reemplazado. Así que lo que se recomienda es a lazo en el comando clear hasta que realmente completar una lectura de GIE y verificar que es clara.
Ahora viene el código para realizar el apretón de manos secreto necesario para escrituras. Realmente, todo lo que hacemos es primero escribir 55 hexagonal y luego escribir hexadecimal AA en EECON2. Te lo dejo como ejercicio para el estudiante calcular la probabilidad de la secuencia sucede por accidente. Tras el apretón de manos secreto, establece el indicador de comando escriba real y esperar que el PIC para la bandera. Lo hará cuando se haya completado la escritura. Ya que nosotros no podemos hacer otra cosa durante el tiempo de escribir, esta bandera de la interrogación es la forma más sencilla de realizar esta tarea. El ejemplo de la hoja de datos muestra un comando de sueño con la suposición de que vamos a despertar y continuar cuando conseguimos una interrupción (EEIR) en la realización de la escritura. Lo que no muestra, sin embargo, es la configuración para esa interrupción y el manejo de la interrupción antes de continuar la ejecución. Una vez más, los triunfos de manera perezosa.
La rutina de Test_EEPROM sólo envía tres bytes de datos en EEPROM y despues lo lee que detrás. Cada byte que es escrito o leído se envía a la pantalla LCD para la exhibición. Nada demasiado útil en este punto sino que muestra cómo podemos acceder a la EEPROM para futuros proyectos.