两段代码的区别

来源:本站
导读:目前正在解读《两段代码的区别》的相关信息,《两段代码的区别》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《两段代码的区别》的详细说明。
简介:有个在QQ群提问以下两段代码的区别和优劣。

A:

void Display(unsigned char FirstBit,unsigned char Num)

{

unsigned char i;

for(i=0;i<Num;i++)

{

DataPort=0; //清空数据,防止有交替重影

LATCH1=1; //段锁存

LATCH1=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位码

LATCH2=1; //位锁存

LATCH2=0;

DataPort=TempData[i]; //取显示数据,段码

LATCH1=1; //段锁存

LATCH1=0;

Delay(200); // 扫描间隙延时,时间太长会闪烁,

//太短会造成重影

}

}

B:

void Display(unsigned char FirstBit,unsigned char Num)

{

static unsigned char i=0;

DataPort=0; //清空数据,防止有交替重影

LATCH1=1; //段锁存

LATCH1=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位码

LATCH2=1; //位锁存

LATCH2=0;

DataPort=TempData[i]; //取显示数据,段码

LATCH1=1; //段锁存

LATCH1=0;

i++;

if(i==Num) i=0;

}

因为网友只给了这两段代码,我们有些地方只能靠猜测,结合注释,我们可以确定这两段代码的目的是为了实现是显示。

void Display(unsigned char FirstBit,unsigned char Num)

函数的参数: FirstBit 显示数据的起始地址, Num 显示数据的长度。dofly_WeiMa是显示数据存储的缓冲区。DataPort 是数据端口,LATCH2 数据锁存,上跳沿有效。

每输出一个字符,需要隔200个延时再输出下一个字符。是为了防抖。

其实这两段的代码功能是一样的,只是消抖的方式不一样。

A段代码是一次任务的输出所有字符,每个字符输出间隔延时200个时间单位。

B段代码是每次执行输出一个字符,下一次执行再输出下一个字符。每次间隔时间就是主循环运行的时间。

A段代码执行需要一个相当长时间等待,在输出字符串期间是不能执行其他任务。如果时间比较长可能会造成内部看门狗复位、键盘响应滞后等等。整体效率比较低。

B代码的运行效果比较好,只要确保延时够就可以了。执行B代码不需要太长的独占处理器。

提醒:《两段代码的区别》最后刷新时间 2024-03-14 01:04:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《两段代码的区别》该内容的真实性请自行鉴别。