一、 是单片机还是计算机?
著名的“APPLEII”,其CPU是8位的,主频是1MHz的,标配RAM是16KB的。虽然性能指标如此低,却被尊称为“微型计算机”,其1977年的4KB RAM的首发版售价为1298美元。 对比最新的“AI8051U芯片”即使工作在8BIT模式,其CPU主频也高达40MHz,片上RAM就更高达32KB。而如此高的性能指标,却只能屈尊被称为“单片机”,其某宝零售价仅4元人民币。 如果也能用的“AI8051U芯片”作为CPU造出一台“微型计算机”来,那么这颗划时代的芯片就会开创出另一个“单片计算机”的新时代。 要想“用单片机造计算机”,首先要弄清楚“单片机”与“计算机”之间的最本质差别是什么,这差别绝对不是硬件性能上的差异。笔者认为它们之间最本质的差别是“新功能的开发模式”。 典型的单片机开发模式是:如果用户要在单片机现有功能的基础上增加新功能,必须在另外的计算机(比如笔记本电脑)上将实现新功能的高级/汇编计算机语言程序用“编译器”编译为CPU可执行机器码(比如HEX烧录文件),然后下载到单片机中,然后单片机才具有新功能。这个单片机开发模式的本质是“编译器软件”(比如Keil的C51)不是在AI8051U芯片上运行的,所以“AI8051U芯片”只能被称为“单片机”。 APPLE II微型计算机开发模式是:由于其初期4KB RAM版本上面就安装了“Integer BASIC(由沃兹尼亚克编写,固化在ROM中)”,所以如果用户需要什么新的功能,就可以从键盘上向计算机一行一行地输入BASIC程序,然后计算机中的BASIC语言“编译器(解释型的)” 就开始一行一行地“解释和执行”输入的BASIC程序,然后APPLE II就具有了新功能。这个计算机开发模式的本质是“编译器软件”(Integer BASIC)是在APPLE II上运行的,所以“APPLEII”就能称为是“计算机”。 因此区分“单片机”与“计算机”最重要的区别是高级计算机语言的编译器运行在什么地方。 比如“树莓派”开发板再小,因为其上面运行了Linux的“GCC”编译器,所以“树莓派”是计算机。 再比如工业单片机控制系统,不管其体积多大,哪怕它还有键盘、鼠标和触摸屏,还是只能称为“单片机”系统。
二、 最小8051单片计算机
FORTH语言是一种高级计算机语言,FORTH系统内含一个解释型的编译器,该解释器对输入的命令和程序进行解释执行。 “51-FORTH”是笔者开发的运行在8051单片机上的FORTH系统,51-FORTH系统以HEX格式烧录文件的方式提供,经一次性地用STC-ISP烧录固化到8051单片机的FLASH中,以后每次开机就都会自动运行,无需再次烧录。 51-FORTH从单片机的串口1上接收命令或者程序,然后进行解释和执行,实现操作者的目的。 要想在运行51-FORTH的单片机上增加新的功能,只需要通过串口1向单片机输入程序,单片机上的51-FORTH就会解释这些程序,生成和保存单片机可以执行的机器码,等以后操作者下命令后执行这些新功能了。 按照前面的计算机定义,只需要在8051单片机上安装51-FORTH系统,我们就打造了一台名副其实的“8051计算机”了: 8051单片机 + 51-FORTH = 8051计算机 下图是笔者制作的“最小8051计算机”系统,系统的硬件仅包括一片“AI8051U单片机”,一个电源开关,一个TTL串口转USB转接口: 由于在这个系统中串口-USB转换器可以看做是计算机的外部设备,因此最小的8051计算机仅包括一片“AI8051U”单片机,因此也可以把“AI8051U”单片机称为“8051单片计算机”,这就是我一直称它开辟了一个8051单片机的新时代的原因之一。 最小8051计算机系统的软件有两个“附件1_51_FORTH_V011.rar”和“附件2_超级终端_Win10_EXE.rar”。 附件1解压后的“51_FORTH_V011.HEX”是51-FORTH针对“AI8051U”的V0.11学习版本,用STC-ISP软件以8-BIT模式和33.1776MHz的主频烧录到“AI8051U/STC8051U”单片机中即可。以“AIapp-ISP-v6.95E.exe”为例: 附件2解压后的“Hyper Terminal.exe”是一款绿色的Winows超级终端软件,在Win7和Win10上都可以使用。使用时不需要安装,双击该文件名就可以执行了: 按左上角的“+”号,打开8051单片计算机使用的串口: 将串口的波特率设置为9600,然后按打开串口,启动超级终端。 超级终端启动后,打开单片机的电源,可以看到51-FORTH系统的启动过程: 51-FORTH的输入提示符为“JL>”,操作者必须等到出现这个提示符后(表示系统当前的任务已经处理完成)才能输入新一行的命令或者程序,操作者按下<CR>回车键后,51-FORTH开始解释执行这一行命令。 比如: 上面“HELLO”是51-FORTH命令,执行后再屏幕上显示“Hello, World!”字符串,后面跟的“ok”是命令正常执行的信息。 上面“111 222 + .”是51-FORTH程序,计算数字“111”与“222”的加法,然后将结果显示出来。FORTH语言用空格区分程序行的每一个“元素”。 这段程序用BASIC语言写出来为“?111+222”,用C语言写出来为“printf(“%d”,111+222);”,对比FORTH,每个语言的特点都很明显了。 如果操作者使用的是Linux操作系统,据网络查询说安装“minicom”串口通讯程序也行。 51-FORTH区分大小写字母,像上面的“hello”就被51-FORTH认为是错误的,因为它在命令表里找不到这个词,结果就给出出错的提示。
三、 51-FORTH简介
51-FORTH语言是在8051单片机上运行的Forth语言,由标准Forth加8051单片机扩展部分组成。除了标准的Forth语言外,还增加了许多对“AI8051U”单片机的片上设备和GPIO接口的支持功能。 Forth是一种非常适合单片机编程的计算机语言。由于Forth最主要的特征是一种交互式的和解释性的高级计算机语言,用户通过文字终端用键盘输入Forth命令和程序,Forth系统对每个输入行中的“Forth字”(用空格分开的语法元素)进行解释,是命令就立即执行,是程序就编译为代码放到内存中等待调用和执行。而所谓Forth编程就是将这些命令和程序写在一个文本文件中,然后调用Forth解释程序来读取这个文本文件,逐行进行解释和执行。 按照这个Forth的工作流程,需要不断输入和存放新的命令和程序,因此运行Forth的计算机需要大量的RAM,通常只运行在像PC机这样的数据和程序都放在RAM中的冯诺依曼架构的计算机上,而难运行在将数据分开放到RAM区域和将CODE代码分开放到FLASH区域的哈弗架构的8051单片机上。 在51-FORTH项目开始研究时都是用硬件的方式在STC单片机外接SRAM,这个方案的抗干扰能力差,最重要的是无法推荐给广大的普通用户。直到具有32KB的片上的XRAM的AI8051U单片机问世,51-FORTH才可以独立运行在单个单片机上,不再需要其他的硬件支持了。 因此,不管是什么样的开发板和实验箱,只要安装的是AI8051U芯片,只要烧录进51-FORTH,就成了一台“8051单片计算机”了,就可以用它来学习和研究Forth语言在51单片机上的应用了。比如“擎天柱核心板”就是一台加强版的“最小8051单片计算机”。 由于Forth是一门非常小众的计算机语言,目前的51-FORTH是V0.11学习版,其X51汇编语言功能被限制了,主要提供大家学习了解标准Forth语言用。
附件1:51-FORTH V0.11 存在P4~P7端口不能用的BUG
附件2:
版本已更新了
附件3: 51-FORTH V0.21 已改正P4~P7端口不能用的BUG
附件3_51_FORTH_V021.rar
(22.86 KB, 下载次数: 20)
|