(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=x
执行结果: input data x,y? 1 2
x y x
#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
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
unsigned char x,y,z,m; SCON=0x52; TMOD=0x20; TH1=0XF3; TR1=1;
printf(\ scanf(\ printf(\
if (x printf(\ while(1); } //串口初始化 //输出提示信息 //输出