⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.c

📁 这是我从朋友那搞到的pic学习资料
💻 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 + -