0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机的程序编写

WSTm_UCAS2004 来源:YXQ 2019-08-12 09:57 次阅读

MCU的程序的编写与PC下的程序的编写存在很大的区别,虽然现在基于C的MCU开发工具越来越流行,但对于一个高效的程序代码和喜欢使用汇编的设计者来讲,汇编语言仍然是最简洁、最有效的编程语言。

对于MCU的程序编写,其基本的框架可以说是大体一致的,一般分为初始化部分(这是MCU程序设计与PC最大的不同),主程序循环体和中断处理程序三大部分,其分别说明如下:

初始化:对于所有的MCU程序的设计来讲,出世化是最基本也是最重要的一步,一般包括如下内容:

屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望有任何中断发生。

清除系统的RAM区域和显示Memory:虽然有时可能没有完全的必要,但从可靠性及一致性的角度出发,特别是对于防止意外的错误,还是建议养成良好的编程习惯。

IO口的初始化:根据项目的应用的要求,设定相关IO口的输入输出方式,对与输入口,需要设定其上拉或下拉电阻;对于输出口,则必须设定其出世的电平输出,以防出现不必要的错误。

中断的设置:对于所有项目需要用到的中断源,应该给予开启并设定中断的触发条件,而对于不使用的多余的中断,则必须给予关闭。

其他功能模块的初始化:对于所有需要用到的MCU的外围功能模块,必须按项目的应用的要求进行相应的设置,如UART的通讯,需要设定Baud Rate,数据长度,校验方式和Stop Bit的长度等,而对于Programmer Timer,则必须设置其时钟源,分频数及Reload Data等。

参数的出世化:完成了MCU的硬件和资源的出世化后,接下来就是对程序中使用到的一些变量和数据的初始化设置,这一部分的初始化需要根据具体的项目及程序的总体安排来设计。对于一些用EEPROM来保存项目预制数的应用来讲,建议在初始化时将相关的数据拷贝到MCU的RAM,以提高程序对数据的访问速度,同时降低系统的功耗(原则上,访问外部EEPROM都会增加电源的功耗)。

主程序循环体:大多数MCU是属于长时间不间断运行的,因此其主程序体基本上都是以循环的方式来设计,对于存在多种工作模式的应用来讲,则可能存在多个循环体,相互之间通过状态标志来进行转换。对于主程序体,一般情况下主要安排如下的模块:

计算程序:计算程序一般比较耗时,因此坚决反对放在任何中断中处理,特别是乘除法运算。

显示传输程序:主要针对存在外部LED、LCD Driver的应用。

中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如,外部突发性信号检测,按键的检测和处理,定时计数,LED显示扫描等。

一般情况下,中断程序应尽可能保证代码的简洁和短小,对于不需要实时去处理的功能,可以在中断中设置触发的标志,然后由主程序来执行具体的事务――这一点非常重要,特别是对于低功耗、低速的MCU来讲,必须保证所有中断的及时响应。

对于不同任务体的安排,不同的MCU其处理的方法也有所不同。

例如,对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目均为手持式设备和采用普通的LCD显示,对按键的反应和显示的反应要求实时性较高,应此一般采用定时中断的方式来处理按键的动作和数据的显示;而对于高速的MCU,如Fosc》1MHz的应用,由于此时MCU有足够的时间来执行主程序循环体,因此可以只在相应的中断中设置各种触发标志,并将所有的任务放在主程序体中来执行。

在MCU的程序设计中,还需要特别注意的一点就是:要防止在中断和主程序体中同时访问或设置同一个变量或数据的情况。有效的预防方法是,将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作;而在其他的程序体中(主要是中断),对需要进行该数据的处理的地方只设置触发的标志。――这可以保证数据的执行是可预知和唯一的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43948

    浏览量

    620546
  • 编程
    +关注

    关注

    88

    文章

    3438

    浏览量

    92321
  • 汇编语言
    +关注

    关注

    14

    文章

    404

    浏览量

    35187

原文标题:美国为什么围堵不了中国?66年前,毛主席一句话点出了原因!

文章出处:【微信号:UCAS2004,微信公众号:国科环宇】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机原理与应用:Proteus环境下单片机程序编写及仿真#单片机

    单片机PROTPro仿真技术单片机原理
    学习硬声知识
    发布于 :2022年11月09日 14:31:20

    单片机程序编写优化

    (3,2) 可以改为N=3*3说明:在有内置硬件乘法器的单片机中(如51 系列),乘法运算比求平方运算快得多, 因为浮点数的求平方是通过调用子程序来实现的,乘法运算的子程序比平方运算的子程序
    发表于 12-05 13:53

    求大神!!急求激光测距原理的相关单片机程序编写!!...

    用激光打在玻璃上2个不同的位置,接收反射回来的光,当扬声器工作时,声波引起玻璃震动,光斑震动。当第一个光斑震动引起的电流变化时,单片机开始计时,当第二个光斑震动时单片机停止计时,得出这段时间差T。最后在数码管上显示出来。急求帮忙编写
    发表于 07-02 14:29

    单片机入门:单片机程序编写、仿真、调试常用的软件有...

    不同的型号的单片机需要不同的开发软件。我们以80C51系列、PIC系列和AVR系列为例分别说明。单片机程序编写不需要任何特殊的软件,只要是文本编缉软件就可以了,如WINDOWS自带的
    发表于 11-05 00:44

    AT24C02 51单片机使用

    AT24C02 51单片机程序编写
    发表于 03-07 16:02

    单片机程序编写有点小问题 还望各位大神出手相助!

    单片机程序编写有点小问题还望各位大神出手相助谢谢
    发表于 10-28 01:29

    单片机的知识点汇总

      单片机发展简史  单片机的分类及应用  单片机的基本功能  单片机的学习窍门  单片机程序
    发表于 12-29 07:08

    怎样在阿里云物联网平台上进行单片机程序编写

    阿里云物联网平台是怎样设置的?怎样在阿里云物联网平台上进行单片机程序编写呢?
    发表于 02-22 06:04

    C51单片机程序编写注意事项

    C51单片机头文件的详细介绍,是初学者必须了解的知识。
    发表于 03-17 08:00 8次下载

    单片机程序编写步骤

    单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学
    发表于 11-14 14:29 1.9w次阅读

    PIC单片机程序编写和空间分配时应注意哪些问题

    控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。
    发表于 11-20 15:10 1003次阅读

    PIC单片机程序编写和动作标志位的使用方法解析

    在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。
    发表于 01-25 17:04 2627次阅读
    PIC<b class='flag-5'>单片机</b><b class='flag-5'>程序</b><b class='flag-5'>编写</b>和动作标志位的使用方法解析

    单片机程序如何编写

    设计编写单片机程序是一个渐进的过程不可一蹴而就,毕竟单片机程序是与硬件有密切关系的,我们一般称为单片机
    的头像 发表于 02-12 14:38 3.7w次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>程序</b>如何<b class='flag-5'>编写</b>

    单片机程序编写方法

    学习单片机最主要的是学习写程序的方法,程序的功能千变万化,是学不完的,只有掌握了一定方法,才能用这种方法去写新的程序
    发表于 09-22 17:17 3844次阅读

    单片机程序编写以及单片机的开发技巧

    单片机的学习窍门 任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。 对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义
    发表于 10-30 15:02 2397次阅读