STC单片运行如下流水灯程序都运行部了,难道....?
程序源码如下:/*间隔300ms第一次一个管亮流动一次
第二次两个管亮流动,依次到8个管亮
然后重复整个过程*/
#include <reg52.h>
#include <intrins.h>
void delay (unsigned int z);
void main() //主函数
{
unsigned char a,i,j;
while(1) //大循环
{
a=0xfe; //赋初值
for(j=0;j<8;j++)
{
for(i=0;i<8-j;i++) //左移
{
P1=a; //点亮小灯
delay(200); //延时200毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=_crol_(a,j); //补齐,方便下面的左移一位则最高位点亮后再向左移j位使最低起亮j个灯
P1=0xff; //全部关闭
a=a<<1; //左移一位让多一个灯点亮则最低位补0使最低位起亮j+1个灯
}
}
}
void delay (unsigned int z) //带参数的函数,在使用该函数时直接在()中赋值即可
{
unsigned int x,y;
for (x=z;x>0;x--)
for(y=110;y>0;y--);
}
以上代码为郭天祥所写的,为了验证程序的正确性,用Proteus 7.5搭建的电路能正确仿真,可下载到如下单片机中,型号有:STC89C51RC\STC89C52RC\STC12C5A60S2\STC90C546RD都只有第一个LED亮,可是用SST89E516RD进行在线仿真正常,而只要在KEIL中勾选http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641031LALEYR.png
(原文件名:2011-05-19_155950.png)
该选项后,仿真却只有第一个LED在闪烁,难道STC很烂,烂得不得了??望各位高手能给我指点下迷津!谢谢。。。! 我觉得楼主心急了点吧,怎么这点程序就怀疑芯片不行,怎么不说你的操作出错呢, 至少STC这点还是没有问题的, 建议楼主直接再买个新的STC的片子,不需要向里面写程序,直接插在板子上观察,你会神奇的发现,你的程序无线下载进去了 以上程序编译后均下载到刚到手的STC芯片中!型号就是前面所列的!都在三种不同实验板上运行测试!流水灯电路原理一样的!情况都是前面所描述一样!可是用SST芯片在线调试完全通过!只是在KEIL仿真选项中够选软件控制复位!就出现第一个LED闪烁的情况!用带串口的台式机和转串口的笔记本调试下载程序!一直操作调试三个多钟头!情况都一直那样!我耐着性子调了这么久!咳…用PROTEUS 7.5仿真和平凡的KEIL仿真插件都完全通过!直到此我想到这!希望大家帮我找下错误是在哪里!谢谢了… 想了想,还是不说了。培养楼主的调试能力。 不要打击楼主了,
楼主加油~~~ 其实楼主学下去没有多大前途的,大家不要害楼主浪费时间了,还是改行吧 还是需要高人出来给LZ指点下。 7楼真打击啊!我现在就是对单片机感兴趣!就趁着这份热心学下知识!好充实下自己,提高自己的专业水平!我知道学习光靠三分热度是不行的,不能三天打鱼两天晒网吧??我需继续努力!感谢大家给我勇气,刚放学回来,我重新建立工程,重新输入代码啊进行调试,却完全通过了,走了弯路了!可能是以前建的工程设置出错了吧!现在上传下proteus仿真文件和源代码,在proteus中单步调试可观察源代码的,这下放心了,下一步就想着怎样用定时器写一个电子钟。。。电路原理图就在该文件中,大家看下实现的难易情度是怎样的,期待成功!???ú???????··???ourdev_641634TQFQPU.rar(文件大小:100K) (原文件名:Day2.rar) 搞不好是你工程添加的MAIN文件错了, 这个问题真的很奇怪啊 是啊!这个问题确实很奇怪,我一般都是软件仿真后,再进行硬件运行。。。。可偏偏就出现这样的问题!我重写就行。。旧的问题解决了,新的问题有出来了!!为什么会是这样呢??不过这样可以确定是我操作问题了!正如一楼所说了!以后学习不但要专注更要专心细心才行的!! 昨天搞了半天,弄了 个汇编的电子钟,现在还在测试效果不错。在KILL中编译程序我也发现了点问题,有些语句编译不能通过,
把一摸一样的语句重写一遍就通过了,真搞不懂怎么回事,, 楼主加油,应该不是芯片的问题,STC芯片有些是1T的,看是否有关系。 小问题要悄的搞定。
页:
[1]