转帖:新手的IAR C++ FOR 8051 对STC8H8K64U单片机的最简单C++例程
//新手的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 intu16;
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();
}
}
有 STC32G 能用IAR的资料么? zhw618 发表于 2023-11-21 12:50
有 STC32G 能用IAR的资料么?
据我所知,STC32目前暂只能使用 KEIL C251编译器。 请问现在还能下载到IAR 51的编译器么?个人邮箱在IAR官网下载申请通不过啊,哪位做个好事,给我邮箱( 879381753@qq.com ) 发一个,谢谢啦 能找到的。 机灵小老鼠 发表于 2024-7-16 23:52
请问现在还能下载到IAR 51的编译器么?个人邮箱在IAR官网下载申请通不过啊,哪位做个好事,给我邮箱() 发 ...
旧版有和谐版
页:
[1]