标题: 为什么不同款单片机包含的头文件却是一样的 STC的 [打印本页]

作者: 3038838599    时间: 2023-12-27 12:16
标题: 为什么不同款单片机包含的头文件却是一样的 STC的
大家都知道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. }
复制代码

这是为什么呢?


作者: wulin    时间: 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);
}
作者: wangxiangtan    时间: 2023-12-27 15:45
STC就是传承自51单片机,增加了许多其他资源,引用头文件一样,说明在内核设计上是兼容传统51单片机的
作者: 张天师    时间: 2023-12-27 15:59
STC单片机有很多与芯片对应的头文件,你要使用reg51.h。你说这是为什么???
作者: Hephaestus    时间: 2023-12-27 16:46
说明了你可以把这些单片机当成最基本的51单片机来用。
作者: npn    时间: 2023-12-27 18:18
wulin 发表于 2023-12-27 14:16
当你用到哪个寄存器时可以定义地址,你这个程序要设置端口模式,否则不能正常运行。
//C 语言代码
#inclu ...

reg51.h 是AT89系列单片机使用的,你应该引用STC对应的的头文件,而不是使用sfr去定义寄存器地址。
部分寄存器在扩展RAM区域(XDADA)区域,访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写。
不同系列单片机的相同的寄存器,地址可能会不一样,否则你这样出了问题都找不到北。
作者: 3038838599    时间: 2023-12-27 19:07
wulin 发表于 2023-12-27 14:16
当你用到哪个寄存器时可以定义地址,你这个程序要设置端口模式,否则不能正常运行。
//C 语言代码
#inclu ...

啊 什么是端口模式,只学了51 ,不懂端口模式
   不过我觉得每款芯片都应该有相应的头文件吧
   这样就不用自己来定义sfr P1M1=0X91,之类的了
作者: 3038838599    时间: 2023-12-27 19:09
张天师 发表于 2023-12-27 15:59
STC单片机有很多与芯片对应的头文件,你要使用reg51.h。你说这是为什么???

我说的是为什么他的芯片手册给出的例程也是使用REG51.H。
作者: 3038838599    时间: 2023-12-27 19:10
Hephaestus 发表于 2023-12-27 16:46
说明了你可以把这些单片机当成最基本的51单片机来用。

是的 确实如此,想问一下,如果要添加相应的头文件,去哪里找合适的头文件呢?
        谢谢谢谢
作者: wwh2382    时间: 2023-12-27 22:00
就找stc呀——stc-isp
作者: wulin    时间: 2023-12-28 07:25
发表于 2023-12-27 19:07
啊 什么是端口模式,只学了51 ,不懂端口模式。
   不过我觉得每款芯片都应该有相应的头文件吧
  ...

51hei.jpg (212.06 KB, 下载次数: 78)

51hei.jpg

作者: npn    时间: 2023-12-28 07:25
3038838599 发表于 2023-12-27 19:07
啊 什么是端口模式,只学了51 ,不懂端口模式。
   不过我觉得每款芯片都应该有相应的头文件吧
  ...

P1M1这个寄存器 STC89/90系列是没有的,你定义了也没用。
其他品牌单片机,该地址可能是别的寄存器,也可能是空白。
作者: wufa1986    时间: 2023-12-28 08:32
因为51架构基本寄存器所有型号都是通用的,当你需要用那些额外的东西就要sfr定义寄存器
作者: 624353765    时间: 2023-12-28 08:44
是不一样的谢谢
作者: kxcuser    时间: 2023-12-28 09:05
STC的下载软件那么方便,复制粘贴保存就行了,还在问这么低级的问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1