上一讲的代码中,我们只需重点关注“UART_E2Write();”和“UART_E2Read();”,其他代码都与前几讲的“液晶屏与串口”的代码思路一样。
首先先分析“UART_E2Write();”。
判断字符串的前部分是否为“E2Write:”然后读取出要在EEPROM哪个地址开始写入数据,k则是记录了要写多少了字节进去,RXDBUF[j+12]之后的数据就是代表真正要写进去的数据。
比如我们在电脑端窗口发送如下字符串:E2Write:084,I love learning SCM
前面的字符串判断通过,然后是确定要写入的起始地址,地址是84(全部地址是0~255),
记住不能只单单写“E2Write:84,I love learning SCM”,不能写少一个0,
如果要写入的起始地址为6,也要补充前面的两个0(006),这是程序里作为判断的要求。
K就是得到了“I love learning SCM”有多少个字符,E2BUF[j]从第0个元素开始存取字符串“I love learning SCM”。
接着把E2BUF数组的内容写进EEPROM,串口打印出“写入完成!”的提示在电脑端窗口显示出来,紧接着提示我们此时写到了哪个地址了。
这里我们做测试,在EEPROM的第0个地址开始写字符串数据进去
“I love learning SCM”这段字符串的字节长度为19,串口提示我们现在写到了18这个地址了,也就是前面写进的数据的地址为“0~18”,我们想接着写字符串连着的话,就从019开始写。
记住,由于数组的长度有限,我们一次写入的数据不要超过100个字节
“UART_E2Read();”的分析就比较简单了,首先判断字符串“E2Read:”是否正确,然后再确定要从EEPROM的哪个地址开始读,n就是确定要读出多少个字节数据,如果要读15个数据,必须写015,原理与前面一样。接着是把从EEPROM读出的数据先暂存在E2BUF数组中,然后再把E2BUF数组的内容打印出来在电脑端窗口显示出来。
我们从002号地址开始读13个数据出来
读出的数据正是我们之前写入的一部分。
我们也可以在EEPROM中存入127个汉字和标点符号
我们把宋老师的一段语录经过修改凑齐127个汉字和标点符号,把这些内容全部写进EEPROM中。
内容如下:
“对于技术来说,技术水平高低直接决定你的工资薪酬。技术如果学的不好,那工作都找不到,更谈不上工资待遇了,而技术做的好,那工资就自然会高。我们不要把过多的精力关注在能挣多少钱上,而应该学会如何提高自身的技术,只要技术水平高,比很多人都厉害,钱自然就找上门了。”
写入操作如下
读出操作如下
本文固定URL:https://www.dotcpp.com/course/422
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程