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
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
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
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
第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
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页)