资源描述:
《第4章C51程序的设计和调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章C51程序的设计和调试C51程序设计就是用C51语言把所要解决的步骤描述出来,生成C51源程序文件,经编译生成单片机能执行的机器语言,调试后将符合设计目标的机器语言固化到单片机的程序存储器中。4.1C51程序设计方法4.2C51程序调试-KEILC51基本使用方法4.3实验过程和方法4.1C51程序设计方法4.1.1程序设计步骤编写一个程序过程大致分为以下几个步骤:(1)需求分析;(2)功能分割;(3)确定程序架构,划分程序模块;(4)根据程序模块,设计程序流程图;(5)编写代码;(6)编译、调试;(7)优化程序;(8)固化程序。4.1.2程序框图和程序结构一单片机应用系
2、统的程序,一般由一个主程序和若干个子程序和中断程序组成。一、程序框图(1)执行框(2)判断框(3)开始框(4)结束框二、程序结构(1)条件满足才执行某个操作,条件不满足不执行该操作。{if(表达式1){语句1;}}(2)条件满足执行操作1,条件不满足执行操作2。{if(表达式){语句1;}else{语句2;}}(3)根据表达式可能有地n种不同值,执行不同的操作。switch(表达式){case常量表达式1:{语句1;break;}case常量表达式2:{语句2;break;}……case常量表达式n:{语句n;break;}default:{语句n+1;}}三、循环结构程序在程
3、序处理过程中,有时需要某一段程序重复执行多次,这时就需要循环结构来实现,循环结构就是能够使程序段重复执行的结构。1.预知循环次数例4.1设小组10个学生的语、数、英成绩已输入到数组chin、math、eng中,试计算学生3门课的平均成绩存于数组avg中。#defineuintunsignedint#defineucharunsignedcharucharchin[11]={80,85,95,70,65,80,82,78,90,95,0};ucharmath[11]={100,90,80,85,75,85,85,90,90,95,0};uchareng[11]={100,100,
4、85,80,95,90,95,90,90,95,0};ucharavg[11];p_person(){uchari=0;uinty;while(i<10){y=chin[i];y+=math[i];y+=eng[i];avg[i]=y/3;i++;}}main(){p_person();for(;;);}例4.2已知条件同例4.1,试计算小组学生单科平均成绩。并放于这3个数组的最后一个元素中。#defineuintunsignedint#defineucharunsignedcharucharchin[11]={80,85,95,70,65,80,82,78,90,95,0};
5、ucharmath[11]={100,90,80,85,75,85,85,90,90,95,0};uchareng[11]={100,100,85,80,95,90,95,90,90,95,0};ucharavg[11];p_group(uchar*p){uchari;uinty;for(i=0,y=0;i<10;i++){y+=*p;p++;}*p=y/10;}main(){uchar*p;p=chin;p_group(p);p=math;p_group(p);p=eng;p_group(p);for(;;);}3未知循环次数这种循环程序是根据操作结果来判断是否推出循环。例4
6、.3将无符号整型变量之值对应的十进制数有效位转换为ASCII字符。#defineucharunsignedcharucharS_BUF[5]={0x30,0x30,0x30,0x30,0x30};d_asc(unchar*p,uintx){do{*p=(x%10)+0x30;p--;x/=10;}while(x!=0);}main(){uintx=1256;uchar*ptr;ptr=&S_BUF[4];d_asc(ptr,x);for(;;);}4.无限循环程序例4.4P1.0输出方波的无限循环程序#defineuintunsignedint#include“reg52.h”
7、sbitP1_0=P1^0;voiddel_n_ms(uintn){uintI,j;for(i=0;i