1.题目要求
作为本教程最后一个例程,我们也不打算写的太复杂,这次还是运用串口的知识,实现用串口往EEPROM写入数据,同时也能用串口读出EEPROM里的数据出来显示在电脑端的窗口上。根据前几讲的串口与液晶屏的代码理解,这一讲的例程也不难理解。
2.main.c测试代码
#include #include #include #include u8 uart_i=0; u8 pdata RXDBUF[130]; void COUNT_TIMES() { TMOD&=0xF0; //清0低四位 TMOD|=0x01; //设置定时器0为工作模式1 } void UART_E2Write() { u8 j,k; u8 E2_add; u8 pdata E2BUF[102];//存取从RXDBUF[12]开始后的数据,RXDBUF[0]~RXDBUF[11]是字符串“E2Write:xxx,”(xxx表示地址) if( RXDBUF[0]=='E'&&RXDBUF[1]=='2'&&RXDBUF[2]=='W'&&RXDBUF[3]=='r' &&RXDBUF[4]=='i'&&RXDBUF[5]=='t'&&RXDBUF[6]=='e'&&RXDBUF[7]==':') { E2_add=(RXDBUF[8]-'0')*100+(RXDBUF[9]-'0')*10+(RXDBUF[10]-'0'); //确定要开始写入的地址 k=uart_i-12; //由于uart_i在“InterruptUART()”函数中的最后自加了一次, //所以“k=uart_i-12;”表示的是收到要写入EEPROM的字符串的个数 for(j=0; j E2Write(E2BUF,E2_add,k); //把内容写入进EEPROM中 printf_str("rn写入完成!rn"); printf_str("地址写到了"); printf_num( (u32)E2_add+j-1 ); //打印出此时EEPROM写到了哪个地址位置了,因为要传入的参数为u32类型,所以必须强制转换 printf_rn(); } } void UART_E2Read() { u8 E2_add,n; u8 pdata E2BUF[102];//接收缓冲区,最多能接收50个汉字 if( RXDBUF[0]=='E'&&RXDBUF[1]=='2'&&RXDBUF[2]=='R'&&RXDBUF[3]=='e' &&RXDBUF[4]=='a'&&RXDBUF[5]=='d'&&RXDBUF[6]==':') { E2_add=(RXDBUF[7]-'0')*100+(RXDBUF[8]-'0')*10+(RXDBUF[9]-'0'); //确定要开始读出的地址 n=(RXDBUF[11]-'0')*100+(RXDBUF[12]-'0')*10+(RXDBUF[13]-'0'); //确定要读出的个数 E2Read(E2BUF,E2_add,n); E2BUF[n]='