这是对我之前《如何假装用C语言为嵌入式写一个新语言》进行一个举例,以便更好地理解这种编程方式。
报头(S)报尾(E)
报头和报尾 | ASCII |
---|
BUGUS | 42 55 47 55 53 |
BUGUE | 42 55 47 55 45 |
CODES | 43 4f 44 45 53 |
CODEE | 43 4f 44 45 45 |
VORCS | 56 4f 52 43 53 |
VORCE | 56 4f 52 43 45 |
CONSTS | 43 4f 4e 53 54 53 |
CONSTE | 43 4f 4e 53 54 45 |
RVARS | 52 56 41 52 53 |
RVARE | 52 56 41 52 45 |
SAVES | 53 41 56 45 53 |
SAVEE | 53 41 56 45 45 |
WVARS | 57 56 41 52 53 |
WVARE | 57 56 41 52 45 |
控制指令
指令内容 | 指令标号(用户不可见) | 参数1 | 参数2 |
---|
输入输出选择(基础IO模块) | 0x02 | 引脚选择(暂时0x01-0x0a) | 输入0输出1 |
输出高低选择(基础IO模块) | 0x03 | 引脚选择(暂时0x01-0x0a) | 低电平0高电平1 |
毫秒级延时(时序模块) | 0x04 | 延时时间(暂时0x01-0xff) | |
程序逻辑指令
指令内容 | 指令标号 | 信息1 | 信息2 | 信息3 | 信息4 | 信息5 | 信息6 |
---|
循环启动器(程序基础控制模块) | 0x01 | CODE返回位 | VORC返回位 | CONST返回位 | RVAR返回位 | SAVE返回位 | WVAR返回位 |
举例
加入用户输入了这样一个程序:
而我们的MCU工作流程如下:
这里我们只截取其中一个函数的工作流程和并对循环方式进行说明:
这里需要注意的是在这个例子中我们其实并没有输出值的,所以没有对输出值进行操作,5号的demo版暂时先不做又返回值的功能。
通过以上的序列图,我们就可以写出我们的报文了:
将该报文通过串口发送到单片机,单片机即可进行工作运行。