我是一个初学者,和很多人一样,一直在www.51hei.com论坛里寻找着对自己来说有价值的东西。学习proteus也有一段时间了。我想我的收获很大。在此,我想把我学习的一些心得,包括在学习的过程中遇到的问题和大家一起来分享,希望我们大家可以在这个很好的平台上一起学习进步。
1.有一点很不明白 为什么 asm文件名如果是两个单词组成,比如说 External Interrupt .asm ,那这个文件在编译的就会发生错误,而当把文件名改成由一个单词组成时,如External.asm ,那这个文件就没有错误。 但是 这个 External Interrupt .asm 在我原先时是可以用的,好象移到这里就不行了 ?
最新发现:好象还有是路径的问题。
请问老师:是不是一模一样的程序放在不同的地方去构建,效果是不一样的?(比如说原来这个程序在D盘中是对的,但把它放到E盘就有错了)为什么一模一样的程序,原来是可以运行的,但是后来就不行了?而且出现了很多错误。 就比如说老师给我们的程序计数器实验(其源程序是Timer Application 和 Timer ,编译Timer Application 时说什么 older 什么的,不明白怎么回事。在编译Timer 时,出现了很多错误。 有待解决。
2. 首先,cjne P0,#0FFH,LOOP1 这个语句是非法的。P0处应该用寄存器 a ,应该改为两个语句:mov a,#0EFh ;cjne a,#FFH,LOOP;这样才是正确的。其次,什么时候该用a, 而什么时候该用ACC 都是有讲究的 ,还需要进一步完善这部分的区别。
3. 1仿真软件的管脚(这里指单片机,其他的心片还不清楚)默认时是低电平。而且,管脚处的颜色也可以判断:蓝色的表示低电平,红色的表示高电平。
4. 1.如何比较快的把一个现成的程序画出它的流程图,存在一定的问题,问:这是否有技巧?
2.在中断中,是否可以又一些对主程序跳转的语句,若有,则它的执行过程是怎么样的?
就比如说以下这个中断子程序:
INTERRUPT:
push psw
cpl a
cjne a,#0ffh,led
led:{
大括号内表示
sjmp loop1 ; loop1是主程序中的
}
sjmp loop ;这个loop是在主程序中
pop psw
redi
end
换句话说就是在执行中断的过程中是否可以跳到外面去执行一个子程序,然后又跳回来?
5. 在myself3 这个实验的过程,可以发现,我们可以在中断中去执行一些比较复杂的语句,比如各种循环语句等(能否在中断中调用子程序本人还未试,需要用一个实验去验证才知道)。
6.在myself4这个实验中有一点小疑问????(已经在程序中标明),这个问题的存在,说明这个知识点还未搞透。
7.今天在上机时候发现一个很奇怪的问题 ,就是在 在“系统文件与源程序”这个文件夹中,好象对文件名的设定有一定的要求,比如 把文件名 “源程序2” 改成 “源程序(。。)”
在仿真软件中去加载这个文件名下的源程序就会发生错误。 而把带括号的那部分去掉,例如改成“源程序2”或“源程序3”等等只要不带括号的就没有了错误。
从而得出的结论就是:建立新的文件夹时文件名不可以带有括号。 (但是不知道其产生这个问题的真正的原因,需要请教有关人士???????)
8. 今天上机后发现一个现象,就是 加载设计时,系统默认的路径总是和 单片机仿真软件bin里面的内容的的存放的位置有关,比如说当你把那文件里的所有子文件放到一个新建的文件夹里时,那你加载设计后它的默认文件就是你刚刚建立的新文件夹的内容。所以为了在加载时可以默认的显示你所要的文件夹,你就应该把那些子文件放在你所要显示的文件夹的外面。比如在我的这台机子中,我想要它显示的默认的文件是 源程序1 源程序2 和 电路原理图 ,那我就把那些子文件都放在了这三个文件夹的外面,又为了美观,我把这些子文件隐 藏了。
9.昨天一直在搞那个 keil 软件 和 proteus 软件 ,想把他们完美的结合起来(据说是在keil 里可以单步操作,而在proteus 里可以看到硬件的运行情况)但是搞了很久,还是没有搞定。
现在也不太清楚这样的结合有多少大的意义(希望各位高手或者老师可以给我答案???)
同时也发现,keil 软件 在识别错误的能力上好象不强(可能是我没有发现,需要请教他人),也就是当载入的程序有错误时,发现不了是第几行错,修改起来比较的不方便。所以我现在的做法是还是到 proteus 这个软件上先运行程序,看哪几行错误(仅仅是语法错误),再去修改好。然后再载到 keil 软件中。
现在我的总结就是:好象 keil这个软件也没有多少大的实际意义(因为觉的单步操作没有多大用了,因为要是程序本身有错就不能在keil里运行,换句话说,它根本就不能帮你发现错误),好象除了 与proteus 来联机单步操作看硬件的执行比较有用外,没有多少其他的用途了。
我想这个认识一定我对这个软件的认识还不够(对它的认识,可能我根本远远不够??)需要老师的开导。
10.今天搞定了联调,但是远程联机还不会
11.(6月6号晚1点) 今天发现了一个经验:就是说 在建源程序的文件名的时候,如果是用中文,则不能超过4个字。否则会出现错误。这个错误找了很久都没有发现,也是无意中发现的。出现这个问题的原因目前也不清楚。例如:你建的文件名是“课程设计温度控制”,则编译时就会出错。而改为“温度控制”或者少于4个字就不会错。
12.TLC549 搞定.原来是用串行口发送来做的,发现不行。后来网上找了一个,它是严格的按照时序来做的,经过验证,是可行的。
13. 今天发现一个问题,就是在PROTUES 里面,其所有的元器件必需用不同的名字命名。否则会出错。我就是把一个电路图直接复制到另一个图中,而且同样的电路复制了多个,结果运行的时候导致错误。开始没有发现问题处在哪里,后来通过自己的改动发现问题出在了对相同元器件的命名上。这又是本人发现的一个细节的地方。 |