杨为民 发表于 2024-8-31 22:50:41

STCIDE + 金水151 + AIapp-ISP:全国产纯绿色的80x51单片机软件开发工具链

一、STCIDE + 金水151 + AIapp-ISP工具链简介(1)STCIDE是通用的单片机软件开发集成环境,金水151是Y2C80151系列单片机的C351编译器,AIAPP-ISP是多功能的单片机程序编程和烧录软件工具,这三者全部都是具有国内自主产权的、全面支持汉字环境的、免安装的和无广告的绿色软件,它们组合在一起就形成了一条从单片机项目管理,到源程序编辑,到C语言编译,到计算机辅助编程和运行、到最后的单片机烧录程序这整个AI8051U系列单片机开发过程的完整的软件工具链。(2)作为C351语言编译器的金水151软件,如果使用Keil的集成环境作为项目管理和源程序编辑软件,则需要用“MakeFile”的方法产生烧录HEX文件(见笔者前面的文章)。但是使用本文给出的STCIDE集成开发环境,则可以直接使用它的编译按钮或者菜单进行项目编译,生成HEX文件。二、STCIDE单片机软件开发集成环境的使用方法简介(3)STCIDE是一款国产中文的IDE软件,可以在菜单中选择中文或者英文界面。为了兼容和方便广大的51单片机用户,STCIDE的界面与操作方式与Keil有很多相似的地方,其使用方法可以参考Keil。(4)STCIDE软件无需安装,软件解压后复制到自己合适的目录就行了。计算机新装上STCIDE软件后,需要直接点击“StcIde.exe”执行一次该程序,这样STCIDE就会进行计算机注册和关联它的项目文件类型,以后点击其项目文件就会自己启动它。(5)下图是STCIDE初次执行的界面,可以看出其与Keil很相似:



(6)下图是文件菜单,可以进行项目文件管理:

(7)新建一个STCIDE项目,需要在指定目录建立一个后缀为“.stcprj”的项目文件。

(8)建立一个新项目,首先需要指定项目的目标芯片型号。由于金水151编译器是用自己的语句来指定目标芯片和工作模式,不会读取STCIDE的芯片信息,因此在STCIDE中随便指定什么型号都可以。其次需要指定项目文件所在的路径,STCIDE然后就以此为“根目录”来管理其他的项目文件,见下图:

(9)下图是新建项目的目录树,用户可以将各种项目文件分目录进行管理:

(10)新建项目后,可以右键点击项目组名称,然后从调出的菜单选择增加新的项目文件:

(11)当所有项目文件添加好,各个源程序文件编辑好,就可以选择点击编译的快捷按钮、按快捷键或者点击编译菜单调用金水151编译器对项目进行编译。编译的结果见下方的输出窗口:

如果编译成功就会生成HEX烧录文件。(12)如果源程序有错误,就会产生编译错误或者编译警告,错误和警告信息会显示在下方的信息输出框中,见下图:

上图源程序中第42行“zzz=1;”是一个错误语句,因为“zzz”没有定义。下面的信息输出框中将出错语句所在的文件、行号、错误的编号和出错的解释都显示出来。(13)对于输出框中的出错或警告信息,双击该条信息,STCIDE会自动打开该文件,并将光标跳转到该行出错程序,方便用户进行程序调试。见下图:

(14)金水151编译器已经集成在STCIDE中了,将本文的附件解压后,建议直接复制到C盘根目录下,见下图:

(15)在“STCIDE-金水151”的目录下,包含了一个范例目录“sample”,下面有两个跑马灯范例,分别对应AI8051U单片机的8BIT模式和32BIT模式。这两个程序只有第13行程序不同:

其中关键字“STC8U_8BIT”指定金水151编译器按照8051指令来进行编译,供AIAPP-ISP用8BIT模式进行烧录。而下图中:

其中关键字“STC8U_32BIT”指定金水151编译器按照80251指令来进行编译,供AIAPP-ISP用32BIT模式进行烧录。(16)使用本文介绍的80x51单片机软件开发工具链,不再需要安装任何其他的像Keil、IAR等编译器以及安装像VSCODE等IDE了。


杨为民 发表于 2024-9-1 09:52:45

wnagming 发表于 2024-9-1 08:46
这玩意能直接打开KEil工程吗?

对于Keil工程,可以用MakeFile的方法用金水151编译,也可以将工程导入到STCIDE中

soma 发表于 2024-9-1 12:31:56

有了这个可以不使用keil编译251程序了吧。

杨为民 发表于 2024-9-1 14:24:04

soma 发表于 2024-9-1 12:31
有了这个可以不使用keil编译251程序了吧。

是的

jwd 发表于 2024-9-1 15:35:40

{:4_250:}

lijn 发表于 2024-9-1 17:34:40

编译不成功,没有找到编译器,请教杨老师,这是什么原因。

soma 发表于 2024-9-1 19:42:13

lijn 发表于 2024-9-1 17:34
编译不成功,没有找到编译器,请教杨老师,这是什么原因。

keil编译器装c盘keil目录下了吗?没有把选择最上面编译工具改为stc。

lijn 发表于 2024-9-1 20:30:30

soma 发表于 2024-9-1 19:42
keil编译器装c盘keil目录下了吗?没有把选择最上面编译工具改为stc。
谢谢指导,可以编译C文件了。但编译汇编文件不成功。7个错误,但没有提示在什么地方。

liuzonggong 发表于 2024-9-2 07:34:14

这个好,避免了Keil公司想起诉的意图了。

杨为民 发表于 2024-9-2 14:04:31

lijn 发表于 2024-9-1 20:30
谢谢指导,可以编译C文件了。但编译汇编文件不成功。7个错误,但没有提示在什么地方。 ...

(1)STCIDE+金水151编译器是试用阶段,感谢你分享你的使用体验和提出的问题。

(2)由于你的这个问题既涉及如何写汇编语言程序,又涉及如何使用STCIDE+金水151编译器,请原谅我分多次回复你这个帖子。针对你的问题,我还会专门开个帖子介绍在C351中如何使用汇编语言,希望尽多地帮助到你。
(3)STCIDE和金水系列编译器的设计不像Keil的C51/C251/MDK每种只支持一种指令集,因此对于每个程序项目,目前必须在程序中明确地包含8051或者80251的SFR寄存器的定义头文件,不支持缺省定义。意思就是即使是SP和P0、P1、P2都要给出定义。
(4)由于没有你的完整的项目可以参考,如果你的程序只有下面一个文件:


那么按照C351的语法,有以下错误:
1)由于P0没有定义,因此第4,5行的BIT定义有错误;
2)由于对应的SFR没有定义,第13,14,15,16行错误;
3)第19行的之干道红灯无定义;
4)第22,30行的延迟函数DELAY没有定义
(5)对于一个完整的A351程序(一个模块),要求有模块名称、代码段声明等,语法对初学者有难度,因此对于金水151编译器的使用者,提倡将汇编语言嵌入到C语言程序中使用。
这样不但可以直接使用C语言的函数和变量名称,而且那些关于存储空间的定义和分配的的部分可以让编译器去自动完成,既省心也避免出错。

页: [1] 2 3 4 5 6
查看完整版本: STCIDE + 金水151 + AIapp-ISP:全国产纯绿色的80x51单片机软件开发工具链