菜鸟提问, STC89C52和AT89S52有什么区别?程序可以直接混用吗?
我是一个新手,原来一直用的是STC89C52的单片机,可是最近在坛子里看很到很多帖子说STC不是很好的,就买了一块AT89S52和一个usbisp,可是回来不知道这两个单片机到底能不能通用,要不要在程序里改点什么? 比如头文件什么的?谢谢各位!比如说这样的简答程序在STC单片机的时候正常
#include"reg52.h"
sbit led1=P1^0;
void main()
{
led1=0;
}
换成这样用AT89S52的时候就不正常了
#include"AT89X52.h"
sbit led1=P1^0;
void main()
{
led1=0;
} 虽然没用过STC单片机,看了一下程序,应该是可以直接用的.头文件名不用改 回复【1楼】iwtnui44
-----------------------------------------------------------------------
可是结果就是不一样,在STC正常AT 就不正常,用AT有什么注意事项吗? 通用的,头不要改。c52须并行烧写,s52可在线串行烧写,ISP。 都用12T的时钟模式就没问题的。 回复【4楼】eefans
-----------------------------------------------------------------------
怎么样才能看出时钟是不是一样呢?谢谢 回复【5楼】tianyukobe
-----------------------------------------------------------------------
看晶振 回复【6楼】hepday
-----------------------------------------------------------------------
晶振都是一样的 因为我是插在单片机开发板上的: 换成这样用AT89S52的时候就不正常了
#include"AT89X52.h"
sbit led1=P1^0;
void main()
{
led1=0;
}
#include"AT89X52.h" 改成#include"reg52.h"
或者sbit led1=P1^0;改成sbit led1=P1_0;
因为AT89X52.h 不支持P1^0运算 回复【8楼】hongjie0216
换成这样用at89s52的时候就不正常了
#include"at89x52.h"
sbit led1=p1^0;
void main()
{
led1=0;
}
#include"at89x52.h" 改成#include"reg52.h"
或者sbit led1=p1^0;改成sbit led1=p1_0;
因为at89x52.h 不支持p1^0运算
-----------------------------------------------------------------------
有这种说法?P1^0是在头文件中定义的?我怎么记得是KEIL的sbit数据类型的扩展? 回复【3楼】xinliang
通用的,头不要改。c52并行须烧写,s52可在线串行烧写,isp。
-----------------------------------------------------------------------
你有没有用过STC的片啊?并行烧写?什么年代的了.现在都是串口直写的了.STC用在低端还可以啊 看ea 同意楼上,楼主看一下EA引脚, STC的片子不用管EA的,AT的要拉高 同样楼上 回复【12楼】vtte
-----------------------------------------------------------------------
EA拉高是不是接VCC就可以了? 回复【13楼】xiaobendan 仲跻东
-----------------------------------------------------------------------
EA拉高是不是 接VCC就ok了? 有没有结果? 回复【14楼】tianyukobe
-----------------------------------------------------------------------
对 STC跟AT89x52的头文件应该是一样的吧,另外想问一个问题#include<reg52.h>和#include"reg52.h"这两个有什么不一样吗? 回复【8楼】hongjie0216
-----------------------------------------------------------------------
AT89X52.h 不支持P1^0运算 ?为什么我用这个是可以的。。。。 回复【楼主位】tianyukobe
-----------------------------------------------------------------------
头文件不用改,两块单片机只是生产厂家不一样,烧录器不能共用。 什么都不用改直接就能用,对楼主很无语,你学习板上用STC有什么不好?在使用中发现什么问题?说实话学习板用STC比AT好,至少下载器省了。
修改:加一句,STC89C52的烧写次数比AT89S52多得多,AT官方给的数据是1000次,STC号称10万次以上,再吹牛应该都不会差太多。 回复【18楼】1021477601
-----------------------------------------------------------------------
这涉及文件编译时库的查找,没有什么区别,但是如果自己写的,会有区别。 toLz
只是功耗问题,没有什么大的区别。 估计问题就在这里了…… 回复【18楼】1021477601
-----------------------------------------------------------------------
<>这个是直接在你安装的库文件中寻找,而""这个是先在你建立系统文件夹当中寻找,找不到然后再安装的库文件夹寻找 回复【楼主位】tianyukobe
-----------------------------------------------------------------------
头文件的问题,不要更改头文件,只要晶振一样,程序是可以移植的,你可以直接把stc89c52单片机烧录的.hex文件,直接烧录到at89s52中。 回复【18楼】1021477601
-----------------------------------------------------------------------
#include<reg52.h>是在lib中寻找reg52.h
#include“reg52.h”是在你c文件当前目录下寻找reg52.h 应该好用的啊 是你的EA脚没有拉高吧,让他接电源就可以啦。我就看到过这个情况。 C是CMOS的意思 程序可以混用, STC的只支持串口下载, AT89S52可以用ISP和串口下载 我使用的时候也有类似的问题,试试EA看什么效果再说 楼主怎么也不来结贴~问题解决了么
页:
[1]