【VB开源代码栏目提醒】:网学会员VB开源代码为您提供基于消息的单片机编程方法 - 期刊论文参考,解决您在基于消息的单片机编程方法 - 期刊论文学习中工作中的难题,参考学习。
第15卷第l期 广西大学梧州分校学报 No.1 V01.15 2005年1月 JoURNAL 0F GUANGXI UNIvERSITY WUZH叫BRANCH Jan.2005 基于消息的单片机编程方法 贺海峰 (广西梧州三原高新科技有限公司,广西梧州 543002) 〔摘要〕在单片机Mcs一51的开发运用中,通常要使用各种中断。
如中断服务程序执行时间过长,当有另外的中断发生时,单片机就不能及时地进行处理,特别是对Mcs一51这样的只有两级中断优先级的单片机更是这样。
借鉴windows编程的原理,在单片机编程中引入消息的概念,将中断产生的标志作为消息,而数据处理则放在消息循环中进行,这样一方面减少了中断服务程序的长度,提高了响应中断的速度;另一方面又不影响数据的处理。
【关键词】汽车故障诊断仪;故障码;消息 〔中图分类号〕TP39 【文献标识码】A 【文章编号1l009.2633(2005)01.0083.02 Singlechip(MC S)Programming Method BaSed on MessageS HeHaifeng (Guangd Wlumou Sanyuan Hi-T∞h Co.LTD.,W皿h伽,543∞2,ChiIla) Abstract:111 me deveIopment and milization of singlechip(SCM)MCS一5 1 various intern印ts wm usually be used.1ftheexecution time of血emlpt service program is too long,也en when也ere is other intemlpt tal(ing place,SCM can not h蛆dleit timely,it is仃ue especially for MCS-5 1 that h觞only two levels of i11temlpt priori够.Refering to the principle of windowspro乒锄ming,We in们“ce the conc印t of message into SCM pro鄹砌【ming,and take the sign produced by intemlpt豁message,then data processing will be carried out within the message cycle.h this way,on one hand,the duntion of也eeXecution of砬errllpt service pm铲ames can be shonened,and the response speed of intemlpt is increased.0n the otherhand,the dataIr processing is not af王-ected. Key wordS:Computer Tool for Vehicle Trouble Diagnosis:Trouble Code:Message 在单片机开发运用中,通常要使用各种中断, 盾。
此外,本方法还有效地防止了
代码重入带来的问编制中断服务程序。
当中断要处理的东西很多时,就 题。
会导致中断服务程序执行时间过长。
这时如果有另外 一、基于消息的编程方法的中断发生,单片机就不能及时地进行处理,特别是 (一)消息驱动机制对McS.51这样的只有两级中断优先级的单片机,在 在面向对象编程方法中,消息是各个对象之间进行这种情况下可能导致不能及时响应一些实时性要求高 通讯的手段。
程序是通过消息来请求对象进行动作的,的中断。
对大多数要求实时性强的中断来说,最重要 对象间的联系或相互作用也是通过消息来完成的,消息的是能不能及时将中断时刻的数据采集到,而处理数 中包含了消息发送者的要求,消息接受者在收到消息据的时间一般情况下是比较宽裕的。
因此,采用只在 后,根据需要来处理消息。
对象发出消息后,进入消息中断服务程序中进行数据的采集和标志位的设置,而 队列(或不进入队列而直接发给消息处理对象),主程序将数据的处理放到中断之外,同时,借鉴windows编 负责组织消息队列,将消息发送给相应的消息处理对程的原理,在单片机编程中引入消息的概念,将中断 象,这个过程即称为消息循环。
产生的标志作为消息,而数据处理则放在消息循环中 (二)消息驱动程序设计进行,这样一方面减少了中断服务程序的长度,提高 当在程序中采取消息驱动的程序结构时,一般是在了响应中断的速度;另一方面又不影响数据的处理, 主控程序中只处理消息循环,判断并为消息处理对象发很好地解决了快速获取数据和数据处理耗时之间的矛 送所需处理的消息。
接受消息的对象则以消息响应函数 的方式出现,当接收到主程序发来的消息时,消息响应收稿日期:2004—1卜28 函数获得控制权,做完相应的处理后将控制权交还给主 83· 万 方数据 2005年第l期 广西大学梧州分校学报 第15卷程序继续消息循环的处理。
用户的输入及对象的请求 理的
工作全部放在中断服务程序中完成,而主控程序需仅是向消息队列中添加相应的消息。
采用消息驱动程 要做的只是初始化系统并等待中断。
以本设计的键盘中序设计,可使程序结构更加清晰,各功能模块界限分 断服务程序为例,不难发现这种设计存在几个弊端。
明,便于修改,扩充性好,对新的功能只要添加新的 1.键盘中断服务程序过长,在此期间CPU不会响消息和响应函数,这对于输入输出复杂的系统程序设 应别的同级中断。
人机交互性变差,甚至不能满足用户计来说,优点更加明显。
的一些特殊要求。
=、基于消息的单片机编程方法 2.采用这样的结构可能导致
代码的重入,增大堆栈 和windows多任务操作系统相比,单片机是一 的开销,造成难以预料的结果(某些C5l编译器不支持个单任务的系统,不能同时运行多个程序,资源也十 函数的重入)。
在本例中,如果在调用LcD子程序时有分有限。
因此,单片机系统不可能象windows那样建 外部脉冲中断产生,外部中断也会调用LCD子程序进行立庞大的消息循环机制,将消息分发给各个
程序并行 显示的刷新,这就导致了LcD子程序的重入。
因此,笔处理。
在基于消息的单片机编程中,消息可以这样来 者在系统软件设计中想到采用一种基于消息的编程方定义:当某个事件(例如中断)发生时,事件处理程 法,即通过在中断服务程序中,向主程序的消息队列添序(例如中断服务程序)设置相应的标志,不同的标 加相应的消息,来达到将中断服务程序中的数据处理部志即代表不同的消息。
主程序所进行的消息循环就是 分分离出来的目的。
中断服务程序返回主程序后,再根主程序不断的判断这些标志,以决定启动哪一个处理 据消息队列中的消息转向相应的消息处理函数。
这样,函数(即将消息发送给特定的消息处理函数)。
采用 中断服务程序只需添加消息,而由主控程序给各个消息这种结构,可以合理地利用有限的系统资源,将数据 处理函数分发消息。
由于消息处理函数不会相互调用,的实时采集和耗时的数据处理有机地结合起来:采用 所以不会产生
代码重入的现象。
这种结构,还可以实现对外部中断的分时复用。
以下仍以主控程序和键盘中断为例,说明基于消息 下面,以一个实际实现的简单汽车故障诊断仪 的软件设计思想。
为例,探讨一下基于消息的编程方法在单片机编程中 (四)基于消息的编程方法的具体运用。
在基于消息的软件设计中,主控程序不仅仅是等待 (一)测试仪的系统结构 中断,还需要
查询消息队列,并根据队列中的不同消 该测试仪由波形变换器,电平触发器,LcD显 息,调用相应的消息处理函数(在面向对象编程中,可示器,键盘及89C52构成。
该测试仪用于测试汽车的 理解为将消息分发给各个消息对象),在本系统中,产生闪烁故障码。
当在菜单中选取“测试”时,89c52先 消息的是各个中断,数量不多,因此在系统设计中,消控制电平触发器为低,延时1秒后关闭触发器,启动 息队
列表现为一个字节的变量,通过置位该字节的不同波形变换器读取故障码。
整个过程中,每0.5秒实时 位来反映不同中断的消息,由于消息处理函数已经脱离采集一次波形并在LcD上显示,同时每秒对时钟显 了中断处理过程,所以系统对消息处理不再像中断服务示进行一次刷新。
开始测试前,还可通过键盘对系统 程序那样,在时间上有十分苛刻的要求。
同时,在消息进行设置和自检。
T0工作在方式3,T1定时器用做波 处理过程中,用户仍可通过键盘中断来与系统进行交特率发生器。
T0的两个定时器都设置为记到一个外 互。
部脉冲就溢出的状态,扩展的键盘占用T0中断,T1 参考文献:中断作为外部实时时钟的刷新中断请求信号输入端。
〔1〕徐爱钧,彭秀华.单片机高级语言C51应用程序设计T2设置成自动重装载方式,每0.5秒刷新一次故障码 〔M】.北京:电子工业出版社,1998.值。
〔2】廖湖声.面向对象的windows程序
设计基础〔M】.北京: (二)软件需求分析 人民邮电出版社,1996. 根据测试仪的系统结构,可以看出对该单片机 〔3】马共立.MCS.5l单片机实用子程序库【M】.哈尔滨:哈的软件设计来说,最重要的是协调好各个中断的处 尔滨工业大学出版社,1989.理。
在本
系统中共有3个中断,分别为: 〔4】曹汉房.脉冲与数字电路〔M】.武汉:华中理工大学出版 a.键盘中断 社,1988。
b.定时采集故障码的中断 〔作者简介】贺海峰(1973一)。
男,山西营阳人,主要 c.时钟更新中断 从事汽车电控系统诊断检测仪器高新技术产品的开发工 因为系统最终所测试的数据是外部脉冲中断请 作。
求时的故障码波形,所以将该中断置为高优先级,而 (责任编辑:苏运霖)其余中断都设置为低优先级。
(三)传统的编程方法 在通常情况下,我们将中断发生后所需进行处 ·84· 万 方数据基于消息的单片机编程方法作者: 贺海峰, He Haifeng作者单位: 广西梧州三原高新科技有限公司广西梧州543002刊名: 广西大学梧州分校学报英文刊名: JOURNAL OF GUANGXI UNIVERSITY WUZHOU BRANCH年,卷期: 2005,151引用次数: 0次参考文献4条1.徐爱钧.彭秀华 单片机高级语言C51应用程序设计 19982.廖湖声 面向对象的Windows程序设计基础 19963.马共立 MCS-51单片机实用子程序库 19894.曹汉房 脉冲与数字电路 1988相似文献7条1.期刊
论文 胡挺.张士军.Hu Ting.Zhang Shijun 汽车故障诊断仪设计与实现 -计算机与数字工程2007358 汽车故障诊断仪是一种能够自动诊断、显示汽车故障的仪器主要用于电喷汽车发动机的维修.阐述基于以PIC18F452单片机为核心的嵌入式系统的汽车故障诊断仪及其软硬件的实现并详细介绍该仪器的诊断原理、诊断协议和诊断方法然后给出系统流程图最后进行总结和展望.2.期刊
论文 王征.WANG Zheng 汽车电气故障诊断的流程与分析方法Ⅰ -汽车电器20081 对汽车故障、汽车故障诊断和汽车故障诊断标准进行了重新定义详细介绍汽车电气故障诊断的一般流程与分析方法结合汽车故障诊断仪、汽车示波器、汽车万用表等仪器设备的使用操作、测试数据分析与电路分析一一举例加以说明.3.会议
论文 黄森仁.龚进峰.汪葵.宋建峰 汽车通用OBD故障扫描仪 2008 本文描述了汽车通用故障诊断仪的基本要求兼容的通信协议和诊断的主要内容详细介绍了基于RSF21237JPF的汽车通用故障诊断仪相关硬件和软件的设计及实现的方法.4.期刊
论文 王冬良.WANG Dong-liang 数据流分析在电控发动机故障诊断中的应用 -农业装备与车辆工程20099 汽车故障诊断仪除了具有对汽车电子控制系统自诊断系统进行读取故障码和清除故障码的功能外还具有对电子控制系统各种传感器和执行器的动态数据测试功能数据流分析.数据流分析在诊断电控系统的软故障方面具有独特的优势.结合实例阐述了数据流分析在电控汽车故障诊断中的应用.5.期刊
论文 郭秀荣.陆怀民.窦美霞.杜丹丰.张立富.GUO Xiu-rong.LU Huai-min.DOU Mei-xia.DU Dan-feng.ZHANG Li-fu 基于MATLAB
软件包程序的电喷发动机故障诊断 -中国工程机械学报200751 目前国内外
常用的汽车故障诊断仪解码仪功能并不全面不能诊断不出现故障码的机械类故障.为了解决这个问题提出了一种利用径向基函数神经网络进行电喷发动机故障诊断的方法.该方法通过MATLAB软件包与ACCESS数据库相结合编制故障诊断程序从而实现了无故障码的故障诊断.同时还将径向基函数网络与BP
网络进行了比较.实验表明径向基函数网络更适用于故障诊断.6.期刊
论文 刘成 通用公司Tech 2 故障诊断仪的使用操作 -汽车维修20087 Tech 2是通用公司专用手持式汽车故障诊断仪它除了具有读取车辆故障码测量动态数据流控制执行元件动作等普通诊断仪共有的功能外还具有显示传感器波形捕捉并存储车辆运行时的有关数据通过RS232通信端口连接网络下载通用公司最新软件通过VCI接口为车辆更新控制软件等功能.7.学位
论文 丁志华 燃料电池汽车故障诊断仪及故障诊断技术研究 2007 汽车故障诊断技术经过几十年的发展达到了较高的水平,现代数学、信息科学强大的渗透力,
计算机技术、电子技术、人工智能技术更广泛、更深入的应用,推动故障诊断技术向前发展。
汽车故障诊断技术可以提高维修效率、监督维修质量、保证行车安全。
本文介绍了汽车内部ECU自诊断系统,和在自诊断系统基础上形成的OBD-II标准,对三种故障诊断协议标准ISO9141、ISO14230和ISO15765进行分析比较,并使用两种方法对汽车进行故障诊断。
燃料电池轿车以其节能、清洁的优点代表了新一代汽车的发展方向,它对故障诊断技术提出新的要求。
以罗孚燃料电池轿车为背景,第一种方法利用CAN总线开发工具CANoe,开发汽车故障诊断系统,用于汽车故障的离线和在线诊断。
通过建立CANoe和Access软件的
通信接口,实现对汽车CAN总线上传故障码的采集,并对故障码进行数据库管理。
由于燃料电池轿车在动力系统、传动系统和底盘与传统汽车有较大的差别,现有的故障诊断设备不能满足燃料电池轿车的诊断要求。
本文设计开发一个针对燃料电池轿车、低成本、操作简便直观而且功能齐全的手持式的故障诊断仪是解决这个
问题的另一个办法。
诊断仪采用MC68HC908G260作为其微处理器,通过CAN总线和车内ECU进行数据交换。
利用
VB开发诊断机上位机软件,通过PC串口和诊断仪通信,读取保存在诊断仪中的历史故障信息,借由PC机强大功能,对历史故障信心进行分析处理。
本文中所使用的两种汽车故障诊断方法,在燃料电池汽车上实用表明,可以满足诊断的基本要求,达到了设计的目的。
本文链接:http://d.g.wanfangdata.com.cn/Periodical_gxdxwzfxxb200501026.aspx 下载时间:2010年6月10日