单片机C语言程序设计ppt课件.ppt

单片机C语言程序设计ppt课件.ppt

ID:59342627

大小:749.00 KB

页数:164页

时间:2020-09-20

单片机C语言程序设计ppt课件.ppt_第1页
单片机C语言程序设计ppt课件.ppt_第2页
单片机C语言程序设计ppt课件.ppt_第3页
单片机C语言程序设计ppt课件.ppt_第4页
单片机C语言程序设计ppt课件.ppt_第5页
资源描述:

《单片机C语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本例的一个典型应用就是软件延时。在程序的设计中,经常用到时间延迟,可用循环结构来实现,即循环执行指令,消磨一段已知的时间。AT89S51单片机指令的执行时间是靠一定数量的时钟周期来计时的,如果使用12MHz晶振,则12个时钟周期花费的时间为1µs。【例】编写一个延时1ms程序。voiddelayms(unsignedcharintj){unsignedchari;while(j--){for(i=0;i<125;i++){;}}}如果把上述程序段编译成汇编语言代码进行分析,用for进行的内部循环大约延时8ms,但不是特别精确。不同的编译器会产生不同的延时,因此i的上限值

2、125应根据实际情况进行补偿调整。【例】求1+2+3+……+100的累加和。用for语句编写的程序如下:#include#includemain(){intnvar1,nsum;for(nvar1=0,nsum=1;nsum<=100;nsum++)nVar1+=nsum;/*累加求和*/while(1);}【例】无限循环的结构实现。编写无限循环程序段,可使用以下3种结构:(1)使用while(1)的结构:while(1){代码段;}(2)使用for(;;)的结构:for(;;){代码段;}【例】输出整数1~100的累加值,但要求跳过

3、所有个位为3的数。为完成题目要求,在循环中加一个判断,如果该数各位是3,就跳过该数不加。如何来判断1~100的数中那些位的个位数是3呢?用求余数的运算符“%”,将一个2位以内的正整数,除以10后,余数是3,就说明这个数的个位为3。例如对于数73,除以10后,余数是3。根据以上分析,参考程序如下:voidmain(void){inti,sum=0;sum=0;for(i=1;i<=100;i++){if(i%10==3){continue;}sum=sum+i;}print(“sum=%d”,sum);/*在计算机屏幕显示sum值,了解本语句的功能即可*/}(3)go

4、to语句是一无条件转移语句,当执行goto语句时,将程序指针跳转到goto给出的下一条代码。基本格式如下:goto标号【例】计算整数1~100的累加值,存放到sum中。voidmain(void){unsignedchariintsum;sumadd:sum=sum+i;i++;if(i<101){gotosumadd;}}goto语句在C51中经常用于无条件跳转某条必须执行的语句以及用于在死循环程序中退出循环。为了方便阅读,也为了避免跳转时引发错误,在程序设计中要慎重使用goto语句。【例】使用查表法,计算数0~9的平方。#defineucharunsignedcha

5、rucharcodesquare[0,1,4,9,16,25,36,49,64,81];/*0~9的平方表,在程序存储器中*/ucharfuction(ucharnumber){returnsquare[number]};/*返回要求得其平方的数*/main(){result=fuction(7);/*函数fuction()的返回值为7,其平方49存入result单元*/}在程序的开始处,“ucharcodesquare[0,1,4,9,16,25,36,49,64,81];”定义了一个无符号字符型的数组square[],并对其进行了初始化,将数0~9的平方值赋予了数组

6、square[],类型代码code指定编译器将平方表定位在程序存储器中。4.2并行I/O端口的C51编程举例4.2.1从左到右的流水灯的制作片内I/O端口作为输出使用时,最常用的应用是控制相应的I/O引脚上的LED点亮与熄灭。【例4-1】如图4-6所示,8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳极共同接高电平。编程来实现发光二极管的从左到右的流水点亮,即按照LED0→LED1→┉→LED7的顺序,每次点亮一个发光二极管,延时一段时间后熄灭这个发光二极管,然后点亮下一个发光二极管,重复循环。参考程序如下:8图4-68个发光二极管

7、与并行口P1的连接#include#include/*包含移位函数的头文件*/#defineucharunsignedchar#defineuintunsignedintvoiddelay(uinti)/*延时函数*/{uchart;while(i--);{for(t=0;t<120;t++);}}voidmain()/*主程序*/{P1=0xfe;while(1){P1=_crol_(0,1);/*C51函数库中的左移函数,P1中的数据循环左移1位*/delay(500);/*500为延时参数,可

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

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

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