- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华南师范大学嵌入式综设实验报告
选题:基于ARM和UCOS-II系统的小型计算器
指导老师: 王剑x
组员(学号):xx) xx)
一、实现功能
实现五位整数的加减乘除带括号的运算,由于实验箱的键盘数量有限,于是我们将键盘设置为虚拟的两层结构,其使用方法如下:
(1)第一层键盘使用指南
1
2
3
(
4
5
6
)
7
8
9
第二层
0
.
第一层
=
(2)第二层键盘使用指南
+
%
-
*
/
二、系统流程图
开 始两次扫描键盘,获取键码
开 始
两次扫描键盘,获取键码
输入的字符是否为数字
输入的字符是否为数字
Y
Y
num = (num*10)+(ch-0);
num = (num*10)+(ch-0);
N
字符是否为
字符是否为(
处理左括号Push(Sym,SymTop,();
处理左括号Push(Sym,SymTop,();
Y
处理右括号Push(Sym,SymTop,));
处理右括号Push(Sym,SymTop,));
是否为)
Y
N
是否为+处理加号Push(Sym,SymTop,+);
是否为+
处理加号Push(Sym,SymTop,+);
处理减号Push(Sym,SymTop,-);
处理减号Push(Sym,SymTop,-);
是否为-
Y
是否为*处理乘号Push(Sym,SymTop,
是否为*
处理乘号Push(Sym,SymTop,*);
Y
N
是否为./处理除号Push(Sym,SymTop,/);
是否为./
处理除号Push(Sym,SymTop,/);
Y
计算器清零,使栈清空是否为清零
计算器清零,使栈清空
是否为清零
Y
N
是否为=计算,调用
是否为=
计算,调用Calculate(int right,int left,int symbol);
Y
显示当前数值或运算符
显示当前数值或运算符
计算原理
计算原理
定义一个操作数栈sym,一个操作符栈um 。
思想是:置操作数栈为空,操作符栈压入元素#(它具有最高优先级),依次读入表达式中的每个字符CH,如果CH是操作数,则CH压入操作数栈,如果CH是操作符,那么将CH和操作符栈顶元素进行优先级比较(如‘×’优先级高于‘+’)。
如果优先级大于当前栈顶元素,那么将其压栈,
如果其优先级小于当前栈顶元素,那么执行op=sym.pop();(取当前栈顶操作符),a=um.pop()(取当前栈顶操作数存入临时变量a);b=sym.pop()(取当前栈顶操作数存入临时变量b);c=计算(a op b); sym.push(c);
如果优先级相等,则当前操作符出栈。
重复上述操作直到表达式处理完毕。
最后操作数栈剩余的操作数就是计算的最终结果。
三、程序
#include Includes.h /* uC/OS interface */
#include option.h
#include 2410lib.h
#include uhal.h
/* 任务栈 */
OS_STK StackLED[STACKSIZE]= {0, }; // 任务LED任务栈
OS_STK StackSEG[STACKSIZE]= {0, }; // 任务SEG任务栈
/* 任务ID */
char IdLED = 1; // 任务LED ID
char IdSEG = 2; // 任务SEG ID
/* 任务处理函数 */
void TaskLED(void *Id); // 任务LED任务处理函数
void TaskSEG(void *Id); // 任务SEG任务处理函数
void TmrFunc1(INT8U arg);
/* 定时器1*/
OS_TMR *Tmr1;
char ch,ch2;
char print_1[1];
char print_2 [6]; /*用于串口输出*/
int Page=0; /* 键盘的页面标志 */
/*栈定义*/
#ifndef STACK_SIZE
#define STACK_SIZE 64
#endif
int Num[STACK_SIZE];/*数字栈 */
int NumTop=0;
int Sym[STACK_SIZE];/*字符栈,用来储存操作符 */
int SymTop=0;
void Push_(int * stack,int * top,int val);
int Pop_(
您可能关注的文档
- 汽车空调控制系统设计本科毕业论文.doc
- 汽车起重机液压系统设计(毕业论文).doc
- 汽车维修保养项目可行性研究报告(详细编制方案).doc
- 汽车维修工程课程设计任务书.docx
- 汽车维修企业设计-课程设计.doc
- 汽车维修液压式双柱举升机设计.doc
- 汽车维修专业(中、高级工)一体化课程标准及学习任务设计方案.doc
- 汽车尾气分析及净化处理毕业设计.pdf
- 汽车物流园区选址课设.ppt
- 汽车制造与检修专业教学标准ok.docx
- 2026年德清县人民调解员协会招聘工作人员备考题库及一套完整答案详解.docx
- 2026年高端新材料在石墨烯材料研发动态与应用趋势.docx
- 臀部脂肪堆积多学科决策模式中国专家共识(2025版).docx
- 2026年德清县人民调解员协会招聘工作人员备考题库及一套答案详解.docx
- 2026年德清县人民调解员协会招聘工作人员备考题库及一套参考答案详解.docx
- 2026年德清县人民调解员协会招聘工作人员备考题库及完整答案详解一套.docx
- 2026年数字经济在线影视行业海外市场拓展策略.docx
- 臀部结缔组织交界恶性肿瘤多学科决策模式中国专家共识(2025版).docx
- 2026年德清县人民调解员协会招聘工作人员备考题库及1套完整答案详解.docx
- 2026年德清县人民调解员协会招聘工作人员备考题库参考答案详解.docx
原创力文档


文档评论(0)