智能电磁流量计中断服务程序智能电磁流量计中断服务程序
在主程序中,主要进行各种初始化设置和操作,所有功能的实现都是以中断形式唤醒单片机执行,而单片机大部分时间处于休眠状态。中断是msp430单片机的一大特色,有效地利用中断可以简化程序和提高执行效率。本系统软件设计部分主要涉及到的中断服务程序主要有3个,分别是定时器中断服务程序、a/d中断服务程序和键盘输入中断服务程序。
4.4.1定时器中断
定时中断是定时器最基本的工作应用方式,其功能为,预定一个时间值, 到时间后产生中断。定时器可以用来计时,同样也可以按照一定的频率来执行某一段程序,如定时信号检测等。运用计数器,随着每次程序循环的次数来修改定时时间,程序每循环一次,改变一次状态。程序每一个周期循环结束后, cpu就进入低功耗模式。定时时间到后,触发中断,使cpu退出低功耗模式,开始新的循环。由于定时时间不断地改变,所反映出来的状态周期也随着不断地改变。
定时器中断服务程序主要是用来控制励磁方式和输出pwm信号。在本系统设计中,通过控制定时器中断程序来调节励磁的变化及控制单片机输出电流pwm输出信号,在程序初始化之后,中断一被打开,此程序就一直在运行。根据系统设计的需求来设定定时器的溢出时间及周期等。本系统软件设计中的部分定时器中断服务程序如下: #pragma vector=timeraq)ector interrupt void timer.—a(void) { plout^=0x10; nowfltnmb++; if(nowfltnmb>1 50) { nowfltnmb=o; nowfltflg=l; ) if(keydelayflag>0) { keydelaynub=keydelaynub+l; if(keydelaynub>50) { keydelaynub=0; keydelayflag=0; keyswitch(1); >
) )
4.4.2~d转换中断
对于ad7790转换器的数据读取和控制,系统软件设计主要用外部中断服务程序的执行。为了保证流量较小时也能达到较高的精度,在a/d的转换的软件设计中提出了要求,同时还考虑到了流量均匀时及流量不均匀时计数的区别。因为对a/d转换的读取存在要有实时性,本系统设计采用外部中断来完成这个功能。本系统设计中adc为σ-△型模数转换器,adc初始化的内容包括:设定转换时钟频率、数据采集、设置pga、与cpu通信、选择数字滤波方式和标定模式、设定转换速率等。adc软件设计的流程图如图4.3所示。图4.3 adc软件设计的流程图
ad7790模数转换器的具体转换原理等在第3.2.3节已经作了详细的介绍,在这里,系统与cpu的通信采用了该芯片*的三线通信方式。当片选信号为低电平时,三线方式选通,在这种情况下,sclk、din和dou啪y三线就可以与cpu通信,这种状态的转变直到rdy端口的状态变化而产生。这对于cpu的接口来说是比较适应的,如果片选信号cs认作为一个解码信号,它就能被当作一个端口引脚。adc开始工作后,直接进行模拟信号的采样转换工作,然后等待转换的完成。
键盘输入中断
msp430单片机指令系统具有的跳转指令和c语言的switch语句非常适合对键盘输入信息处理,这些指令可以看成是键盘信息输入的软件接口。键盘输入中断服务程序主要完成对键盘管理工作,键盘通过接口与cpu相连,在相应软件的配合下,cpu可以采取中断或者查询方式了解有无键信息输入并检查是哪个键按下,然后执行该按键所对应的功能程序。最后再回到原始状态。对于键盘处理,包括硬件和软件两部分,硬件电路在前面章节已经给出,在这里不再叙述了,而对于软件的处理,有如下一些问题要解决:
(1)去抖动问题按键和键盘采用的是利用机械触点的闭合与断开来产生输入电信号,但是由于机械触点的弹性作用,在键闭合与弹开的时候,往往会产生抖动,若系统处理不好,一次按键会被误认为是连续按了多次键。图4.4给出的是按键带来的电压波形。一按键按下· ~ ∥ 前沿抖动稳定期k沿抖动图4.4按键开、闭时的电压抖动波形按键抖动的时间长短取决于触点的机械特性,一般按键抖动时间大约5.10ms。因此,必须对按键的抖动作相应的处理,确保cpu只会对一次键入信息作一次处理,处理程序在按键稳定后再检查键的信息。当然,克服按键抖动的方法很多, 一种是用硬件,即在每个键上}jiirc滤波电路或用一个rs触发器组成防抖动的电路。另一种方法是加入一个软件延时程序,然后再确认该按键是否被按下,从而防止误判断。在本系统中,我们采取的是软硬件结合的方式来消除键盘抖动, 当有按键下按时,就会有一个的中断,在中断服务程序里,首先有一定的延时, 这里本设计设置为10ms,然后再进行键值的读取。
(2)对于按键进行编号以便于识别
为了使cpu能够识别出键入的信息,对不同的按键必须有不同的键入的值或键盘编码,以便转入到相应的处理程序。键的编码一般由按键的硬件连接方式决定。
(3)按键信息的逻辑处理
在系统软件设计中,除对按键能作识别处理外,还要考虑到人在操作时易产生的其他问题的逻辑处理。如多个按键同时被按下、在一个键功能正在处理的时候另外按键被误按下、按键时间长短的影响等,所有这些问题一般情况下都能通过软件解决。在这给出按键的中断部分服务程序。初始化程序: void initkey(void) { keydir&=~(key0+keyi+key2); //设置端口为输入keyifg&=~(key0+keyi+key2); //清除中断标志keyies l=key0+keyi+key2; //设置下降沿中断keyie i-key0+keyl+key2; //打开端口中断key0count=o: //按键次数清零keyl count=0: //按键次数清零key2countl=0: //按键次数清零key2count2=o; //按键次数清零) 打开及关闭键盘中断程序: //sw: 0:关闭100-打开void keyswitch(unsigned char sw) {if(sw—o、keyie&=~(key0+keyi+key2);//关闭端121中断elsekeyie i_key0+keyi+key2; //打开端口中断) 系统用于消除抖动的延时程序如下: void delay(void) { inti; for(i=100;i一;》0); //延时一点时间 扩展阅读:开封中仪流量仪表有限公司专业生产电磁流量计、孔板流量计、涡街流量计、文丘里流量计、v锥流量计、v型锥流量计、喷嘴流量计、插入式电磁流量计、智能电磁流量计、分体式电磁流量计、一体式电磁流量计、标准孔板流量计、标准孔板、一体化孔板流量计、标准喷嘴流量计、长径喷嘴流量计、标准喷嘴、长径喷嘴、插入涡街流量计、智能涡街流量计,更多信息请访问开封中仪网站: