}
for(i=500;i>0;i--)
for(j=110;j>0;j--);
【答案】void delay1s( )
4、在横线上将空缺的语句补充完整。 //该程序功能为使第一个数码管显示8 #include
//52系列单片机头文件
sbit dula=P2^6; //申明U1锁存器的锁存端 sbit wela=P2^7; //申明U2锁存器的锁存端 void main() {
① //打开U2锁存器 P0=0xFE; //送入位选信号 wela=0; //关闭U2锁存器
② //打开U1锁存器 P0=0x7F; //送入段选信号 dula=0; //关闭U2锁存器 while(1); //程序停止到这里 }
【答案】①wela=1; ②dula=1;
5、在横线上将空缺的语句补充完整。 //该程序功能为点亮第一个发光二极管 #include
【答案】void main( )
6、在横线上将空缺的语句补充完整。 #include
while(1) { }
led1=0;
第 11 页 共 28 页
led1=1;
/*点亮第一个发光二极管*/ /*关闭第一个发光二极管*/
① //调用延时子函数 ② //调用延时子函数
//大循环
//52系列单片机头文件 //宏定义
//声明单片机P1口的第一位 //声明子函数
//主函数
#define uint unsigned int
led1=0; /*点亮第一个发光二极管*/
}
void delay1s() { }
【答案】①delay1s(); ②delay1s();
7、在横线上将空缺的语句补充完整。 #include
#define uint unsigned int void delayms(uint); void main() { }
void delayms(uint xms) { }
【答案】①sbit led1=P1^0; ②delayms(800);
8、在横线上将空缺的语句补充完整。 #include
{
P1=aa;
② //延时500毫秒
第 12 页 共 28 页
①
//将aa赋初值11111110 //大循环
while(1)
//主函数
//声明子函数 //宏定义
//52系列单片机头文件
uint i,j;
for(i=xms;i>0;i--)
//i=xms即延时约xms毫秒
for(j=110;j>0;j--);
while(1) { }
led1=0; led1=1;
/*点亮第一个发光二极管*/ //延时200毫秒
/*关闭第一个发光二极管*/ //延时800毫秒
delayms(200);
//大循环
//宏定义
//声明子函数 //主函数
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
//子函数体
//52系列单片机头文件
① //声明单片机P1口的第一位为led1
②
}
}
aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa
void delayms(uint xms) { }
uint i,j;
for(i=xms;i>0;i--)
//i=xms即延时约xms毫秒
for(j=110;j>0;j--);
【答案】①aa=0xfe; ②delayms(500);
203、分支结构程序设计
一、填空题(每空1分)
1、 语句一般用做单一条件或分支数目较少的场合,如果超过3个以上分支的程序,可用多分支选择的switch语句。 【答案】if
2、if语句一般用做单一条件或分支数目较少的场合,如果超过3个以上分支的程序,可用多分支选择 的 语句。 【答案】switch
二、单项选择题(每题1分)
1、在C51语言的if语句中,用做判断的表达式为( D )。
A、关系表达式 B、逻辑表达式 C、算术表达式 D、任意表达式
2、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。
A. 缩排位置相同的if B. 在其之前未配对的if C. 在其之前未配对的最近的if D.同一行上的if
六、程序题(每题10分)
1、在横线上将空缺的语句补充完整 #include
//包含头文件REG51.H //定义P1.0引脚位名称为P1_0 //定义P1.1引脚位名称为P1_1 //定义P3.0引脚位名称为P3_0 //定义P3.1引脚位名称为P3_1
//延时函数声明 //主函数
//while循环
//如果P3.0和P3.1状态都为0
void delay(unsigned char i); void main() {
while(1) { if (P3_0==0&&P3_1==0)
{ P1_0=0; P1_1=0; delay(200);
//则点亮左转灯和右转灯
第 13 页 共 28 页
}
else if (P3_0==0) //如果P3.0(左转向灯)状态为1 { P1_0=0; }
else (P3_1==0) delay(200); } else {
; }
//左转灯回到熄灭状态 //右转灯回到熄灭状态
//空语句
//如果P3.1(右转向灯)状态为1
{ P1_1=0; //则点亮右转灯
//则点亮左转灯
delay(200);
P1_0=1; P1_1=1; delay(200); }
//函数名:delay
}
//函数功能:实现软件延时 //形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次 //返回值:无
void delay(unsigned char i) {
unsigned char j,k; for(k=0;k
【答案】if
2、在横线上将空缺的语句补充完整
//功能:采用switch语句实现的模拟汽车转向灯控制程序 #include
void delay(unsigned char i); //延时函数声明 void main() {
unsigned char ledctr; P3=0xff;
//定义转向灯控制变量ledctr //P3口作为输入口,必须先置全1 //读P3口的状态送到ledctr
//主函数
//包含头文件REG51.H //定义无符号字符型变量j和k //双重for循环语句实现软件延时
//延时函数,无符号字符型变量i为形式参数
while(1) { ledctr=P3;
ledctr=ledctr&0x03; //与操作,屏蔽掉高6位无关位,取出P3.0和P3.1引脚的状态(0x03即二进制数00000011B)
第 14 页 共 28 页
(ledctr)
{ case 0:P1_0=1;P1_1=0;break; //如P3.0、P3.1都为0则点亮左、右灯 case 1:P1_1=0; break; //如果P3.1(右转向灯)为0则点亮右灯 case 2:P1_0=0; break; //如果P3.0(左转向灯)为0则点亮左灯
default: ;
//空语句,什么都不做
//延时
} delay(200); P1_1=1; delay(200); } }
//函数名:delay
//函数功能:实现软件延时 //形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次 //返回值:无
void delay(unsigned char i) {
unsigned char j,k; for(k=0;k
【答案】switch
3、在横线上将空缺的语句补充完整
//功能:采用if语句实现的模拟汽车转向灯控制程序 #include
while(1) {
//while循环
if (P3_0==0) P1_0=0; //如果P3.0(左转向灯)状态为0,则点亮左转灯
if (P3_1==0) ; //如果P3.1(右转向灯)状态为1,则点亮右转灯 delay(200); P1_0=1; P1_1=1; delay(200); } }
//函数名:delay
//延时
//左转灯回到熄灭状态 //右转灯回到熄灭状态 //延时
//定义P1.0引脚位名称为P1_0 //定义P1.1引脚位名称为P1_1 //定义P3.0引脚位名称为P3_0 //定义P3.1引脚位名称为P3_1
//延时函数声明 //主函数
//定义无符号字符型变量j和k //双重for循环语句实现软件延时
//延时函数,无符号字符型变量i为形式参数
P1_0=1; //左转灯回到熄灭状态
//右转灯回到熄灭状态
//延时
void delay(unsigned char i);
第 15 页 共 28 页