文章编号:162 .19577

『关闭窗口』

能不能介绍一下你的51开发工作方式?


我早就不用仿真机这种又贵又脆的东西了,我们公司的4个仿真机用了一年如今没有一个是完好无损的,不是启动不了就是某某IO脚坏掉了,我自己购买的一个则放在某个角落里一年多了没再摸过。再好的仿真机都有它仿真不到或者是仿真得不够完善的地方,使用过仿真机开发过比较大程序的网友肯定会有很大的体会。
不过我承认,从前我使用汇编语言做开发时,还是要使用仿真机的,许多跳转错误用仿真机就可以很快地检查出来。可是如今我已不用汇编语言了,我用c51也有一年多了,用c51开发时,绝对不用担心指针会乱跳到你不知道的位置,这一切,编译系统都帮你做好了,要注意的仅仅是功能上的实现而已。
没有仿真机如何知道程序运作情况呢,我现在采用的是利用单片机串口返回的办法。最基本的是要在程序设计时采用中断串行处理,就是我在主页上介绍的我写的一套串口服务函数,串口的发送和接收都用的中断,而且还有缓冲,这样就可以在接收和发送数据时不太影响程序的执行。在程序实际运行时将想要知道的数据变量或字符标志不断发往串口,经过电平转换后送到计算机串口,在计算机上接收显示就可以知道运行情况了。
在计算机上还可以发送指令给正在运行的单片机系统,要它返回某些你希望知道的内容,当然你必须在你的程序中设置好响应该指令的程序段。计算机上运行的程序就是终端仿真程序,可以以各种波特率发送和接收字符。
keilc51在软件仿真时也有一个串行终端窗口,可以显示运行中发往串口的字符,也可以在串口接收到该窗口键入的字符。所以不涉及硬件的变量在软件仿真时就可以调试了。
硬件实际调试时,就要用终端仿真程序来代替该串行终端窗口了。这种调试方法快速简单,可以非常灵活地进行各种调试,就象是在计算机上调试在计算机中运行的c程序一样,也有了输入输出窗口。不过要在程序中设置一些状态和变量返回的程序行,在程序完全调试成功之后就可以把这些程序行去掉了。
有一个看似不方便的地方,就是在你发现程序有错误的时候,你必须更改程序后再烧写一遍。所以在硬件实际调试时许多编程人员总是不断地烧写程序,通常一个程序要调试正常一般要烧几十上百遍。如果烧写器是大家共用的,或者在另一台计算机上,或者只能在dos下工作都会给你添加不少麻烦,跑来跑去,工作效率极低。
因此我设计了主页上这个串行烧写器,可以在程序一编译完就开始将新的目标代码(hex文件)烧写在预先放在烧写器上的51芯片中。
最近我新开发的3in1开发设备中,有一个功能是高速在线下载器,这样,程序一编译完,用户板上面的程序就会自动中止并开始加载新编译好的程序,装载完成后还会自动开始运行。这样就不必每次都烧写芯片了。 

 

返回大虾论坛 返回首页