📄 eeprom.c
字号:
/* ****************************************************************
** 功能描述: 通过串口通信读写EEPROM
*************************************************************** */
#include "pic18.h" /* PIC18系列的头文件 */
unsigned char data;
/* ****************************************************************
** 函 数 名: initial()
** 功能描述: 系统初始化子程序,放在程序首部
*************************************************************** */
void initial()
{
INTCON=0x00; /* bit7-bit0:关总中断 */
ADCON1=0X07; /* 设置数字输入输出口 */
PIE1=0; /* PIE1 的中断不使能 */
PIE2=0; /* PIE2 的中断不使能 */
PIE3=0; /* PIE3 的中断不使能 */
}
/* ****************************************************************
** 函 数 名: sciinitial()
** 功能描述: 232串行通讯初始化子程序,设置低优先级中断接收,使能232收和发
*************************************************************** */
void sciinitial()
{
SPBRG=25; /* 4M,波特率9600时为SPBRG=25 */
TXSTA=0x04; /* 选择异步高速方式传输8位数据 */
RCSTA=0x80; /* 允许串行口工作使能 */
TRISC=TRISC|0X80; /* RC7(RX)设置为输入方式 */
TRISC=TRISC&0Xbf; /* RC6(TX)设置为输出 */
PIE1=PIE1|0x20; /* 允许串行通讯接口接收中断使能 */
RCIP=0; /* 设置SCI接收中断为低优先级中断 */
TXIP=0; /* 低优先级中断 */
CREN=1; /* 允许串口接收数据 */
TXEN=1; /* 允许串口发送数据 */
}
/* ****************************************************************
** 函 数 名: interrupt low_priority LOW_ISR()
** 功能描述: 低优先级中断子程序:RS232接收中断,并根据通信命令读写EEPROM
*************************************************************** */
void interrupt low_priority LOW_ISR()
{
if(RCIF==1) /* RS232接收中断 */
{
data=RCREG; /* 接收232数据 */
RCIF=0; /* 清接收中断标志 */
if(1==data) /* 接收通信数据为1 */
{
data=eeprom_read(0x22); /* 读EEPROM中0X22地址中的数据 */
TXREG=data; /* 将EEPROM中0X22地址中数据通过232发回PC机*/
}
else /* 不为读取EEPROM命令 */
{
TXREG=data; /* 将接收到的232数据回送PC机 */
eeprom_write(0x22,data); /* 向EEPROM的0X22地址写接收到的数据 */
}
}
}
main()
{
initial(); /* 系统初始化子程序 */
sciinitial(); // 串行通讯初始化子程序
IPEN=1; // 使能中断高低优先级
INTCON=INTCON|0xc0; // 开总中断、开外围接口中断
while(1)
{
; /* 等待通信命令 */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -