(*p)(); }
//通过函数的指针p调用函数led_flow()
// 34
//实例34:用指针数组作为函数的参数显示多个字符串
#include
unsignedcharcode str1[]=\ is testedbyDS18B20\语言中,字符串 是作为字符数组来处理的
unsignedcharcode str2[]=\temperatureis:\ //所以,字符串的名字就是 字符串的首地址
unsignedcharcode str3[]=\ Systerm is designedbyZhangSan%unsignedcharcode str4[]=\ dateis2008-9-30\
unsignedchar*p[]={str1,str2,str3,str4};//定义p[4]为指向4个字符串的字符型指 针数组
/************************************************************** 函数功能:延时约150ms
**************************************************************/ voiddelay(void) {
unsignedcharm,n;
for(m=0;m<200;m++) for(n=0;n<250;n++)
;
}
/************************************************************** 函数功能:流水点亮P0口8位LED
**************************************************************/ voidled_display(unsignedchar*x[]) //形参必须为指针数组 {
unsignedchari,j;
for(i=0;i<4;i++)//有4个字符串要显示 {
j=0; //指向待显字符串的第0号元素
while(*(x[i]+j)!='\\0')//只要第i 个字符串的第j 号元素不是结束标志 {
P0=*(x[i]+j);//取得该元素值送到P0口显示 delay(); //调用延时函数 j++; //指向下一个元素 } }
}
226/ 192
/************************************************************** 函数功能:主函数
**************************************************************/ voidmain(void) {
unsignedchari; while(1) {
for(i=0;i<4;i++)
led_display(p);//将指针数组名作实际参数传递 } }
//实例35:字符函数ctype.h 应用举例
#include
while(1) {
P3=isalpha('_')?0xf0:0x0f;//条件运算,若'_'是英文字母,P3=0xf0 } }
//实例36:内部函数intrins..h 应用举例
#include
*************************************************/ voiddelay(void) {
unsignedcharm,n; for(m=0;m<200;m++) for(n=0;n<250;n++)
;
}
227/ 192
/************************************************* 函数功能:主函数
*************************************************/ voidmain(void) {
P3=0xfe; //P3=11111110B while(1) {
P3=_crol_(P3,1);// 将P3的二进制位循环左移1 位后再赋给P3 delay(); //调用延时函数 } }
// 37 stdlib.h
//实例37:标准函数stdliib.h 应用举例
#include
*************************************************/ voiddelay(void) {
unsignedcharm,n; for(m=0;m<200;m++) for(n=0;n<250;n++)
;
}
/************************************************* 函数功能:主函数
*************************************************/ voidmain(void) {
unsignedchari; while(1) {
for(i=0;i<10;i++) //产生10个随机数 {
P3=rand()/160;//将产生的随机数缩小160倍后送P3显示 delay(); } }
228/ 192
}
//实例38:字符串函数striing.h应用举例
#include
unsignedcharstr1[]=\The temperature is :\
unsignedcharstr2[]=\The temperature is 36Centgrade:%unsignedchari;
i=strcmp(str1,str2);//比较两个字符串,并将结果存入i if(i==0) //str1=str2 P3=0x00; else
if(i<0) //str1 P3=0xf0; else //str1>str2 P3=0x0f; while(1) ; //防止程序“跑飞” } // 39 2 //实例39:宏定义应用举例2 #include unsignedchari,j,k; i=40; j=30; k=20; P3=F(i,j+k); //i 和j+k分别为实参,宏展开时,实参将替代宏定义中的形 参 while(1) ; } 229/ 192 //实例40:宏定义应用举例2 #include P3_0=0; //将P3.0引脚置低电平,LED点亮 P3_1=0; //将P3.0引脚置低电平,LED点亮 P3_2=0; //将P3.0引脚置低电平,LED点亮 P3_3=0; //将P3.0引脚置低电平,LED点亮 P3_4=1; //将P3.4引脚置高电平,LED熄灭 P3_5=1; //将P3.5引脚置高电平,LED熄灭 P3_6=1; //将P3.7引脚置高电平,LED熄灭 P3_7=1; //将P3.7引脚置高电平,LED熄灭 while(1) ; } //实例41:宏定义应用举例3 #include #if MAX>80 //P3口低四位LED 点亮 P3=0xf0; #else //否则,P3口高四位LED 点亮 P3=0x0f; //结束本次编译 #endif } 33/ 192 0