CN109976214A - 一种单片机程序设计辅助方法 - Google Patents
一种单片机程序设计辅助方法 Download PDFInfo
- Publication number
- CN109976214A CN109976214A CN201910203664.0A CN201910203664A CN109976214A CN 109976214 A CN109976214 A CN 109976214A CN 201910203664 A CN201910203664 A CN 201910203664A CN 109976214 A CN109976214 A CN 109976214A
- Authority
- CN
- China
- Prior art keywords
- dictionary
- program
- register
- mcu programming
- programming
- 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
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0426—Programming the control sequence
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B19/00—Teaching not covered by other main groups of this subclass
- G09B19/0053—Computers, e.g. programming
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23146—Programmable, reconfigurable via microprocessor or coding switches
Abstract
本发明公开了一种单片机编程辅助方法,用于建立单片机编程字典,所述单片机编程字典将头文件根据对应单片机的型号进行扩展,增加不可位寻址寄存器中对应控制位的符号常量定义、通用位的符号常量定义和有关操作函数的原型声明,并根据单片机的功能模块构成,建立对应的源程序文件结构,在源程序文件中对各个寄存器的功能进行描述,给出对寄存器进行各种操作的指令语句以及常用功能的完整程序代码,该单片机编程字典的内容可方便地复制和粘贴,从而实现了单片机原理基础内容的描述和单片机程序设计的统一,直观方便,从而使单片机初学者能够快速学习和掌握单片机应用编程。
Description
技术领域
本发明涉及单片机程序设计领域,尤其涉及一种单片机程序设计辅助方法。
背景技术
单片机原理及应用在高等院校电子信息专业的理论和实践课程学习中都具有非常基础但同时又非常重要的地位。通过该课程的学习,可以初步培养学生应用系统的设计能力并逐步建立应用系统的编程思想和方法,为学生进一步学习和掌握后续相关课程奠定了坚实的基础。然而,绝大多数的初学者缺乏一种与硬件系统相结合的软件编程思想和方法,无法掌握甚至对单片机应用系统的程序设计无从入手,因此在单片机学习和应用上很难达到理想的效果。
经过几十年的发展,单片机技术应用已经非常普及,有关单片机原理及应用方面的书籍也是随处可见。在国内某知名网络图书商城输入关键词“单片机”可以得到超过1万个结果,在高等学校教材市场上同样是数目繁多。以国内某著名出版社2019年春季的高等教育教材目录为例,单片机类教材共计65册。笔者对这些教材进行了仔细地对比和分析发现,以MCS-51单片机为代表的有61册,占比约94%,其中包含4册以STC15系列为代表的增强型51单片机教材且出版时间相对较晚。这说明国内高等院校在单片机课程教学上主要以基本型MCS-51单片机为授课内容但存在向增强型MCS-51单片机发展的趋势。从教材目录中可以发现,除少数教材引入仿真软件Proteus外,其余绝大多数教材都遵循“绪论—硬件结构和原理—编程语言—功能模块—实例分析”的框架体系进行撰写。纵观非教科书类的单片机书籍,我们可以发现它们更多的是按照诸如“手把手”和“项目实战”的方式进行内容组织。教科书式的书籍有助于学习者夯实理论基础,“手把手”和“项目实战”式书籍有利用于促进学习者的实际应用能力。从课程的学习目的上来看,两者刚好形成互补。但是,独立的某种方式都不利于初学者快速而且扎实地掌握单片机理论和应用能力。
对初学者而言,当单片机硬件系统完成后,如何编程实现应用系统的各种控制功能是一个很大的难题。教科书中离散的寄存器描述和操作难以构成一个整体的软件系统,非教科书中完备的程序代码也未必能一成不变地迁移到初学者设计的单片机系统中。Flowcode软件平台采用流程图式的编程方法大大简化了编程问题。然而,与编写指令代码相比,准确、完备的流程图设计对初学者而言显得更为缺乏。利用有限状态机进行建模形成的单片机编程方法的出发点在于构建一个整体的软件系统框架,对还没有牢固掌握基本编程的单片机初学者而言要求过于苛刻。至于采用面向对象技术、基于消息机制和多线程思想的单片机编程思想和方法更不应该是针对初学者提出的要求。
发明内容
为了解决上述问题,本发明的目的在于提供一种单片机程序设计辅助方法,用于建立单片机编程字典,并将其应用在单片机初学者的程序设计中,从而使单片机初学者能够通过对单片机编程字典内容的复制和粘贴的方式实现单片机的快速入门和编程。
为实现上述目的,本发明提供了一种单片机程序设计辅助方法,建立单片机编程字典,所述单片机编程字典的内容能够被复制、粘贴并应用于单片机程序设计;
所述单片机编程字典包括头文件和功能模块源程序,所述头文件中包括对需要进行位操作但不可位寻址的寄存器的控制位的符号常量定义;所述功能模块源程序中包括对所述控制位的清0和置1操作的指令代码,同时描述所述控制位被清0和置1时的对应功能。
进一步的,所述单片机编程字典的建立过程包括:
头文件的补充:在官方提供的头文件的基础上根据数据手册中对寄存器的说明,对所述控制位进行符号常量定义;
功能模块源程序文件的编写:参照数据手册将功能模块对应的寄存器符号、寄存器名称、寄存器结构和对应的位名称以及操作注意事项进行描述;结合头文件的定义给出所述控制位进行清0和置1操作的指令代码,并同时用注释的方法描述当位被清0和置1时的对应功能。
进一步的,所述符号常量定义包括参数:位名称和常量值,所述位名称保持与寄存器的位定义相同或采用BIT7~BIT0表示没有位定义的相应位,所述常量值为0x80,0x40,0x20,0x10,0x08,0x04,0x02和0x01中的一个。
进一步的,所述功能模块源程序文件的编写还包括:
从模块在系统中的功能应用出发,对模块中所有相关的寄存器的语句指令进行重新整合和扩展,对需要涉及不同模块寄存器设置的交叉引用进行说明。
进一步的,所述功能模块源程序文件的编写还包括:
除了提供中断系统相关的寄存器的操作指令之外,同时提供所有中断源的中断服务子程序框架。
进一步的,所述单片机编程字典的建立还包括校验过程:
软件仿真,借助开发集成环境的调试功能对模块文件中的代码进行调试和修改;
硬件验证,结合硬件电路和实验仪器进行测试验证;
软件仿真和硬件验证结果比对评估,确认结果符合预期目标。
进一步的,所述软件仿真所采用的开发集成环境为KeilμVision。
进一步的,所述单片机编程字典的建立还包括测试过程:
设定所述单片机编程字典的测试目标;
调用所述单片机编程字典,对所述单片机编程字典的测试目标进行测试编程和软件仿真;
运行参数评估。
进一步的,所述运行参数包括指令代码长度、内部RAM资源使用和程序运行时间,所述运行参数评估的对比对象包括:常数赋值编程方法及基于单片机库函数的编程方法。
本发明采用如上技术方案,建立单片机编程字典,该单片机编程字典既充分描述了教材和非教材类书籍对单片机原理基本内容的描述,又将单片机的编程指令语句与单片机原理描述紧密结合,该单片机编程字典的内容可方便地复制和粘贴,从而实现了单片机原理基础内容的描述和单片机程序设计的统一,直观方便,从而使单片机初学者能够快速学习和掌握单片机应用编程。
附图说明
图1所示为本发明实施例一的单片机编程字典的构建流程示意图;
图2所示为本发明实施例一中的工程文件结构示意图;
图3所示为本发明实施例一中的头文件补充示意图;
图4所示为本发明实施例一中的功能模块源程序文件示意图;
图5所示为本发明实施例一中的功能模块源程序文件代码扩展示意图;
图6所示为本发明实施例一中的字典性能参数测试对比示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
本发明实施例一公开了一种单片机程序设计辅助方法,涉及单片机编程字典,如图1所示,其为本发明实施例一所述的单片机编程字典的构建示意图,包括以下步骤:
步骤S1:建立单片机编程字典;
步骤S2:验证单片机编程字典;
步骤S3:测试单片机编程字典。
如图2~5所示,图2为编程字典的工程文件结构,图3为工程文件结构中头文件补充的局部内容,图4为工程文件结构中某个功能模块源程序文件局部内容,图5所示为某个功能模块源程序文件代码扩展,通过头文件的补充和各个功能模块源程序文件的编辑,构成单片机完整的工程文件,形成单片机的编程字典。
具体的,步骤S1中建立单片机编程字典的步骤包括:
步骤S11:头文件的补充:在官方提供的头文件的基础上根据数据手册中对寄存器的说明,对所有需要进行位操作但不可位寻址的寄存器采用“#define位名称常量值”语句进行补充。语句中的“位名称”保持与寄存器的位定义相同或采用BIT7~BIT0表示没有位定义的相应位,“常量值”分别为0x80,0x40,0x20,0x10,0x08,0x04,0x02和0x01。但当单片机的不同寄存器中存在相同的位名称的时候,需要另外区分对待。同时在头文件中添加所有自编函数的函数声明语句,当需要使用时通过删除注释符号即可实现。
步骤S12:功能模块源程序文件的编写:首先参照数据手册将功能模块对应的寄存器符号、寄存器名称、寄存器结构和对应的位名称以及操作注意事项等信息进行描述,然后结合头文件的定义给出对寄存器指定位进行清0和置1操作的指令代码,并同时用注释的方法描述当位被清0和置1时的对应功能。
进一步的,步骤S12中功能模块源程序文件的编写还包括:
步骤S121:从功能模块在系统中的功能应用出发,对功能模块中所有相关的寄存器的语句指令进行重新整合和扩展,对需要涉及不同模块寄存器设置的交叉引用进行说明。
步骤S122:除了提供中断系统相关的寄存器的操作指令之外,同时提供所有中断源的中断服务子程序框架。
具体的,步骤S2中校验单片机编程字典的步骤包括:
步骤S21:借助KeilμVision开发集成环境的调试功能对每个功能模块文件中的代码进行调试和修改。
步骤S22:同时也结合了单片机公司官方配套的实验箱和示波器等实验仪器设备进行验证。
步骤S23:确保所有代码在KeilμVision中的软件仿真和单片机实验箱上的硬件测试均符合预期目标。
具体的,步骤S3中测试单片机编程字典的步骤包括:
步骤S31:建立字典测试目标:利用单片机实验箱的硬件资源,如示例性的采用以被大多数书籍作为引导单片机初学者入门的实验“点亮一盏LED灯”为字典测试目标。
S32:利用KeilμVision开发集成环境和编程字典中的文件和指令语句进行编程。
S33:在指令代码长度、内部RAM资源使用和程序运行时间等参数上与传统的常数赋值编程方法及基于单片机库函数的编程方法进行测试对比。
以STC单片机为例,利用STC实验箱的硬件资源,以被大多数书籍作为引导单片机初学者入门的实验“点亮一盏LED灯”为目标,利用KeilμVision开发集成环境和编程字典中的文件和指令语句进行编程,并在指令代码长度、内部RAM资源使用和程序运行时间等参数上与传统的常数赋值编程方法及基于STC库函数的编程方法进行测试对比,单片机的时钟频率为12MHz,结果如图6所示。
由图6可知,基于本单片机程序设计辅助方法所建立的单片机编程字典的编程方法进行编程在各方面性能与传统的常数赋值的编程方法完全一样,且远比基于STC库函数的编程方法优越。因此,基于编程字典的编程方法不但具有传统的常数赋值的编程方法的优势,同时由于在编程中各种符号常量的引入以及笔者预描述的编程指令的使用,使其不仅具有基于STC库函数的编程方法的直观性和快速性,而且更有利于初学者掌握单片机底层的编程方法,是初学者最佳的编程方法。
在本实施例中,示例性的采用KeilμVision开发集成环境进行说明,也可以选择其它适用于单片机的开发集成环境,并应用其软件仿真和调试功能。
本发明实施例一提出一种单片机程序设计辅助方法,用于建立单片机编程字典。通过本发明所建立的单片机编程字典既充分描述了教材和非教材类书籍对单片机原理基本内容的描述,又将单片机的编程指令语句与单片机原理描述紧密结合,该单片机编程字典的内容可方便地复制、粘贴,从而实现了单片机原理基础内容的描述和单片机程序设计的统一。此外,为了提高单片机初学者能更快地掌握和应用单片机,单片机编程字典对单片机功能模块根据具体应用进行扩展编程,从而提供更全面的功能模块源程序及程序框架,有利于单片机初学者快速学习、掌握单片机编程。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (9)
1.一种单片机程序设计辅助方法,其特征在于:建立单片机编程字典,所述单片机编程字典的内容能够被复制、粘贴并应用于单片机程序设计;
所述单片机编程字典包括头文件和功能模块源程序,所述头文件中包括对需要位操作但不可位寻址的寄存器的控制位的符号常量定义;所述功能模块源程序中包括对所述控制位的清0和置1操作的指令代码,同时描述所述控制位被清0和置1时的对应功能。
2.如权利要求1所述的单片机程序设计辅助方法,其特征在于:所述单片机编程字典的建立过程包括:
头文件的补充:在官方提供的头文件的基础上根据数据手册中对寄存器的说明,对所述控制位进行符号常量定义;
功能模块源程序文件的编写:参照数据手册将功能模块对应的寄存器符号、寄存器名称、寄存器结构和对应的位名称以及操作注意事项进行描述;结合头文件的定义给出对所述控制位进行清0和置1操作的指令代码,并同时用注释的方法描述当位被清0和置1时的对应功能。
3.如权利要求2所述的单片机程序设计辅助方法,其特征在于:所述符号常量定义包括参数:位名称和常量值,所述位名称保持与寄存器的位定义相同或采用BIT7~BIT0表示没有位定义的相应位;
所述常量值为0x80,0x40,0x20,0x10,0x08,0x04,0x02和0x01中的一个。
4.根据权利要求2所述的单片机程序设计辅助方法,其特征在于:所述功能模块源程序文件的编写还包括:
从模块在系统中的功能应用出发,对模块中所有相关的寄存器的语句指令进行重新整合和扩展,对需要涉及不同模块寄存器设置的交叉引用进行说明。
5.如权利要求2所述的单片机程序设计辅助方法,其特征在于:功能模块源程序文件的编写还包括:
除了提供中断系统相关的寄存器的操作指令之外,同时提供所有中断源的中断服务子程序框架。
6.如权利要求1所述的单片机程序设计辅助方法,其特征在于:所述单片机编程字典的建立还包括校验过程:
软件仿真,借助开发集成环境的调试功能对模块文件中的代码进行调试和修改;
硬件验证,结合硬件电路和实验仪器进行测试验证;
软件仿真和硬件验证结果比对评估,确认结果符合预期目标。
7.如权利要求6所述的单片机程序设计辅助方法,其特征在于:所述软件仿真所采用的开发集成环境为Keil μVision。
8.如权利要求1所述的单片机程序设计辅助方法,其特征在于:所述单片机编程字典的建立还包括测试过程:
设定所述单片机编程字典的测试目标;
调用所述单片机编程字典,对所述单片机编程字典的测试目标进行测试编程和软件仿真;
运行参数评估。
9.如权利要求8所述的单片机程序设计辅助方法,其特征在于:所述运行参数包括指令代码长度、内部RAM资源使用和程序运行时间,所述运行参数评估的对比对象包括:常数赋值编程方法及基于单片机库函数的编程方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910203664.0A CN109976214A (zh) | 2019-03-18 | 2019-03-18 | 一种单片机程序设计辅助方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910203664.0A CN109976214A (zh) | 2019-03-18 | 2019-03-18 | 一种单片机程序设计辅助方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109976214A true CN109976214A (zh) | 2019-07-05 |
Family
ID=67079317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910203664.0A Pending CN109976214A (zh) | 2019-03-18 | 2019-03-18 | 一种单片机程序设计辅助方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976214A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609583B (zh) * | 2012-02-08 | 2013-09-18 | 福州瑞芯微电子有限公司 | 芯片寄存器信息管理方法 |
CN107506228A (zh) * | 2017-09-11 | 2017-12-22 | 珠海亿智电子科技有限公司 | 一种根据芯片手册自动生成驱动代码的方法 |
-
2019
- 2019-03-18 CN CN201910203664.0A patent/CN109976214A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609583B (zh) * | 2012-02-08 | 2013-09-18 | 福州瑞芯微电子有限公司 | 芯片寄存器信息管理方法 |
CN107506228A (zh) * | 2017-09-11 | 2017-12-22 | 珠海亿智电子科技有限公司 | 一种根据芯片手册自动生成驱动代码的方法 |
Non-Patent Citations (1)
Title |
---|
共同成长888: "单片机宝典从硬件到软件 chm", 《360DOC个人图书馆》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN201421670Y (zh) | 一种软可编程序控制器 | |
CN106128178A (zh) | 基于虚拟仪器的实验系统 | |
CN105844974A (zh) | 一种云端物理实验室学习平台 | |
Fan et al. | Application of proteus in experimental teaching and research of medical electronic circuit | |
CN109976214A (zh) | 一种单片机程序设计辅助方法 | |
Fan et al. | Innovations of microcontroller unit based on experiment | |
Gomes et al. | Remote laboratory support for an introductory microprocessor course | |
Ping | Research on the embedded system teaching | |
Li et al. | Virtual laboratory platform for computer science curricula | |
Gao et al. | An analogous teaching method for computer organization course design | |
Lo et al. | The use of low cost portable microcontrollers in teaching undergraduate Computer Architecture and Organization | |
Galwas et al. | Virtual laboratory-A future part of the new web-based model of undergraduate engineering studies developed by Warsaw University of Technology | |
Si et al. | Exploration and Practice of Single Chip Microcomputer Curriculum Reform Based on Project-based Teaching | |
Donzellini et al. | Introducing field programmable gate arrays with deeds projects | |
Distler | In-circuit emulators in the microprocessor laboratory | |
Da | Computer hardware curriculums, curriculum contents and teaching methods | |
Shi et al. | Digital circuit experiment system based on FPGA | |
Nogueiras et al. | Power electronics education: lectures, simulation and laboratory sinergetic approach | |
Martinez et al. | Curriculum Development of Hardware Interfacing System for Visual C++ in Computer Engineering Course | |
Stirewalt | Teaching software engineering bottom up | |
Blauch et al. | A practical application digital systems course for all engineering majors | |
Yu | Construction of Assembly Language Three-tier Experimental System Based on EMU8086 | |
Yuan | Teaching reform of a single-chip microcomputer course based on a portable experimental device | |
Li et al. | Design of Experimental Simulation of Computer Science and Technology Specialty Under Background of “Emerging Engineering Education” | |
Kastelan et al. | Lessons learned and post-project activities with embedded engineering learning platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190705 |