1 / 164
文档名称:

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

格式:ppt   大小:749KB   页数:164页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:xiang1982071 2020/9/23 文件大小:749 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:本例的一个典型应用就是软件延时。在程序的设计中,经常用到时间延迟,可用循环结构来实现,即循环执行指令,消磨一段已知的时间。AT89S51单片机指令的执行时间是靠一定数量的时钟周期来计时的,如果使用12MHz晶振,则12个时钟周期花费的时间为1µs。【例】编写一个延时1ms程序。voiddelayms(unsignedcharintj){ unsignedchari; while(j--) { for(i=0;i<125;i++) {;} }}如果把上述程序段编译成汇编语言代码进行分析,用for进行的内部循环大约延时8ms,但不是特别精确。不同的编译器会产生不同的延时,因此i的上限值125应根据实际情况进行补偿调整。【例】求1+2+3+……+100的累加和。用for语句编写的程序如下:#include<>#include<>main(){ 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,就跳过该数不加。如何来判断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\n”,sum);/*在计算机屏幕显示sum值,了解本语句的功能即可*/ }(3)goto语句是一无条件转移语句,当执行goto语句时,将程序指针跳转到goto给出的下一条代码。基本格式如下:goto 标号【例】计算整数1~100的累加值,存放到sum中。voidmain(void) { unsignedchariintsum; sumadd:sum=sum+i;i++;if(i<101) { gotosumadd;} }goto语句在C51中经常用于无条件跳转某条必须执行的语句以及用于在死循环程序中退出循环。为了方便阅读,也为了避免跳转时引发错误,在程序设计中要慎重使用goto语句。【例】使用查表法,计算数0~9的平方。#defineucharunsignedcharucharcodesquare[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的平方值赋予了数组square[],类型代码code指定编译器将平方表定位在程序存储器中。.1从左到右的流水灯的制作片内I/O端口作为输出使用时,最常用的应用是控制相应的I/O引脚上的LED点亮与熄灭。【例4-1】如图4-6所示,8个发光二极管LED0~~,阳极共同接高电平。编程来实现发光二极管的从左到右的流水点亮,即按照LED0→LED1→┉→LED7的顺序,每次点亮一个发光二极管,延时一段时间后熄灭这个发光二极管,然后点亮下一个发光二极管,重复循环。参考程序如下:*图4-68个发光二极管与并行口P1的连接#include<>#include<> /*包含移位函数的头文件*/#defineucharunsignedchar #defineuintunsignedint voiddelay(uinti) /*延时函数*/{ uchart;while(i--); { for(t=0;t<120;t++); }}voidmain() /*主程序*/{ P1=0xfe; while(1) {P1=_crol_(0,1);/*C51函数