5 C51语言程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例8-4:将一个四位压缩BCD码BCD_num拆开成四位BCD码,并存放到FIRST(千位)、SECO(百位)、THIR(十位)、FOUR(个位)这四个字节单元中。这种问题经常在显示时用到。 分析:首先将原数除以1000,得到千位数;再将余数除以100,得到百位数;然后再将余数除以10,得到十位数;最后得到的余数就是个位数。参考程序如下: unsigned int data BCD_num;//双字节BCD码存放单元,3927 unsigned char data FIRST,SECO,THIR,FOUR; void BCD_decompose(void) {   unsigned int data temp; FIRST=(unsigned char)(BCD_num/1000); temp=BCD_num%1000;//得到除以1000的余数 SECO=(unsigned char)(temp/100); temp=temp%100;//得到除以100的余数 THIR=(unsigned char)(temp/10); FOUR=temp%10;//得到除以10的余数 } 8.3.2 分支结构程序 分支结构程序就是条件判断分支程序,即根据不同的条件,执行不同的程序段。在C51中,可以采用if-else if嵌套语句,或switch语句。 例8-5:设变量X存放在VAR单元,函数值将存放在FUNC单元,试按照下式编写程序。 char data VAR; char data FUNC; char fun(char dat) { if(dat0)return(1); else if(dat0)return(-1); else return(0); } //主程序 … FUNC=fun(VAR); … 分析:可以采用if-else if嵌套语句。参考程序如下: 例8-6:P1口的低四位分别各接一个按键开关,且低电平有效,当仅有一个按键按下时,P3口的低四位采用采用编码输出,具体的对应关系见下表,否则P3口的低四位输出全1。 分析:可以采用switch语句。参考程序如下: void key(void) { P1|=0x0f;P1口置高,准备读入P1口的低四位状态 switch(P10x0f) { case 0x0e:P3=0xf0;break;//P1.0有效 case 0x0d:P3=0xf1;break;//P1.1有效 case 0x0b:P3=0xf2;break;//P1.2有效 case 0x07:P3=0xf3;break;//P1.3有效 default:P3=0xff;break;//否则输出全1 } } 8.3.3 循环结构程序 在程序设计中,常会遇到同样一组操作要重复许多次,在C51中,可以使用for语句来实现循环控制。 例8-7:从BLOCK单元开始存放一组无符号数,数据块的长度存放在LEN单元,编写一个求和程序,并将和存入SUM单元,设和不超过16位二进制数。 分析:可以采用for循环语句。参考程序如下: unsigned char data LEN, BLOCK[]; unsigned int data SUM; void SUM_program(unsigned char *BLOCK,unsigned char LEN) { unsigned char data i; for(i=0;iLEN;i++) {SUM+=BLOCK[i];} } … //主程序 SUM_program(BLOCK,LEN); … 8.3.4 函数调用 函数是独立于主函数(main函数)并能完成特定功能,能够被主函数或其它函数调用,又能返回主函数或其它被调用的函数。在C51中的函数调用就相当于51汇编中的LCALL或ACALL调用。另外,在C51中函数的原型既可以有入口参数,也可以有返回参数,因此可以使用带参数传递的函数实现参数的传递。 见例8-1例程。 将程序分解成了三个模块,即主程序模块、显示程序模块、检测按键和获取键值模块。 显示模块通过入口参数获取显示数值,而检测按键模块和获取键值模

文档评论(0)

lingyun51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档