没有仿真器开发单片机程序
我大大小小断断续续也算开发了几年PIC了.除了一开始用了ICD开发了一个之外,后来再也没有用过硬件仿真.说来有些惭愧,到现在我自己掏腰包买的ICD2还没启用,硬件仿真器更是连见都没见到过.这都是因为LB酸的缘故,这就不说了.
先说到现在的单位开发的第一个东东.用的是12C508A,OTP的.先用MPLAB软仿真,软仿真的基本通过了,再"硬仿真",其实就是拿芯片烧了试.谁让LB不肯买N千的仿真器呢?好在当时仓库里有N万片,烧!不过后来我自己有些肉痛,想想一个程序才100多句,烧一次还有300多字空的,怪可惜的,又想了一个一片烧几次的办法,先在这里简单介绍一下.
关键是写程序的时候要当心一点.比如一个芯片打算写3次就这样写:
1.第一次编程的时候在第一句写上ORG0x03,然后写GOTOSTART1
2.在后面的程序中紧跟着写程序,每个子程的标号为LABLE1_X
3.烧写....
4.测试...
5.第二次编程,在第一次的GOTOSTART1前面一句写ORG0x02,然后写GOTOSTART2
6.紧跟在第一次的程序后面去掉END写第二次程序,每个子程序的标号为LABLE2_X.
7.烧第二次...校验OK...
8.测试...
大家明白了吗?还可以举一反三,想想有中断时怎么多次烧写...
余容后述......
后来渐渐开发的程序大了,光靠看波形看不出什么名堂,要看内存,怎么办?只有把那些数值读出来,可又没其它的硬件...好在现在都有FLASH芯片,程序大一点,多烧几次没关系...有什么用?!先别急,电脑肯定有,再到网上当一个串口调试软件,再编一个串口通讯程序,使单片机可以和电脑通讯...明白了吗?
隔一段时间把关键的寄存器值送到电脑上...16进制看不懂?有BIN2BCD的子程序,还看不明白?有BCD2ASCII的子程序...
我就这样收啊收,什么地方有问题,就调用一下串口通讯的发哪个寄存器的值...只要你高兴,增加一个CALL而已...
端口不够?指示灯总有一个吧?数字输入脚总有一个吧?暂时借来复用一下...
况且,ICD也要占用两个口,几个寄存器,一段程序空间,总比买一个ICD简单吧?况且实时/实地仿真,再好也没有了?
评论