占用式和非占用式程序结构分析

占用式和非占用式程序结构分析

ID:47121054

大小:45.50 KB

页数:5页

时间:2019-08-08

占用式和非占用式程序结构分析_第1页
占用式和非占用式程序结构分析_第2页
占用式和非占用式程序结构分析_第3页
占用式和非占用式程序结构分析_第4页
占用式和非占用式程序结构分析_第5页
资源描述:

《占用式和非占用式程序结构分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最近刚把 DYS388 项目了结,期间写了不少程序,写着写着想到了一下东西,于是总结了一下,在这骚一把,高手勿喷啊。一、什么是占用式程序    一个进程在一个时刻只能处理一个任务。    每个任务是为了完成一个功能,如果这个功能的实现过程是一直占用进程处理资源的话,就称这个任务函数是占用式程序结构。    最常见的占用式程序结构就是延时函数了,比如我最常用的5ms延时函数    void delay5(unsigned char n)    {         unsigned int i;         for(;n>0;n--)  

2、           for(i=4700;i>0;i--);   //12MHz,1T    }    在完成5ms功能过程中是一直占用调用它的进程处理资源的,在此期间不能进行其它任务。    还有一个很常见的占用式程序——数码管扫描,不过在这里我不举数码管扫描的例子,而举这次在DYS388中使用的8*8彩色点阵屏的扫描程序:    void refresh7()    {         unsigned char r;         for(r=0;r<8;r++)         {             //扫描红色    

3、         DPw = ~(0x01<

4、色的扫描程序省略,它们的结构和红色扫描是一样的         }    }    这个函数是7色模式下的屏幕扫描程序,调用一次此函数会把整个屏幕扫描一遍。    r代表行数,r循环8次代表屏幕的8个行;在每次循环里,先导通对应的行和需点亮的灯,然后延时light7个单位,再关闭所有显示,再延时32-light7个单位。 二、占用式程序的缺点    占用式程序最大的缺点就是执行时间太长,耽误对其它任务的响应。另外就是资源浪费,很多时间浪费在执行中的延时上。    当然,可以在这些占用式程序中嵌入其它代码以及时处理其它任务,但是这样会造成程

5、序结构混乱,嵌入的其它代码还会影响本程序的执行。如果嵌入的代码功能简单还好,如果功能复杂,尤其是当嵌入的代码也是占用式的,就会严重影响程序执行速度。  三、对占用式程序的改造    在此以DYS388的扫描程序为例,对其进行改造。    首先,每次调用就扫描8行,耗时太长,现将其改成每次扫描一行:    void refresh7()    {         static unsigned char r=0;         //扫描红色         DPw = ~(0x01<

6、Pr = ~vm7r[r];//送入R灯IO接口显示         DELAY7 (light7);//显示时间长度         DPw=0xff;         DPr=0xff;         DPg=0xff;         DPb=0xff;         DELAY7 (32-light7);//灭灯时间长度         //为了简洁,这里把绿色和蓝色的扫描程序省略,它们的结构和红色扫描是一样的              r++;         if(r==8)             r=0;    }  

7、  用一个静态变量r来记忆行数,这样每次调用此函数只需扫描一行,执行速度是原来的8倍,可以比较快地响应其它任务了。    但是这样还不够,每次扫描都会扫描三种颜色,时间还是有点长,下面再次改造,改为每次只扫描一种颜色:    void refresh7()    {         static unsigned char r=0;         static unsigned char flagrgb=0;  //当前需要点亮的颜色,0-R,1-G,2-B         flagrgb++;         if(flagrgb==

8、3)     //说明三种颜色都扫描完了         {             flagrgb=0;    //从红色开始扫描             r++;     //开始扫描下一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。