找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2119|回复: 15
收起左侧

为什么不同款单片机包含的头文件却是一样的 STC的

[复制链接]
ID:1091094 发表于 2023-12-27 12:16 | 显示全部楼层 |阅读模式
大家都知道STC89C52写程序时,包含的头文件是<reg51.h>;
  但是为什么STC8A8K64S4A12,给它写程序时,包含的头文件也是<reg51.h>,而且是他们的芯片手册上的推荐例程这么写的。
因为这两款芯片的资源很不一样啊,STC8A8K64S4A12多了这么多资源。

  1. //C 语言代码
  2. #include "reg51.h"
  3. #include "intrins.h"
  4. sbit P10 = P1^0;
  5. sbit P11 = P1^1;
  6. void INT0_Isr() interrupt 0
  7. {
  8. if (INT0) //判断上升沿和下降沿
  9. {
  10. P10 = !P10; //测试端口
  11. }
  12. else
  13. {
  14. P11 = !P11; //测试端口
  15. }
  16. }
  17. void main()
  18. {
  19. IT0 = 0; //使能 INT0 上升沿和下降沿中断
  20. EX0 = 1; //使能 INT0 中断
  21. EA = 1;
  22. while (1);
  23. }
复制代码

这是为什么呢?

回复

使用道具 举报

ID:213173 发表于 2023-12-27 14:16 | 显示全部楼层
当你用到哪个寄存器时可以定义地址,你这个程序要设置端口模式,否则不能正常运行。
//C 语言代码
#include "reg51.h"
#include "intrins.h"

sfr  P1M1 = 0x91;
sfr  P1M0 = 0x92;
sfr  P3M1 = 0xb1;
sfr  P3M0 = 0xb2;


sbit P10 = P1^0;
sbit P11 = P1^1;

void INT0_Isr() interrupt 0
{
        if (INT0) //判断上升沿和下降沿
        {
                P10 = !P10; //测试端口
        }
        else
        {
                P11 = !P11; //测试端口
        }
}
void main()
{
        P1M1=0x00;
        P1M0=0x00;
        P3M1=0x00;
        P3M0=0x00;

       
        IT0 = 0; //使能 INT0 上升沿和下降沿中断
        EX0 = 1; //使能 INT0 中断
        EA = 1;
        while (1);
}
回复

使用道具 举报

ID:1057978 发表于 2023-12-27 15:45 | 显示全部楼层
STC就是传承自51单片机,增加了许多其他资源,引用头文件一样,说明在内核设计上是兼容传统51单片机的
回复

使用道具 举报

ID:814525 发表于 2023-12-27 15:59 | 显示全部楼层
STC单片机有很多与芯片对应的头文件,你要使用reg51.h。你说这是为什么???
回复

使用道具 举报

ID:883242 发表于 2023-12-27 16:46 | 显示全部楼层
说明了你可以把这些单片机当成最基本的51单片机来用。
回复

使用道具 举报

ID:57657 发表于 2023-12-27 18:18 | 显示全部楼层
wulin 发表于 2023-12-27 14:16
当你用到哪个寄存器时可以定义地址,你这个程序要设置端口模式,否则不能正常运行。
//C 语言代码
#inclu ...

reg51.h 是AT89系列单片机使用的,你应该引用STC对应的的头文件,而不是使用sfr去定义寄存器地址。
部分寄存器在扩展RAM区域(XDADA)区域,访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写。
不同系列单片机的相同的寄存器,地址可能会不一样,否则你这样出了问题都找不到北。
回复

使用道具 举报

ID:1091094 发表于 2023-12-27 19:07 | 显示全部楼层
wulin 发表于 2023-12-27 14:16
当你用到哪个寄存器时可以定义地址,你这个程序要设置端口模式,否则不能正常运行。
//C 语言代码
#inclu ...

啊 什么是端口模式,只学了51 ,不懂端口模式
   不过我觉得每款芯片都应该有相应的头文件吧
   这样就不用自己来定义sfr P1M1=0X91,之类的了
回复

使用道具 举报

ID:1091094 发表于 2023-12-27 19:09 | 显示全部楼层
张天师 发表于 2023-12-27 15:59
STC单片机有很多与芯片对应的头文件,你要使用reg51.h。你说这是为什么???

我说的是为什么他的芯片手册给出的例程也是使用REG51.H。
回复

使用道具 举报

ID:1091094 发表于 2023-12-27 19:10 | 显示全部楼层
Hephaestus 发表于 2023-12-27 16:46
说明了你可以把这些单片机当成最基本的51单片机来用。

是的 确实如此,想问一下,如果要添加相应的头文件,去哪里找合适的头文件呢?
        谢谢谢谢
回复

使用道具 举报

ID:748788 发表于 2023-12-27 22:00 | 显示全部楼层
就找stc呀——stc-isp
回复

使用道具 举报

ID:213173 发表于 2023-12-28 07:25 | 显示全部楼层
发表于 2023-12-27 19:07
啊 什么是端口模式,只学了51 ,不懂端口模式。
   不过我觉得每款芯片都应该有相应的头文件吧
  ...

51hei.jpg
回复

使用道具 举报

ID:57657 发表于 2023-12-28 07:25 | 显示全部楼层
3038838599 发表于 2023-12-27 19:07
啊 什么是端口模式,只学了51 ,不懂端口模式。
   不过我觉得每款芯片都应该有相应的头文件吧
  ...

P1M1这个寄存器 STC89/90系列是没有的,你定义了也没用。
其他品牌单片机,该地址可能是别的寄存器,也可能是空白。
回复

使用道具 举报

ID:879348 发表于 2023-12-28 08:32 | 显示全部楼层
因为51架构基本寄存器所有型号都是通用的,当你需要用那些额外的东西就要sfr定义寄存器
回复

使用道具 举报

ID:526108 发表于 2023-12-28 08:44 | 显示全部楼层
是不一样的谢谢
回复

使用道具 举报

ID:136485 发表于 2023-12-28 09:05 | 显示全部楼层
STC的下载软件那么方便,复制粘贴保存就行了,还在问这么低级的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表