- 1、本文档共72页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[高玉芹单片机原理与应用课件]第4章C51程序设计.ppt
4.7.5预处理命令 1.宏定义命令#define 宏定义命令用来指定标识符的值,一般定义格式为: #define 标识符 数字或字符序列 #define 标识符(形参) 数值或字符序列 例如: #define PI 3.1415926 宏定义后PI作为一个常量使用,预处理时将程序中的PI换成 数值3.1415926。 #define s(a,b) a*b area=s(2,3); 预处理时将area换成2*3。 2.文件包含命令#include 包含命令的一般格式为: #include 头文件名 或者#include “文件名” 例如:#include math.h //包含数学计算函数库的头文件 4.8 C51程序设计 4.8.1数值运算程序设计 1.数制转换程序 例4-23十六进制到十进制转换 待转换的整型十六进制数存放于变量x中,编写C51程序,将变量x中的十六进制数转换为相应的十进制数,存放于数组a[ ]中,其中转换结果的个位、十位、百位、千位、万位分别存放于a[0]、a[1]、a[2]、a[3]、a[4] 中 。 void main ( ) { unsigned int x; unsigned char a[5]={0,0,0,0,0}; unsigned char j,i=0; for (j=1;j=5;j++) { a[i]=x%10; //x除以10的余数存入a[i] x=x/10; //x除以10的商(整数) i++; } } 例4-24 十进制到十六进制的转换 十进制数以BCD码形式存放数组a[ ]中,a[0]、a[1]、a[2]、 a[3]、a[4] 中分别存放个位、十位、百位、千位、万位,把此数 转换为十六进制数存放于变量x中。 X初始化为0 =((((x*10+a4)*10+a3) *10+a2) *10+a1) *10+a0 void main() { unsigned int x=0; unsigned char a[5]={1,2,3,4,5}; unsigned char j,i=4; for (j=1;j=5;j++) { x=x*10+a[i]; i--; } } 2.求最大值 例4-25 有八个无符号字符型数据放在数组a[ ]中,求其中最大值。 数组中最大值存放于变量max中,设置max中初值为0,把数组 中的数逐一与max比较,若比max大则取代max中的值,若比max小 则保持max中值不变。 void main() { unsigned char i=0,max=0; unsigned char a[]={1,2,3,4,5,100,45,56}; while (i8) { if (a[i]max) max=a[i]; i++; } } 3.查表程序 例4-26应用查表程序求0~5这几个数的平方值。 void main() { unsigned char square,i; unsigned char a[]={0,1,4,9,16,25}; //几个数的平方值放在数组a[]中 square=a[i]; //i为数值,square为查表所得平方值 } 程序设计思路:把几个数的平方值预先放在数组中,根据序号 查找相应数组中的数据,即为该序号的平方值。 4.8.2 硬件接口程序设计 例4-27 通过单片机的并行口P1口,控制8路LED灯轮流点亮。 引脚为0时灯亮,为1时灯熄灭。 #include reg51.h #include intrins.h void delay( ); //延时函数声明 void main() { P1=0xfe; while (1) { delay ( ); //调用延时程序 P1=_crol_(P1,1); //P1数据左移1位 } } void
文档评论(0)