云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机课后习题答案

单片机课后习题答案

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 18:53:56

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

21

} 14.

用3种循环结构编写程序实现输出1到10的平方之和。

参考程序:

(1)while循环

#include //包含特殊功能寄存器库 #include //包含I/O函数库 void main(void) //主函数 {

int i,s=0; //定义整型变量 i=1;

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

while (i<=10) //累加1到10的平方之和在s中 {

s=s+i*i; i++; }

printf(\到10的平方之和=%d\\n\while(1); }

(2)do while循环

#include //包含特殊功能寄存器库 #include //包含I/O函数库 void main(void) //主函数 {

int i,s=0; //定义整型变量 i=1;

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; do //累加1到10的平方之和在s中 {

s=s+i*i; i++; }

while (i<=10);

printf(\到10的平方之和=%d\\n\while(1); }

(3)for循环

#include //包含特殊功能寄存器库 #include //包含I/O函数库 void main(void) //主函数 {

int i,s=0; //定义整型变量

22

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

for (i=1;i<=10;i++) s=s+i*i; //累加1到10的平方之和在s中 printf(\到10的平方之和=%d\\n\while(1); } 15. 排序。

对一个由5个元素组成的无符号字符数组按由小到大的顺序进行

参考程序:

#include //包含特殊功能寄存器库 #include //包含I/O函数库 main() {

unsigned char f[5],m,i,j;

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

printf(\输入任意5个字符:\

scanf(\printf(\

for (i=0;i<5;i++)

for (j=0;j<5-i;j++) if (f[j]>f[j+1])

{m=f[j];f[j]=f[j+1];f[j+1]=m;}

printf(\由小到大的顺序

为:%c,%c,%c,%c,%c\printf(\while(1); } 16.

用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。

参考程序:

#include //包含特殊功能寄存器库 #include //包含I/O函数库 main() {

unsigned char x,y,z;

unsigned char *p,*p1,*p2,*p3;

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

23

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

printf(\scanf(\printf(\

p1=&x;p2=&y; p3=&z;

if (*p1<*p2) {p=p1;p1=p2;p2=p;} if (*p2<*p3) {p=p2;p2=p3;p3=p;} if (*p1<*p2) {p=p1;p1=p2;p2=p;}

printf(\while(1); }

17. 有3个学生,每个学生都包括学号、姓名和成绩,要求找出成绩最高的学生的姓名和成绩。

参考程序:

#include //包含特殊功能寄存器库 #include //包含I/O函数库 struct student {

unsigned char number[10]; unsigned char name[10]; unsigned int grade; }p1[3]; main() {

unsigned char i,j=0; SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

printf(\for (i=0;i<3;i++) {

printf(\scanf(\printf(\scanf(\printf(\scanf(\}

for (i=1;i<3;i++) {

if (p1[i].grade>p1[j].grade) j=i; }

printf(\成绩最高的学生是:%s,成绩是:%d\

24

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

printf(\}

while(1); }

第五章

1.单片机C语言与汇编语言混合编程有哪几种方式?通常采用什么方式? 答:单片机C语言和汇编语言混合编程分为汇编中调用C51函数和C51程序中引用汇编,通常使用的是在C51程序中引用汇编。在C51程序中使用汇编语言有两种情况:一种是汇编程序部分和C51程序部分为不同的模块,或不同的文件,通常由C51程序调用汇编程序模块的变量和函数(也可称为子程序或过程);另一种是嵌入式汇编,即在C51程序中嵌入一段汇编语言程序。

2.简述C51程序调用汇编程序时如何实现参数传递。

答:C51中调用汇编程序进行参数传递时都必须严格遵守C51函数的参数和返回值的相关约定。行参数传递的方式有两种,一种是通过寄存器传递参数,C51中不同类型的实参会存入相应的寄存器,在汇编中只需对相应寄存器进行操作,即可达到传递参数的目的;第二种是通过固定存储区传递。

3.简述嵌入式汇编的实现方法。

答:在C51程序中嵌入汇编程序通常的处理方法如下。 第一步:在C文件中以如下方式嵌入汇编程序。

第二步:在Keil C51软件的Project 窗口右击嵌入汇编程序的C文件,在弹出的快捷菜单中选择Options for ...命令,选中右边的Generate

Assembler SRC File和Assemble SRC File复选框,使检查框由灰色变成黑色(有效)状态。

第三步:根据选择的编译模式,把相应的库文件(如 Small 模式时,是 Keil\\C51\\Lib\\C51S.Lib)加入到工程中,该文件必须作为工程的最后文件。

4.简述C51中调用汇编程序的实现方法。

答:编写为C51调用的汇编程序,参数须按规定的寄存器或存储器传送,程序格式有相应的规则,这些规则比较繁琐,为了便于处理,在实际中我们往

搜索更多关于: 单片机课后习题答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。 21 } 14. 用3种循环结构编写程序实现输出1到10的平方之和。 参考程序: (1)while循环 #include //包含特殊功能寄存器库 #include //包含I/O函数库 void main(void) //主函数 { int i,s=0; //定义整型变量 i=1; SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; while (i<=10) //累加1到10的平方之和在s中 { s=s+i*i; i++; }

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com