找回密码
 立即注册
查看: 1120|回复: 5

转帖:新手的IAR C++ FOR 8051 对STC8H8K64U单片机的最简单C++例程

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2025-05-02 16:43:36
已绑定手机

6

主题

285

回帖

885

积分

荣誉版主

积分
885
发表于 2023-11-20 10:28:55 | 显示全部楼层 |阅读模式
//新手的IAR C++ (V10.20) FOR 8051 对STC8H8K64U单片机的最简单C++编程,欢迎指正 autopccopy (itkw_com) 2022.09.09;10.05学习数码之家的网友指正Init()的bug

//C语言是面向过程的,而C++是面向对象的。C++:是C语言的继承。理论上C语言都可在C++中运行。但C++有三大特性:封装、继承和多态(嵌入式C++有简化)
//目前支持8051的好像仅有IAR C_C++ FOR 8051软件(KEIL C51 及SDCC等是不支持C++的, MDK是支持ARM的C++),IAR的官方手册下载:https://wwwfiles.iar.com/8051/webic/doc/EW8051_CompilerGuide.pdf
//另可参考文档《IAR 8051 C/C++ 概述 - 以及使用C++ 相比C 的提升》:https://blog.csdn.net/Etberzin/article/details/121287492
//STC的 IAR 8051 例程(暂好像未C++特性的):http://www.stcmcudata.com/OpenSource/STC8H-IAR.ZIP
//网上8051 C++的例程非常少,本例只是一个最简单的例子,抛砖引玉。 以IAR 8051 V10.20 试用版 在STC 打狗棍最小系统板 验证成功。

extern "C"  //此处在C++中兼容C代码:包含头文件
{
#include "ioSTC8H.h" //STC8头文件
}

typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned long u32;


class LED_Class1  //建立一个LED的类
{
  private:        //私有:成员只能被该类的成员函数访问
  u8 GPIO_Pin;     //P口的引脚序号(本例占用P1口)

  public:         //公有:成员可以在类外访问
  LED_Class1(u8 PinX)
  {
   LED_Class1::GPIO_Pin = PinX;  //::为C++中的作用域符号(后面GPIO_Pin是该类的成员)
  }

  void Init(void)  //IO模式初始化:上电默认为高阻模式,本例暂设置为开漏 模式 (低电平)驱动LED
  {
   //GPIO_OC(GPIO_Pin);
   P3M0 |= 1<<GPIO_Pin;
   P3M1 |= 1<<GPIO_Pin;
  }

  void Off(void) //设置该IO为高电平关闭LED
  {
   //GPIO_SetBits(GPIO_Pin);
   P3 |= 1 <<GPIO_Pin;
  }

  void On(void) //设置该IO为低电平点亮LED
  {
   //GPIO_ResetBits(GPIO_Pin);
   P3 &= ~(1<<GPIO_Pin);
  }
};


void delay()  //延时函数
{
  u32 i=10000;
  while(i--);
}

int main(void) //主函数
{
  //定义2个LED
  LED_Class1 LED1(2); //
  LED_Class1 LED2(3); //

  //初始化:本例暂使用开漏OC模式,低电平点亮LED
  LED1.Init();
  LED2.Init();

  while(1) //2个LED交错闪烁
  {
    LED1.On();
    LED2.Off();
    delay();

    LED1.Off();
    LED2.On();
    delay();
  }
}


IAR8051_C  .png
STC8H8K64U_C  最简单例程.png
STC8H8K64U_C  例程运行结果.gif
STC8H8K64U打狗棒_C  最简单例程运行结果.jpg

STC8H-IAR_8051_C _demo_codeA.zip

2.35 MB, 下载次数: 89

(仅供参考,欢迎探讨)
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-12-27 20:41:15

0

主题

1

回帖

32

积分

新手上路

积分
32
发表于 2023-11-21 12:50:49 | 显示全部楼层
有 STC32G 能用IAR的资料么?

点评

据我所知,STC32目前暂只能使用 KEIL C251编译器。  详情 回复 发表于 2023-11-21 15:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2025-05-02 16:43:36
已绑定手机

6

主题

285

回帖

885

积分

荣誉版主

积分
885
发表于 2023-11-21 15:17:22 | 显示全部楼层
zhw*** 发表于 2023-11-21 12:50
有 STC32G 能用IAR的资料么?

据我所知,STC32目前暂只能使用 KEIL C251编译器。
(仅供参考,欢迎探讨)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-01 19:17:52
已绑定手机

19

主题

208

回帖

492

积分

中级会员

积分
492
发表于 2024-7-16 23:52:45 | 显示全部楼层
请问现在还能下载到IAR 51的编译器么?个人邮箱在IAR官网下载申请通不过啊,哪位做个好事,给我邮箱( 879381753@qq.com ) 发一个,谢谢啦
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-08-27 15:25:33

1

主题

17

回帖

105

积分

注册会员

积分
105
发表于 2024-7-29 17:42:23 | 显示全部楼层
能找到的。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2024-10-20 12:51:39 来自手机 | 显示全部楼层
机灵小老鼠 发表于 2024-7-16 23:52
请问现在还能下载到IAR 51的编译器么?个人邮箱在IAR官网下载申请通不过啊,哪位做个好事,给我邮箱(  ) 发 ...

旧版有和谐版
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:11 , Processed in 0.541711 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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