今日头条
当年的应届生从JAVA转行到单片机,究竟是什么魔力驱使
最初接触技术类学科开始学的是抓哇,学了一个多月后来发现门槛太高了,没人教的同时且学的东西又多,几个月下来做了一个垃圾的小游戏,说好听点是游戏,其实连扫雷都比不了,依然还是入门级水平,惨不忍睹。
后来无意间接触到MCU单片机,一下就激起了兴趣,因为可以控制硬件装X,而且只需要会基本C语言语句,会控制单片机IO口可以了,门槛低到超出我的认知。
在兴趣的驱使下,当时的我也学的废寝忘食,一大早起床能学到凌晨1,2点,跟别人说自己是学渣绝对没人信,哪个学渣能那么勤奋。
与其说是学单片机,还不如说是玩单片机,玩是兴趣,学是被逼,不管是被社会逼,还是被其他的限时逼到要压着学,当时就是以玩的心态去写程序控制板子点亮LED,然后就会联想到能否用程序控制家里的灯?
想着想着就去研究,一个月过去基本就能做个小项目了,前前后后差不多花了3个多月不分昼夜的自学,然后就去找工作了,虽然过程中磕磕碰碰过,不过最终还是转行成功,一做就是十几年。
分享一些单片机相关的一些知识给大家,单片机数据寄存器就是我们从flash当中读出的数据存放在此处,让向flash写的数据也要存放在此处,读写数据都是通过计算器来完成的,地址寄存器就是说想对这个EEPROM哪个地址进行读写操作,这个就是要把地址传给这个地址寄存器,命令寄存器是我们可以对内部的这个flash区域执行字节读操作,也可以执行字节编程,也就是写操作,还可以执行扇区擦除操作,到底要执行哪个操作,那要对命令寄存器进行处理。
然后还有就是触发寄存器,触发寄存器它指的是每次IP操作的时候,就是每一次想对内部的EEPROM进行读写或者是擦除操作的时候,都要对触发器的仪器先写入5AH,然后再写入A5H,这样的话IAP命令它才会生效,控制寄存器当中也有这么多个比特位,每个比特位它的具体的含义,它包括势能,包括设置等待时间等等等等,这个大家感兴趣的找资料去看一下。
STC12C5A08S2这款芯片,它的EEPROM的空间到底有多少,它的地址到底是怎么分布的?这个芯片它的EEPROM内部是有53K,分了106个扇区,这个存储容量还是可以的,还是比较大的,在外部扩展的时候,大家知道那扩展的任务都是2K4K等等,这个它里面就有53K,而且是字节,这种它有非常多的EEPROM可供我们使用,大家在选择芯片的时候就可以选择这种内部带EEPROM的单片机来使用,它的扇区的起始地址是从0000H开始,到D3FH结尾。
用哪一款芯片的时候,就把这个表当中对应的这款芯片给它记下来,这样的话你在用的时候不要越界,然后关于扇区,有一个表具体的介绍了这个扇区的分布,从第一扇区开始,一直到芯片106扇区,到这个地方就结束了,后面地址这款芯片它是不能使用的,只能使用前面的这些东西,因为到这边它就越界了,每一款芯片它扇区到底分了多少个,在用的时候一定要去查这个手册,接下来它会给出参考代码。
C语言的参考代码,这个EEPROM测试程序代码提供了几个函数,EEPROM的失能的操作函数,另外一个函数是关于EEPROM的读字节操作的函数,还有一个就是写操作的函数,下面还有一个关于扇区擦除的函数,那它给我们提供的这几个函数,这几个函数也就是我们要使用的,除了在这个地方可以找到这几个函数之外,在我工具上范例程序位置也可以找到这个代码,在这个地方可以找到单片机STC12C5I这个系列。
把它点开里面有个EEPROM,我们点开点C,可以参考这个代码来完成我们想要用的一个功能,首先新建一个工程,添加一个main.C和一个uart.c,借助串口来给大家打印输出调试信息,这样的话方便观察,添加一个串口,用printf这个函数来打印输出一些调试信息这个是串口,既然用到串口,一般先把串口调试通过,试用9600的波特率,先把这条信息来看一下能不能正常输出.
首先把它编译一下,编译完成之后把它下载到板子当中,然后打开串口助手,打开串口,因为这个是在初始化的时候来进行输出,所以要给这个板子重新上电,给它复位一下,这样就可以输出一串信息,说明这个串口是没有问题,串口没有问题接下来看EEPROM的使用,为了模块化首先新建两个文本,然后保存到当前的工程当中,保存的扫帚文件夹下面,保存成.C,另外保存成EEPROM.H。
保存完成之后,要添加代码,这个EEPROM当中,首先把框架搭好,拷贝一下,把UART改成EEPROM,然后是#endif,找到范例程序,找到这个代码,把它拷过来,用到几个函数就把这几个函数考过来,拷贝过来之后可以在前面包含自身的头文件EEPROM.h,要先把它加到工程当中来。
对单片机感兴趣的可以查看往期分享内容,希望能帮助大家在学习单片机的路上少走一些弯路,想要入门单片机可以持续关注创为单片机编程,回复“带我学习”查看更多内容分享。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !