基于STM32F1 的BASIC解码实验 vb basic 液晶显示执行过程及结果
基于STM32F1 的BASIC解码实验
1、basic程序以文件形式存储
2、程序文件存储在sd卡
3、解释结果显示在液晶屏上
主函数部分
int main(void)
{
u16 i,j;
delay_init(72); //延时初始化
Init_Io();
GLCD_Init(); //初始化液晶
BACK_COLOR=0x001F;
LCD_ShowString(30,10,"Mini STM32 SD Card TEST");
LCD_ShowString(30,30,__DATE__);
LCD_ShowString(150,30,__TIME__);
ffext_mount(0, &fs);
ffext_read("0:3.bas", wbuff2, 1024, FA_OPEN_ALWAYS | FA_READ);
BACK_COLOR=0x001F;
POINT_COLOR=0xF800;
basic(wbuff2);
while (1)
{
}
}
basic关键字部分
struct commands /* 关键字查找表 */
{
char command[20];
char tok;
}table[] ={ /* 命令必须输入小写 */
"print", PRINT,
"input", INPUT,
"if", IF,
"then", THEN,
"goto", GOTO,
"for", FOR,
"next", NEXT,
"to", TO,
"gosub", GOSUB,
"return", RETURN,
"end", END,
"", END /* 单词表的结束 */
};
执行部分
void basic(char *buf)
{
char *p_buf;
/* 载入源文件 */
p_buf=buf;
if(setjmp(e_buf)) exit(1); /* 初始化长跳缓冲区 */
prog = p_buf;
scan_labels(); /* 在程序中找到标签 */
ftos = 0; /* 初始化FOR堆栈索引 */
gtos = 0; /* 初始化GOSUB堆栈索引 */
do
{
token_type = get_token();
/* 检查赋值语句 */
if(token_type==VARIABLE)
{
putback(); /* 将变量返回到输入流 */
assignment(); /* 必须是赋值语句 */
}
else /* 是命令 */
switch(tok)
{
case PRINT:
print();
break;
case GOTO:
exec_goto();
break;
case IF:
exec_if();
break;
case FOR:
exec_for();
break;
case NEXT:
next();
break;
case INPUT:
input();
break;
case GOSUB:
gosub();
break;
case RETURN:
greturn();
break;
case END:
printf("run basic end!");
while(1);
exit(0);
}
}while (tok != FINISHED);
}
//////////////////////////////////////////////////////////////////////////
参考资料下载地址:http://pan.baidu.com/s/1nt2y7O1
测试硬件:http://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-2613737244.27.uf9NEY&id=43666799360
基于STM32F1 的BASIC解码实验 vb basic 液晶显示执行过程及结果的更多相关文章
- 实验一:基于STM32F1的流水灯实验(库函数)
参考原子哥学习程序 条件:实验板STM32103ZET6:固件库STM32F10x_StdPeriph_Lib_V3.5.0:环境MDK5: 目的:了解STM32 的 IO 口如何作为输出使用 :以两 ...
- openWRT自学---基于backfire版本,分析其Make命令的执行过程和各阶段的主要产物
准备阶段:从SVN下载backfire的编译环境(位置是:svn co svn://svn.openwrt.org/openwrt/branches/backfire),然后按照openWRT的要求, ...
- 基于STM32F1与NRF24L01模块的SPI简单通信
一.前言 1.简介: 本文是基于STM32F1,将数据发送至NRF模块的寄存器,并将数据重新读取,通过串口发送出来的简单SPI单通信. 2.SPI简介: 调过STM8的都已经对SPI有所了解,调法都一 ...
- 基于ZYNQ 的UART中断实验之串口写数据到DDR3中
1.参考 UG585 网络笔记 2.理论知识 参见上一次实验:基于ZYNQ 的UART中断实验 3.实验目的 练习使用UART的中断实验,并将接收到的数据写入到DDR3中. 4.实验过程 建立工程,设 ...
- FPGA回忆记事(一):基于Nios II的LED实验
实验一:基于Nios II的LED实验 一. 创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...
- Linux 第八周实验 进程的切换和系统的一般执行过程
姬梦馨 原创作品 <Linux内核分析>MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 第八讲 进程的切换和系统的一般执行过 ...
- JVM--a == (a = b)基于栈的解释器执行过程
前言 在翻阅ConcurrentLinkedQueue的代码的时候,发现这样一段代码在JDK源码中总是出现. t != (t = tail) 原先总是以为这不就是 t != t ?很是纳闷,遂Demo ...
- 基于 Arduino 的 RFID 识别实验
http://www.it165.net/embed/html/201512/3287.html 2015年12月04日(周五) 上午 博士的智能卡实验--RFID识别实验,基于51单片机: 我们的 ...
- [转]【基于zxing的编解码实战】精简Barcode Scanner篇
通过<[搞定条形码]zxing项目源码解读(2.3.0版本,Android部分)>的分析,现在可以实现最终目标了:精简Barcode Scanner并将其中的编码和解码分离为两个独立的部分 ...
随机推荐
- pat 1054 The Dominant Color(20 分)
1054 The Dominant Color(20 分) Behind the scenes in the computer's memory, color is always talked abo ...
- requests模块使用代理
1.创建try_proxies.py文件import requestsproxies = {"http":"http:117.135.34.6:8060"}he ...
- 一个自动修正数据时间和补全缺失数据的MapReduce程序
原始数据如下图: 程序: Mapper类: public class DemoMapper extends Mapper<LongWritable,Text,IntWritable,Text&g ...
- Linux菜鸟——常见命令一 查看及创建目录文件等命令
命令行提示符 [root@localhost ~]# [当前用户名@主机名 当前所在目录]$ linux 超级用户 root window 超级用户 administartor # 超级用户 $ 普通 ...
- BloomFilter在Hudi中的应用
Bloom Filter在Hudi中的应用 介绍 Bloom Filter可以用于检索一个元素是否在一个集合中.它的优点是空间效率和查询时间都远远超过一般的算法,主要缺点是存在一定的误判率:当其判断元 ...
- 标准库flag和cobra
package main import "flag" var b bool var q *bool func init(){ var b bool //方式一 flag.Type( ...
- [FPGA]Verilog实现寄存器LS374
目录 想说的话... 正文 IC介绍 电路连接图 功能表 逻辑图 实验原理 单元实现_D触发器 整体实现(完整代码) 想说的话... 不久前正式开通了博客,以后有空了会尽量把自己学习过程中的心得或者感 ...
- k8s 随记
1.kubelet参数解析:https://blog.csdn.net/qq_34857250/article/details/84995381 2.如何在github中查找k8s代码关键字? 现在我 ...
- Java多线程——对象及变量的并发访问
Java多线系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多线 ...
- JDK1.8新特性(一):stream
一.什么是stream? 1.概述 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管 ...