单片机课程设计-ATMEL51系列单片机编程器
之前我一直以为HEX文件就像镜像文件一样对应着单片机FLASH的每一个数据,然后烧录软件LOAD程序的时候是直接将HEX文件里面的数据一个一个输入到单片机的FLASH中,又来了个误区,事实情况却不是这样的。正解是:HEX文件是一种用ASCII编码的文件,就是说里面的数据都是字符来的,比如说里面记录了一个地址为0X00EF的话,如果按照二进制格式应该是:0000 0000 1110 1111 这样记录的,但HEX采用了ASCII字符编码,直接在里面写成:‘0’ ‘0’ ‘E’ ‘F’ (这是ASCII字符!!!)。基于这个原理,要想正确下载程序就必须写一个HEX->
烧写单片机的工作流程其实就是->
塞,直到有数据才会返回。发送队列也是根据此种原理。总之,关于串口,最终实现了两个函数,一个发送,一个接收,给全局使用,不必理会实现细节。 电脑端界面是使用串口进行通信的,所以电脑必须有串口,或者使用USB转串口。 开发环境使用了本人最喜欢的C++ Builder 6.0 。因为开发速度很快,很适合我这种非专业WINDOWS程序员使用。最终开发出来的应用程序可以打开HEX文件,并自动转换成机器码,然后通信串口一个一个按照地址发给单片机。如图: STEP 6. 测试 虽然原理简单,但是编写过程却很费时,BUG不断出现,晕死,其实让我选择去当苦力搬砖或者选择写代码,还是选择挺搬砖比较好,因为砖总可以搬完嘛,代码却不一定能写得出。所幸经过几天调试,所有功能完成了。 测试: 写了一个单片机的8*8点阵显示程序,然后连接设备,打开文件。擦除芯片。。点击“编程”。。。经过两秒钟,界面进度条显示下载完成。小心地将下载好的芯片拔出来,插到单片机开发板上,接电。。查看效果。一接电,点阵上显示出期待已久的图案了,说明测试成功。下图: STEP 7. 拓展功能 完成后想进一步拓展编程器的功能,在想着要弄点什么好,于是想到了手工汇编,就是不用开发环境,自己把指令一条一条写出来然后下载,SO,要怎么下载???,没问题,我在单片机里面实现了一个类似命令行的对话窗口,只要在电脑上打开超级终端或者串口助手,就可以通过字符指信与单片机进行对话,可要设置好地址,就可以查看或者修改单片机FLASH存储器中的任意一个值,想怎么改就怎么改,如图:
STEP 5. 编写电脑端界面
单片机ATMEL51系列编程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)