CN102043715A - 一种现场用户实现单片机仿真的方法及装置 - Google Patents
一种现场用户实现单片机仿真的方法及装置 Download PDFInfo
- Publication number
- CN102043715A CN102043715A CN 201010603160 CN201010603160A CN102043715A CN 102043715 A CN102043715 A CN 102043715A CN 201010603160 CN201010603160 CN 201010603160 CN 201010603160 A CN201010603160 A CN 201010603160A CN 102043715 A CN102043715 A CN 102043715A
- Authority
- CN
- China
- Prior art keywords
- instruction
- key
- compiler
- code
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种现场用户实现单片机仿真的方法及装置,装置包含:键盘控制器,与编译器连接,用于输入用户程序;编译器,与键盘控制器连接,接收来自键盘控制器的用户程序并将其编译生成机器指令;指令存储单元,存储编译器输出的机器指令;I/O接口电路,将外接设备与编译器连接;以及状态指令单元,将编译器的状态指令输入到外接设备。本发明还提供一种可以用该装置实现的方法。本发明能为在一线工作的研发人员,特别是没有充分实验设备但是又十分有需要单片机编程的人员,编制程序提供方便。
Description
技术领域
本发明涉及单片机开发应用技术领域,具体地说,涉及一种现场用户实现单片机仿真的方法及其装置,其是一种由单片机构成的单片机新型仿真结构与算法,可用于无编程器环境下的小规模用户程序编写调试,适合用于现场用户单片机的简单应用。
背景技术
目前,程序写入51系列的单片机时,要在相应的管脚加高电压,还要按照规定的时序工作,进而通过计算机串口连接烧录机实现,实现对一个小型装置配备软件。通常E2PROM写入器分为两类:一类是联机写入,由单片机控制写入过程,将单片机的系统存贮器或外存贮器中的数据通过写入器写进E2PROM;另一类是脱机人工写入,这种写入器的地址和控制信息由人工设定,写入时间长,工作效率低。因此一般采用联机写入的写入器。
程序写入前最好用仿真器调试,没有仿真器就要在计算机上用仿真软件调试成功,这给实施带来不便。
发明内容
本发明的目的在于克服现有技术的不足,提供一种现场用户实现单片机仿真的方法及装置,其能用单片机编译汇编算法,实现单片机指令系统的编译存储和运行,达到单片机的无仿真器的用户程序编译开发。
为达到上述目的,本发明采用如下技术方案:
本发明首先一种现场用户实现单片机仿真的装置,包含:键盘控制器,与编译器连接,用于输入用户程序;编译器,与键盘控制器连接,接收来自键盘控制器的用户程序并将其编译生成机器指令;指令存储单元,存储编译器输出的机器指令;I/O接口电路,将外接设备与编译器连接;以及状态指令单元,将编译器的状态指令输入到外接设备。
所述的现场用户实现单片机仿真的装置还包含用于显示输入的用户程序的显示器。
所述显示器具有4个7段数码管,并且该显示器还包含一个16位寄存器。
所述键盘控制器为2×2矩阵键盘,该2×2矩阵键盘包含一个4位寄存器,用来保存当前键值。
所述编译器包含:词法分析器,与语法分析器连接,从输入符号流中识别指令,为语法分析提供单词流;语法分析器,与词法分析器连接, 采用语法指导的方式进行中间代码的生成,该语法分析器具有的符号表管理单元为语法分析过程提供查询的功能,为后续的代码生成,提供地址信息;中间代码生成单元,完成子程序的翻译;寄存器分配单元,负责对翻译过程中产生的临时变量进行寄存器关联,为其分配内存空间;以及机器码生成单元,将各个子程序进行总装,程序初始化代码,产生完整的汇编代码,完成编译工作。
本发明另外提供一种现场用户实现单片机仿真的方法,包含:a. 判断功能键是否按下, 如果未按下, 则运行存储在指令存储单元中的程序, 否则, 进入步骤b; b. 同时按下第一键和第三键, 进入程序编写与修改状态, 用第一键和第二键修改地址,用第三键和第四键输入指令; c. 编译器将输入的代码指令编译转换为可执行的机器指令, 同时存入指令存储单元。
所述编译器将输入的代码指令编译转换为可执行的机器指令的步骤包含:c 1. 判断输入符号是否是指令,如果是,则进入步骤c2,调用指令分析程序,接着进入步骤c 4;否则,进入步骤 c3;c 4. 调用语句块分析程序,产生编译后的机器代码;c3. 进行出错处理;c5. 判断源程序是否结束,如果是,则进入步骤c4,存储编译后的机器代码;否则,返回步骤c1。
所述步骤b还进一步包含:用2位七段数码管显示器显示修改与输入的内容。
所述功能键为第三键,所述第一键为上移键、第二键为下移键、第三键为加号键,第四键为减号键。
本发明所采用的技术方案的优点是:
(1)本发明不需要写入器和计算机,具有无仿真器用户程序输入与显示功能,增加了单片机编写调试的灵活性,现场修改调试的工作人员能够短时高效的完成工作;
(2)编译器具有自动存储功能,程序自动将输入的代码指令编译转换为可执行的机器指令,可以巡回执行预先设置的不同用户程序;
(3)界面简单,针对简易的单片机程序设计,提供了快捷、可扩充的编程方法;
下面结合附图对本发明的实施和优点作进一步解释。
附图说明
附图1是本发明的现场用户实现单片机仿真的装置的结构示意图。
附图2是本发明的现场用户实现单片机仿真的装置的另一结构示意图。
附图3是本发明编译器的结构示意图。
附图4是本发明的现场用户实现单片机仿真的方法的流程示意图。
附图5是编译器将输入的代码指令编译转换为可执行的机器指令的流程示意图。
附图6显示本发明进行程序修改的流程示意图。
附图7显示本发明进行程序编写的流程示意图。
附图8显示本发明系统中RAM与I/O地址空间分配。
具体实施方式
参考图1。依据本发明的一种现场用户实现单片机仿真的装置100,包含:键盘控制器30,与编译器10连接,用于输入用户程序;编译器10,与键盘控制器30连接,接收来自键盘控制器30的用户程序并将其编译生成机器指令;指令存储单元40,存储编译器10输出的机器指令;I/O接口电路50,将外接设备与编译器10连接;以及状态指令单元60,将编译器10的状态指令输入到外接设备。
继续参考图1。所述的现场用户实现单片机仿真的装置还包含用于显示输入的用户程序的显示器20。所述显示器20可以为LED显示器,具有4个7段数码管,系统中有4个7段数码管,可用来表示4位10进制或4位16进制数。每半个字节为1组,从16位数据线的高位到低位共分成4组,分别表示LED3、LED2、LED1和LED0。显示器中还可以进一步含有一个16位寄存器,保存显示到数码管上的数值。
参考图2。在一个较佳实施例中,为了减少连线个数,节省布线面积,系统采用了矩阵键盘形式。键盘控制器30为2×2矩阵键盘。键盘控制器30的功能为自动扫描2×2键盘,当有键按下时扫描键值,将键值记录到键值寄存器中。按键可以由“+”、“-”、“↑”、“↓”的2×2四个键组成。矩阵键盘中含有一个4位寄存器,用来保存当前键值。核心元件编译器10可以采用51系列单片机,例如型号为AT89C2051的51系列单片机,其由四节干电池串联或者7805稳压电路输出电压供电。。指令存储单元40可以为E2PROM存储器。应用这些装置可以制作一套单片机程序编译装置,输入用户程序,免除外接仿真与写入器。
参考图3。编译器10主要由以下几个部分组成,语法分析器、中间代码生成、寄存器分配单元、机器码生成单元。具体而言,编译器10包含:词法分析器101,与语法分析器102连接,从输入符号流中识别指令,为语法分析提供单词流;语法分析器102,与词法分析器101连接, 采用语法指导的方式进行中间代码的生成,该语法分析器102具有的符号表管理单元为语法分析过程提供查询的功能,为后续的代码生成,提供地址信息;中间代码生成单元105,也就是图中所示的指令符号表,完成子程序的翻译;寄存器分配单元106,也就是图中所示的变量名表,负责对翻译过程中产生的临时变量进行寄存器关联,为其分配内存空间;以及机器码生成单元103,将各个子程序进行总装,程序初始化代码,产生完整的汇编代码,完成编译工作。产生的机器代码最终进入CPU运行。机器码的生成伴随着词法分析和语法分析。如果前一个单词识别正确,则进行翻译。否则跳过不进行翻译。
参考图4,本发明另外提供一种现场用户实现单片机仿真的方法,该方方可以用图1至图3所示的装置实现。该方法包含:Sa. 判断功能键是否按下, 如果未按下, 则运行存储在指令存储单元中的程序, 否则, 进入步骤Sb; Sb. 同时按下第一键和第三键, 进入程序编写与修改状态, 用第一键和第二键修改地址,用第三键和第四键输入指令; Sc. 编译器将输入的代码指令编译转换为可执行的机器指令, 同时存入指令存储单元。
再次参考图4,所述步骤b还可以进一步包含:用2位七段数码管显示器显示修改与输入的内容。所述功能键为第三键,所述第一键为上移键、第二键为下移键、第三键为加号键,第四键为减号键,即可以分别为 “↑”、“↓”、“+”、“-”键。
参考图5。编译是翻译用户程序到机器指令的过程,它将高级语言编写的用户源程序翻译成单片机可识别运行的机器语言目标程序。就本申请而言,所述编译器将输入的代码指令编译转换为可执行的机器指令的步骤Sc可以进一步包含:Sc 1. 判断输入符号是否是指令,如果是,则进入步骤Sc2,调用指令分析程序,接着进入步骤Sc 4;否则,进入步骤 Sc3;Sc 4. 调用语句块分析程序,产生编译后的机器代码;Sc3. 进行出错处理;Sc5. 判断源程序是否结束,如果是,则进入步骤Sc4,存储编译后的机器代码;否则,返回步骤Sc1。
图6和图7分别进一步详细显示步骤sb中怎样进行程序修改与编写。这有赖于本发明的开机选择功能:开机后,立刻判别功能键,可以为“-”键,是否被按下。如果未按下,进入用户指令程序;如果已被按下,则进入设置用户指令程序。参考图6,进行程序修改的过程可以为:步骤sb11,判断功能键是否按下,进行指令修改;步骤sb12,调指令项;步骤sb13,判断是否第三键或第四键被按下,如果是,进入步骤S14,否则,进入步骤s15;步骤sb14,修改指令;步骤sb15,保存指令并返回步骤sb12;步骤sb16,返回主界面。参考图7,进行程序编写的过程可以为:步骤sb21,判断功能键是否按下,进行指令编写;步骤sb22,调地址项;步骤sb23,判断是否第一键或第二键被按下,如果是,进入步骤S24,否则,进入步骤s25;步骤sb24,修改指令;步骤sb25,保存指令并返回步骤sb22;步骤sb26,返回主界面。概括地说,编程时同时按下“+”和“↑”两个键,进入程序编写与修改状态,用“↑”、“↓”两键控制程序修改单元,可以进一步由2位七段数码管显示器,显示修改单元的内容。然后使用“+”、“-”两键输入指令,可以进一步由LED数码管第1,2位显示单元的地址值,第3,4位显示该单元的内容。 输入完成后,单片机编译程序自动将输入的代码指令编译转换为可执行的机器指令,同时存入E2PROM。当断电重新启动没有任何键按下时,系统自动将E2PROM中存储的用户程序重新调入AT89C2051指令存储单元,运行原先存入E2PROM的用户程序。
通过I/O接口电路的输出单元可以观察到程序运行的结果。
参考图8,在单片机系统中,外设不会直接挂在系统总线或CPU上,这是因为外设在信号种类、时序等方面往往会有差别,所以需要提供相应的接口电路实现系统总线之间的各种转换。系统中RAM与I/O地址空间分配如图8所示。根据原理图可以运用protel进一步画出其pcb线路制版图。
本发明应用时,可以归纳及分类一些基础编程中常用的单片机代码指令,以满足简单的单片机程序设计要求。将其通过编译转换成单片机可识别的目标代码,存入存储单元中。将通过键盘的输入用户代码指令、单片机内部的编译系统,一一编译成相对应的机器代码并将这些代码存入单片机指令存储单元,再次复位时作为用户指令程序运行,实现无仿真器情况下单片机用户程序的开发应用。51系列单片机指令系统有33种操作功能。指令助记符与寻址方式组合,得到111种指令,按照功能分类。方法是:在分类好的常用代码指令中,提取满足简单的单片机程序设计要求的指令,例如输入指令、输出指令、延时指令、判别和跳转指令等。分别对每一类的常用指令,赋一些不同的值,以满足在不同的编程中进行选择。编译好这些归纳出的指令,并建立一个编译指令对应列表。这样,本发明编译过程大致如下:(1)基于51系列单片机制作一套独立装置,具有专用的键盘和数码显示器,用于输入用户程序并显示运行结果;(2)归纳及分类一些简单编程中常用的代码指令,并将其通过编译转换成单片机可识别的目标代码,存入存储单元中。通过键盘的输入,调用其代码,实现编程以及仿真,从而达到在无仿真器情况下单片机系统的开发应用。(3)设计编译器的:通过定义简单指令代码,设计相应的文法,可对关系表达式进行分析,并得出结果。
本发明提供的单片机新型仿真结构与算法,为现场的单片机编程调试,提供了方便快捷的设计过程。该新型仿真结构与算法,针对简易的单片机程序设计,提供了简便的编程方法,还可以不断扩充、完善指令系统,增加了单片机编写调试的灵活性。本发明主要针对系统的指令输入、显示、存储等功能进行设计。适用于那些在一线工作的研发人员特别是没有充分实验设备但是又十分有需要单片机编程的人员编制程序,提供了方便快捷的设计过程。
当然,以上仅是本发明的具体应用范例,对本发明的保护范围不构成任何限制。除上述实施例外,本发明还可以有其它实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明所要求保护的范围之内。
Claims (9)
1.一种现场用户实现单片机仿真的装置,其特征在于,包含:
键盘控制器,与编译器连接,用于输入用户程序;
编译器,与键盘控制器连接,接收来自键盘控制器的用户程序并将其编译生成机器指令;
指令存储单元,存储编译器输出的机器指令;
I/O接口电路,将外接设备与编译器连接;以及
状态指令单元,将编译器的状态指令输入到外接设备。
2.根据权利要求1所述的现场用户实现单片机仿真的装置,其特征在于,还包含用于显示输入的用户程序的显示器。
3.根据权利要求2所述的现场用户实现单片机仿真的装置,其特征在于,所述显示器具有4个7段数码管,并且该显示器还包含一个16位寄存器。
4.根据权利要求3所述的现场用户实现单片机仿真的装置,其特征在于,所述键盘控制器为2×2矩阵键盘,该2×2矩阵键盘包含一个4位寄存器,用来保存当前键值。
5.根据权利要求1-4任一项所述的现场用户实现单片机仿真的装置,其特征在于,所述编译器包含:
词法分析器,与语法分析器连接,从输入符号流中识别指令,为语法分析提供单词流;
语法分析器,与词法分析器连接, 采用语法指导的方式进行中间代码的生成,该语法分析器具有的符号表管理单元为语法分析过程提供查询的功能,为后续的代码生成,提供地址信息;
中间代码生成单元,完成子程序的翻译;
寄存器分配单元,负责对翻译过程中产生的临时变量进行寄存器关联,为其分配内存空间;以及
机器码生成单元,将各个子程序进行总装,程序初始化代码,产生完整的汇编代码,完成编译工作。
6.一种现场用户实现单片机仿真的方法,其特征在于,包含:
a. 判断功能键是否按下, 如果未按下, 则运行存储在指令存储单元中的程序, 否则, 进入步骤b;
b. 同时按下第一键和第三键, 进入程序编写与修改状态, 用第一键和第二键修改地址,用第三键和第四键输入指令;
c. 编译器将输入的代码指令编译转换为可执行的机器指令, 同时存入指令存储单元。
7.根据权利要求1所述的现场用户实现单片机仿真的方法,其特征在于,所述编译器将输入的代码指令编译转换为可执行的机器指令的步骤包含:
c 1. 判断输入符号是否是指令,如果是,则进入步骤c2,调用指令分析程序,接着进入步骤c 4;否则,进入步骤 c3;
c 4. 调用语句块分析程序,产生编译后的机器代码;
c3. 进行出错处理;
c5. 判断源程序是否结束,如果是,则进入步骤c4,存储编译后的机器代码;否则,返回步骤c1。
8.根据权利要求1所述的现场用户实现单片机仿真的方法,其特征在于,所述步骤b还进一步包含:用2位七段数码管显示器显示修改与输入的内容。
9.根据权利要求6或7所述的现场用户实现单片机仿真的方法,其特征在于,所述功能键为第三键,所述第一键为上移键、第二键为下移键、第三键为加号键,第四键为减号键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010603160 CN102043715A (zh) | 2010-12-24 | 2010-12-24 | 一种现场用户实现单片机仿真的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010603160 CN102043715A (zh) | 2010-12-24 | 2010-12-24 | 一种现场用户实现单片机仿真的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102043715A true CN102043715A (zh) | 2011-05-04 |
Family
ID=43909866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010603160 Pending CN102043715A (zh) | 2010-12-24 | 2010-12-24 | 一种现场用户实现单片机仿真的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102043715A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204393A (zh) * | 2015-08-13 | 2015-12-30 | 彭增金 | 基于虚核单片机的单片机生产研发工具及其实现方法 |
CN107450893A (zh) * | 2016-05-30 | 2017-12-08 | 深圳市万千楼宇自控设备有限公司 | 一种跨平台数字控制器编程方法 |
CN114527712A (zh) * | 2021-11-22 | 2022-05-24 | 广东嘉腾机器人自动化有限公司 | Agv任务修改方法及修改系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1104780A (zh) * | 1993-12-30 | 1995-07-05 | 首钢总公司 | 智能操作盘 |
CN1127390A (zh) * | 1994-12-03 | 1996-07-24 | 刘若飞 | 便携式单cpu仿真器 |
KR20020043977A (ko) * | 2000-12-05 | 2002-06-12 | 양재신 | 수치제어상에서 plc 에디터 작성 및 표시방법 |
CN101436144A (zh) * | 2007-11-14 | 2009-05-20 | 黄伟 | 单片机程序编辑和仿真主机 |
-
2010
- 2010-12-24 CN CN 201010603160 patent/CN102043715A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1104780A (zh) * | 1993-12-30 | 1995-07-05 | 首钢总公司 | 智能操作盘 |
CN1127390A (zh) * | 1994-12-03 | 1996-07-24 | 刘若飞 | 便携式单cpu仿真器 |
KR20020043977A (ko) * | 2000-12-05 | 2002-06-12 | 양재신 | 수치제어상에서 plc 에디터 작성 및 표시방법 |
CN101436144A (zh) * | 2007-11-14 | 2009-05-20 | 黄伟 | 单片机程序编辑和仿真主机 |
Non-Patent Citations (1)
Title |
---|
《编译原理与技术》 20040930 冯雁 编译原理与技术 浙江大学出版社 第2-7页,图1-2 5 , * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204393A (zh) * | 2015-08-13 | 2015-12-30 | 彭增金 | 基于虚核单片机的单片机生产研发工具及其实现方法 |
CN105204393B (zh) * | 2015-08-13 | 2017-12-26 | 彭增金 | 基于虚核单片机的单片机生产研发工具及其实现方法 |
CN107450893A (zh) * | 2016-05-30 | 2017-12-08 | 深圳市万千楼宇自控设备有限公司 | 一种跨平台数字控制器编程方法 |
CN107450893B (zh) * | 2016-05-30 | 2021-07-13 | 深圳市万千楼宇自控设备有限公司 | 一种跨平台数字控制器编程方法 |
CN114527712A (zh) * | 2021-11-22 | 2022-05-24 | 广东嘉腾机器人自动化有限公司 | Agv任务修改方法及修改系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080320054A1 (en) | Database and Software Conversion System and Method | |
CN102193811B (zh) | 消除内存访问冲突的编译装置及其实现方法 | |
CN100428184C (zh) | 具有自驱动功能的指令仿真解析系统及其实现方法 | |
CN102087609A (zh) | 多处理器平台下的动态二进制翻译方法 | |
CN104778885A (zh) | 一种基于可编程逻辑器件的数字电路实验系统和方法 | |
CN102541611B (zh) | 指令翻译装置和方法、指令处理装置和处理器 | |
CN102043715A (zh) | 一种现场用户实现单片机仿真的方法及装置 | |
CN107291522A (zh) | 一种面向自定义规则文件的编译优化方法及系统 | |
CN100541433C (zh) | 基于用户描述的汇编器及其实现方法 | |
CN101000555B (zh) | 手持终端系统 | |
CN103218250B (zh) | 一种处理器模拟方法 | |
CN102566481A (zh) | 一种基于c语言的plc控制系统及其实现方法 | |
Wenzel et al. | Declarative programming for microcontrollers-Datalog on Arduino | |
CN101000557A (zh) | 虚拟机 | |
CN111897282B (zh) | 一种基于x86平台的软plc系统 | |
Donegan et al. | A code generator generator language | |
Ditzel | Reflections on the high-level language symbol computer system | |
CN112328214A (zh) | 一种vba软件编程框架系统、方法及电子设备 | |
CN103810013B (zh) | 基于拨码开关阵列的编程辅助处理装置及方法 | |
CN100498716C (zh) | 一种用于处理器仿真模型中的系统调用转换直通通道方法 | |
Akaike | A Programming Device for Newbie as a Daily Commodity | |
CN112558978B (zh) | 支撑异构众核全芯片视角的加速编程和编译方法 | |
CN202041807U (zh) | 一种单片机多路开发器 | |
CN104298503B (zh) | 一种基于平行控制的同一算法执行系统 | |
CN109710311A (zh) | 基于智能控制芯片的五段码程序语言 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110504 |