单片机C51程序设计课后习题答案(复习专用)(4)

2019-08-31 14:00

(7) 中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其他程序调用。

8. 按给定的存储类型和数据类型,写出下列变量的说明形式。 (1)

在data区定义字符变量val1。

char data val1; (2)

在idata区定义整型变量val2。

int idata val2; (3)

在xdata区定义无符号字符型数组val3[4]。

unsigned char xdata val3[4]; (4)

在xdata区定义一个指向char类型的指针px。

char xdata *px; (5)

定义可寻址位变量flag。

bit flag; (6)

定义特殊功能寄存器变量P3。

sfr P3=0xa0; (7)

定义特殊功能寄存器变量SCON。

sfr SCON=0x98; (8)

定义16位的特殊功能寄存器T0。

sfr16 T0=0x8a;

9. 写出下列关系表达式或逻辑表达式的结果,设a=3,b=4,c=5。 (1) (2) (3) (4) 10.

a+b>c&&b= =c 结果:假 a||b+c&&b-c 结果:真 !(a>b)&&!c||1 结果:真 !(a+b)+c-1&&b+c/2 结果:假 写出下列C51程序的执行结果。

(1)

#include

extern serial_initial(); main() {

int x,y,z;

serial_initial(); x=y=8;z=++x;

printf(\ x=y=8;z=x++;

printf(\ x=y=8;z=--x;

printf(\ x=y=8;z=x--;

printf(\ printf(\ while(1); }

结果: 8 9 9

8 8 9 8 7 7 8 8 7

(2)

#include

extern serial_initial();main() {

int x,y,z;

serial_initial();

printf(\ scanf(\

printf(\ printf(\

printf(\ z=xy; printf(\ z=x>=y; printf(\ z=x!=y; printf(\ z=x==y; printf(\ while(1); }

执行结果: input data x,y? 1 2

x y xy x>=y x!=y x==y 1 2 1 1 0 0 1 0 (3)

#include

extern serial_initial(); main() {

int x,y,z;

serial_initial();

printf(\scanf(\

printf(\printf(\

z=!y; printf(\z=x||y; printf(\z=x&&y; printf(\printf(\printf(\while(1); }

执行结果: input data x, y ? x y !x x||y x&&y 1 2 0 1 1 That is all

(4)

#include

extern serial_initial(); main() {

int a,b;

unsigned int x,y; serial_initial();

a=b=0xaa55;x=y=0xaa55;

printf(\ a=a<<1;b=b>>1; x=x<<1;y=y>>1;

printf(\printf(\ printf(\

printf(\

while(1); }

执行结果:

a=aa55 b=aa55 x=aa55 y=aa55 a=54aa b=d52a x=54aa y=552a That is all. 11.

break和continue语句的区别是什么?

答:break语句可以跳出switch结构,使程序继续执行switch结构后面的一个语句。break语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。

continue语句用在循环结构中,用于结束本次循环,跳过循环体中continue下面尚未执行的语句,直接进行下一次是否执行循环的判定。 continue语句和break语句的区别在于:continue语句只是结束本次循环而不是终止整个循环;break语句则是结束循环,不再进行条件判断。 12. 用分支结构编程实现:输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。

参考程序:

#include

#include void main(void) {

unsigned char x; SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; while(1) {

printf(\ //输出提示信息 scanf(\ switch(x) {

case '1':printf(\case '2':printf(\case '3':printf(\case '4':printf(\case '5':printf(\default: printf(\}

if (x=='5') break; }

while(1); } 13. 输入3个无符号的字符数据,要求按由大到小的顺序输出。 参考程序:

#include #include void main(void) {

unsigned char x,y,z,m; SCON=0x52; TMOD=0x20; TH1=0XF3; TR1=1;

printf(\ scanf(\ printf(\

if (x

printf(\ while(1); }

//串口初始化

//输出提示信息

//输出


单片机C51程序设计课后习题答案(复习专用)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:外国近现代建筑史试题库 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: