打印

at89s52与C51区别知多少?

[复制链接]
4315|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
roser|  楼主 | 2007-4-19 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做毕业设计,用到AT89S52单片机,由于以前学的是C51,AT89S52是第一次用,遇到的问题不小.

我是用PWM波控制电机的运行,用伟副硬件仿真一切正常,可是一下载到单片机上就出问题了,不知道是程序跑飞还是根本没有运行。用示波器测到 电源引脚5V,晶振正常,RST 低电平.把单片机插到另一块扳子上结果一样;另外,按键复位后引脚偶尔有输出PWM波,但是和程序期望的不符。

这个问题给卡了好几天了,高手赶紧帮帮忙,不胜感激。

===========================================================
问题找到了,是单片机坏了。
下面是我搜到的一些资料,希望对遇到类似问题的朋友有帮助

关于“仿真时工作正常,程序固化后却不能运行?”的几种情况。  
 
出现这种情况有以下几种可能性: 
(1).用户板的程序块电路有问题:如PSEN不通或接错。地址线高位浮空等(我没遇到过这样的情况,但有**有过这样的分析)。使用89C51内部程序,但EA未接高电平等。 

(2).用户板晶振电路有问题。用户板复位电路不正确。还要注意的是那2个电容,有次我拿错电容(473),结果拿万用表量电压晶振2边是2.5V,但拿示波器一看什么都没有。所以,测晶振2脚电压有时也未必完全准确。

(4)堆栈溢出。8051系列的单片机,有的型号内部有256个RAM,有的只有128个RAM, 现在高级语言编译系统都默认是256个RAM。如果您使用的是128个RAM的型号的芯片, 就应注意堆栈是否会溢出,如果溢出程序就不能运行。如果这种情况,把CPU换成带 256个RAM的型号试试。 (这点是比较重要,和对于初学者容易忽略掉的)

(3)用户系统内有需要复位的接口电路,如8155,8255,8279等,在它们还未完成 复位时,如果CPU就给它们写控制字,就会造成它们工作不正常。这种情况下,CPU 应确保在外设复位后再输出控制字。 

(5)程序片烧写不正确,这有以下几种情况: A。格式不对,或者是烧的内容不对 B。光写程序,未写芯片的设置字,如PIC系列,LPC764,80C196的保留字等。这 些设置字中凡是需要用户写的应正确填写,不需要写的应写入“FF”。 最好在烧写时看看烧写器读进来的BUFF,前面是不是02 00  开头。

(6)检验程序片是否烧写正确的方法是,从一片烧好的芯片中读出机器码,并生成机器 码文件,然后让仿真器运行这个机器码文件。如果不能正确运行,应重新烧写程序片。 

(7)系统接线有错,造成固化后的程序,不在系统所要求的地址空间内,当然不能运行。 控制脚接,特别是80196系列芯片面,如果READY脚,NMI脚浮空,则也会出现固化后程 序不能运行的现象。  


(8)、喂狗错误,仿真时不受影响(我用的是伟福的),烧完就老复位了;
(9)、时序错误,仿真时由于延时歪打正着,动真格的是就不灵了,从而导致看门狗总是复位,或者是使程序停顿在了一个标志判断处。


(10)上拉电阻 

我遇到过这种情况,有的上拉电阻不加时在仿真器上可以正常运行,而固化后就不行或时行时不行。

(11)复位时间短 

仿真器上大多是手动复位,与RC充电时间无关,而固化后运行,如果RC充电时间太短,就会复位不可靠甚至不能复位,因此计算复位脉冲宽度时要留有余量,这也是我的教训。

(12)有时是因为外围硬件的设计不合理, 

一般仿真器的I/O驱动能力都大于真正的CPU,在仿真器运行正常,正式烧写后,CPU未能可靠的驱动硬件。

(13)芯片坏了 

我最近就出现过,仿真器仿真时一切OK,固化后不行了,原来芯片坏了,一部分程序正常(显示,蜂鸣器),一部分怎么调都不行(串行通讯),换新片子就都OK,我使用的芯片是PHILIPS的P89C51RC+,劝大家先考虑考虑这种情况省得折腾半天白费力! 

相关帖子

沙发
huangqi412| | 2007-4-19 10:49 | 只看该作者

说两句

1 是不是在c51里正常但是s52里面不正常??
2 看数据手册或者baidu都可以知道差别,也就几个差别

使用特权

评论回复
板凳
ayb_ice| | 2007-4-19 11:26 | 只看该作者

多条狗,ISP...

使用特权

评论回复
地板
zhaoyu2005| | 2007-4-19 11:42 | 只看该作者

好像还多一个DPTR,其实如果你的程序在C51里能正常

运行的话,一般在S52里能正常运行,但是现在你也没试,不能说你的程序烧到C51里一定正常,你看一下PSEN是不是没接到高电平?然后再看是不是P0口没加上拉,外部中断一直触发什么的,你可以加几个标志用发光二极管显示,基本上就能确定问题出在哪里

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

15

帖子

0

粉丝