永发信息网

同一个程序在stc89c52单片机上能用,但是在at89s52上不能用。但是其他的一些程序又可以通

答案:2  悬赏:40  手机版
解决时间 2021-03-28 01:26
  • 提问者网友:难遇难求
  • 2021-03-27 18:06
同一个程序在stc89c52单片机上能用,但是在at89s52上不能用。但是其他的一些程序又可以通
最佳答案
  • 五星知识达人网友:毛毛
  • 2021-03-27 18:36
不能用是程序不会执行还是总线时序错误?

stc89c52有内部扩展ram(STC下载器默认选中) 也就是xdata定义的部分
at89s52是没有的,如果使用xdata定义的变量,at89s52会尝试通过P0 P2 ALE P3.6 P3.7这几个IO去读取外部SRAM的数据。
如果没有外部SRAM读回来的数据始终是FF这样就导致程序无法执行了。

如果Keil里面选择了Large:variables in XDATA的模式的话
STC89C52可以运行AT89S52是无法运行的
STC89C52能运行但是AT89S52无法运行大部分是这个原因

其他原因至少还能实现一部分功能不可能出现完全不能运行的情况

最后
stc89c52还有个6T的模式(STC下载器默认不选中)
一般的程序12T 6T都没什么影响
一些时序要求严格的器件如:DS18B20等
就会有影响了追问多谢。那个PDATA又是什么若是我使用掉电储存器就要在keil用那个xdata么追答pdata跟xdata差不多,都是外部RAM,只是访问采用的@Ri间接寻址的方式而不是DPTR

掉电储存器要操作指定的寄存器将数据写入Flash区域才能实现掉电保存

你在STC的下载器右上角应该可以看到范例程序的(没有的话去STC官方网站下载最新的STC下载器)
里面就有操作STC的EEPROM的程序追问stc89c52往内部的EEPROM进行操作,那keil就要选择xdata么?
全部回答
  • 1楼网友:老鼠爱大米
  • 2021-03-27 19:48
寄存器 定义的地址不同 sfr
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯