从单片机基础到程序框架(全集 2019pdf版).pdf - 第284页

ChuFa(); //调用一次除 法运算的函数 DiaoYong Zhe_Shang=S hang; //把除 法运算的“商 ”赋值给调用 者的商。 DiaoYong Zhe_Yu=Yu; //把除法运算 的“余数”赋值 给调用 者的余数。 } 第二类: return。 return 只能 输出一个结果 ,力不从心, 所以这里 不列举 re turn 的例子。 第三类:指 针。 unsigned c har Diao YongZhe_S…

100%1 / 836
void main()
{
DiaoYongZhe=JiaFa(3,5); //把加法运算的“和”赋值给调用者,一气呵成
}
第三类:指针。
unsigned char DiaoYongZhe; //调用者
void char JiaFa(unsigned char BeiJiaShu,unsigned char JiaShu,unsigned char *pu8He)
{
*pu8He=BeiJiaShu+JiaShu;
}
void main()
{
JiaFa(3,5,&DiaoYongZhe); //通过指针这个输出渠道,把加法运算“和”赋值给调用者,一气呵成
}
【64.3 有多个输出接口的时候。
现在举一个例子,要用函数实现一个除法运算分别输出除法运算的商和余数“两个数, 5 除以
3 等于 1 2。因为 return 只能输出一个结果,所以这里不列举 return 的例子,只使“全局变量”“指
针”这两类输出接口。
第一类:全局变量。
unsigned char DiaoYongZhe_Shang; //调用者的商
unsigned char DiaoYongZhe_Yu; //调用者的余
unsigned char BeiChuShu; //被除数
unsigned char ChuShu; //除数
unsigned char Shang; //输出的接口,除法运算的"商"。
unsigned char Yu; //输出的接口,除法运算的"余"。
void ChuFa(void)
{
Shang=BeiChuShu/ChuShu; //求商。假设除数不会为 0 的情况。
Yu=BeiChuShu%ChuShu; //求余数。假设除数不会 0 的情况。
}
void main()
{
BeiChuShu=5; //填入被除数 5
ChuShu=3; //填入除数 3
ChuFa(); //调用一次除法运算的函数
DiaoYongZhe_Shang=Shang; //把除法运算的“商”赋值给调用者的商。
DiaoYongZhe_Yu=Yu; //把除法运算的“余数”赋值给调用者的余数。
}
第二类:return。
return 只能输出一个结果,力不从心,所以这里不列举 return 的例子。
第三类:指针。
unsigned char DiaoYongZhe_Shang; //调用者的商
unsigned char DiaoYongZhe_Yu; //调用者的余数
void ChuFa(unsigned char BeiChuShu,
unsigned char ChuShu,
unsigned char *pu8Shang,
unsigned char *pu8Yu)
{
*pu8Shang=BeiChuShu/ChuShu; //求商。假设除数不会为 0 的情况。
*pu8Yu=BeiChuShu%ChuShu; //求余数。假设除数不会为 0 的情况
}
void main()
{
ChuFa(5,3,&DiaoYongZhe_Shang,&DiaoYongZhe_Yu);//通过两个指针的输出接口,一气呵成。
}
【64.4 例程练习和分析。
现在编一个练习程序。
/*---C 语言学习区域的开始。-----------------------------------------------*/
void ChuFa(unsigned char BeiChuShu,
unsigned char ChuShu,
unsigned char *pu8Shang,
unsigned char *pu8Yu); //函数声明
unsigned char DiaoYongZhe_Shang; //调用者的商
unsigned char DiaoYongZhe_Yu; //调用者的余数
void ChuFa(unsigned char BeiChuShu,
unsigned char ChuShu,
unsigned char *pu8Shang,
unsigned char *pu8Yu) //函数定义
{
*pu8Shang=BeiChuShu/ChuShu; //求商。假设除数不会为 0 的情况。
*pu8Yu=BeiChuShu%ChuShu; //求余数。假设除数不会为 0 的情况
}
void main() //主函数
{
ChuFa(5,3,&DiaoYongZhe_Shang,&DiaoYongZhe_Yu);//函数调用。通过两个指针的输出接口,一气呵成。
View(DiaoYongZhe_Shang); //把第 1 个数 DiaoYongZhe_Shang 发送到电脑端的串口助手软件上观察。
View(DiaoYongZhe_Yu); //把第 2 个数 DiaoYongZhe_Yu 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:1
十六进制:1
二进制:1
2 个数
十进制:2
十六进制:2
二进制:10
分析:
DiaoYongZhe_Shang 1。
DiaoYongZhe_Yu 2。
【64.5 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口 51 习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。