《单片机(C51)技术》复习题 下载本文

a=0; P2=0X3F;P3=0X3F; while(1)

{ if (P1!=0xff) delay(); if(P1!=0xff) {

switch(P1)

{case 0xfe:a++;P2= b[a/10] ;P3=b[a] ;break; case 0xfd:a--; P2= b[a/10] ;P3=b[a] ;break; case 0xfb:a=0; P2= b[a/10] ;P3=b[a] ;break; }

if(a==99) a=0;

while(P1!=0xff) ; } } }

分别说明P1为0xfe时功能 ,P1为0xfd时功能 ,P1为0xfb时功能 。 22.#include

int a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; b[2]={0x01,0x02}; int c=60,i,x[2],j,k; main()

{TMOD=0x10; TH1=0X9E; TL1=0X58; EA=1; ET1=1; TR1=1; while(1) {

x[0]=c/10; x[1]=c; for(i=0;i<2;i++) {P3=b[i]; P2=a[x[i]];

for(k=120;k>0;k--); } } }

void ds() interrupt 3 { TH1=0X9E; TL1=0X58; j++; if(j==40)

第6页(共41页)

{j=0; c--; } }

定时时间为 ,中断源编号为 ,并简要说明其功能 。 23.#include main() {

TMOD=0x01; TH0=0XB1; TL0=0XE0; EA=0; ET0=0; TR0=1; while(1) {if(TF0==1) {TF0=0;

TH0= ; TL0= ; P1_0=~P1_0; } } }

说明其功能 。 24.

#include main( ) {while(1)

switch (P1)

{case 0xfe :P2=0x01;break; case 0xfd:P2=0x02; break; case 0xfb:P2=0x04; break; case 0xf7:P2=0x08; break; case 0xef:P2=0x10; break; case 0xdf:P2=0x20; break; case 0xbf:P2=0x40; break; case 0x7f:P2=0x80; break; default:P2=0xff; }}

P1=0xbf时P2= , P1=0xfe时P2= , P1=0xbe时 P2= 。 第三题 改错

1.本小题共有5处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改

第7页(共41页)

正后的结果写在答题卡相应位置。每空1分,错改漏改均不得分。

行号 程序

1 include 2 void ys(void) 3 {

4 unsigned char j,k; 5 for(i=2;i>0;i--) 6 for(j=200;j>0;j--) 7 for(k=250;k>0;k--) 8 } 9 void main (void) 10 {

11 unsigned char j,k; 12 j=0x01

13 for(k=0;k<8;k++) 14 { 15 P2=~j; 16 ys; 17 j=j<<1; 18 } 19 }

①错误行号 修改为 ②错误行号 修改为

③错误行号 修改为 ④错误行号 修改为 ⑤错误行号 修改为

2.本小题共有5处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改

正后的结果写在答题卡相应位置。每空1分,错改漏改均不得分。

行号 程序

1 #include 2 unsigned char i; 3 bit D1=P1^1;

第8页(共41页)

4 void zd() interrupt 3 5 {

6 THo=(65536-50000)/256; 7 TLo=(65536-50000)%6; 8 i++; 9 if(i==20) 10 { 11 i=0; 12 D1=!D1; 13 } 14 } 15 main() 16 {

17 tmod=0x01;

18 TH0=(65536-50000)/256; 19 TL0=(65536-50000)%6; 20 EA=1; 21 ET0=1; 22 TR0=1; 23 i=0; 24 while(1); 25 }

①错误行号 修改为 ②错误行号 修改为

③错误行号 修改为 ④错误行号 修改为 ⑤错误行号 修改为

3.本小题共有5处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改

正后的结果写在答题卡相应位置。每空1分,错改漏改均不得分。

行号 程序

1 #include{reg51.h} 2 unsigned char i;

第9页(共41页)

3 bit D1=P1^1;

4 void zd() interrupt 2 5 {

6 TH0=(65536-50000)/256; 7 TL0=(65536-50000)%6; 8 i++

9 if(i==20) 10 { 11 i=0; 12 D1=!D1; 13 } 14 } 15 main() 16 {

17 TMOD=0x01;

18 TH0=(65536-50000)/256; 19 TL0=(65536-50000)%6; 20 EA=1; 21 ET0=1; 22 TR0=1; 23 i=0; 24 while(1) 25 }

①错误行号 修改为 ②错误行号 修改为

③错误行号 修改为 ④错误行号 修改为 ⑤错误行号 修改为

4.本小题共有5处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改正后的结果写在答题卡相应位置。每空1分,错改漏改均不得分。

行号 程序

1 #include 2 void ys1s(void) 3 {

4 unsigned char i,j,k 5 for(i=10;i>0;i--) 6 for(j=200;j>0;j--) 7 for(k=250;k>0;k--); 8 }

9 void main()

第10页(共41页)