Cómo escribir un programa modular para un microcontrolador en keil
En primer lugar, debe poder escribir un programa que cumpla con los requisitos de uso. Sobre esta base, compile algunos subprogramas con funciones independientes en un archivo fuente una vez que los subprogramas en estos archivos fuente se hayan probado con éxito. , no se utilizarán en el futuro. Es necesario modificarlo y no es necesario copiarlo y pegarlo. Simplemente agréguelo en su totalidad. El archivo fuente puede ser relativamente largo para facilitar la búsqueda. para declarar estas subrutinas y luego incluir este archivo de encabezado en el programa principal, como LCD. La función de controlador de la pantalla 1602, escribir comandos y funciones de inicialización de datos, e incluso escribir algunas funciones de visualización de cadenas y funciones de visualización de datos enteros de uso común pueden todos se pueden utilizar como archivos fuente separados y funciones relacionadas para las operaciones de EEPROM, que están más estrechamente relacionadas con otras partes, o se pueden compilar en archivos fuente por separado con relativamente pocas subrutinas a las que se puede hacer referencia directamente. Los módulos con muchas subrutinas deben tener archivos de encabezado correspondientes a los archivos fuente. El siguiente es el interior del microcontrolador STC que empaqueté. El archivo de encabezado y el archivo fuente de la operación EEPROM no tienen conexión con otras partes, por lo que son un archivo de encabezado de módulo independiente. eeprom.h es el siguiente:
ifndef __EEPROM_H__
#define __EEPROM_H__ p>
#define uchar unsigned char
#define uint unsigned int
//Borrar un sector de la EEPROM en el chip. Estas funciones se acaban de declarar aquí y las entidades están en el archivo fuente
void eepromEraseSector (dirección uint); /p>
void eepromWrite(uint dirección, uchar write_data);
//Lee la EEPROM interna del microcontrolador STC Un byte
uchar eepromRead(uint dirección); /p>
#endif
El archivo fuente eeprom.c es el siguiente. Varias subfunciones que contiene son instrucciones del microcontrolador STC. Está en el documento y no requiere ninguna modificación, solo llame. así que normalmente solo necesitamos mirar el archivo de encabezado
#includelt;STC12C54.Hgt;
#define uchar unsigned char
p>
#define uint unsigned int
//Borrar un sector de la EEPROM en el chip
void eepromEraseSector (dirección uint)
{
uchar ii;
ISP_ADDRL=dirección;
ISP_ADDRH=direccióngt;gt;8;
ISP_CONTR=0x01; ISP_CONTR|0x82; // 0x80 si SYSCLlt; 40MHz, 0x81 si SYSCLLT; 0x82 si SYSCLLT; 0x83 si SYSCLLT;
ISP_CMD=0x03; ;
ISP_TRIG=0xb9;
para(ii=0;iilt;3;ii
ISP_ADDRL=0xff; p>
ISP_ADDRH=0xff;
ISP_CONTR=0x00
ISP_CMD=0x00
ISP_TRIG=0x00
}
//Escribe datos en la dirección especificada de la EEPROM en el chip STC (es decir, programación de bytes)
void eepromWrite(uint address, uchar write_data)
{
uchar ii;
ISP_DATA=write_data;
ISP_ADDRL=dirección
ISP_ADDRH=direccióngt;gt;8; > ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x82; // 0x80 si SYSCLKlt; 0x81 si SYSCLKlt; 0x82 si SYSCLKlt; ISP_CMD =0x02;
ISP_TRIG=0x46;
ISP_TRIG=0xb9
para(ii=0;iilt;3;ii);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00; ;
}
//Leer un byte de la EEPROM dentro del microcontrolador STC
uchar eepromRead(uint dirección)
{
{
p>
uchar ii,z;
ISP_ADDRL=dirección
ISP_ADDRH=direccióngt;gt;8;
//ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x82; // 0x80 si SYS
ISP_CMD=0x01; // Recuerda leer el comando
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
para(ii=0;iilt;3;ii); 0xff;
ISP_ADDRH=0xff;
p>
ISP_CONTR=0x00;
ISP_CMD=0x00;
z=ISP_DATA
retorno (z);
}