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

while(1); }

void test() interrupt 1

{

}

9.完成以下程序的编写

功能说明:采用中断定时器/计数器T1编程,实现从P1.0口输出周期为40ms的高低电平,使发光二极管不断闪烁。 #include bit i;

sbit k1=P1^0;

void chushihua(void ) { TMOD=0x10; EA=1; ET0=1; TR0=1;

TH0=(65536-40000)/256; TL0=(65536-40000)%6; }

void main (void) { chushihua();

第31页(共41页)

}

void t0(void) interrupt {

i=~i;

}

10.完成以下程序的编写

功能说明: 在AT89C51单片机的P2口外接1个共阴极8段数码显示器,采用定时/计数器T0,定时方式,实现0~5数字依次显示,不停循环,显示间隔时间为0.5秒。 #include

unsigned char a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

unsigned char x=0,y=0; void main (void) {

}

void zd() interrupt

第32页(共41页)

{

}

第四题答案 题1:

1、将主程序中斜体部分的程序语句修改为函数,将答案写在程序右边的空白处。功能:5秒闪烁灯。

#include unsigned char i,j,k; yanshi() {

for(i=50;i>0;i--) for(j=200;j>0;j--) for(k=250;k>0;k--);

}

main() { while(P1_0==0) { P2_0=~P2_0; yanshi();

} }

第33页(共41页)

2、将主程序中斜体部分的程序语句修改为函数,将答案写在程序右边的空白处。功能:开关闭合后灯依次向左移点亮。

#include unsigned char a,b; delay05s() { unsigned char i,j,k; for(i=5;i>0;i--) for(j=200;j>0;j--) for(k=250;k>0;k--); }

zuoyi() {

for(a=1;a<=3;a++) { P2=b; delay05s(); b=b<<1; }

} main() { P2=0x00; while(P1_0=

=0) { b=0x01; zuoyi(); } }

3、将主程序中斜体部分的程序语句修改为函数,将答案写在程序右边的空白处。功能:数码管显示数字0645。

#include

第34页(共41页)

unsigned char duanma[10] = {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char weima[4]=

{0x0e,0x0d,0x0b,0x07};

unsigned char xianshi[4]={0,0,0,0}; char jishu1=0; delay10ms() { unsigned char j,k; for(j=20;j>0;j--) for(k=250;k>0;k--); } xs() {

xianshi[0]=duanma[0]; xianshi[1]=duanma[6]; xianshi[2]=duanma[4]; xianshi[3]=duanma[5];

} main() { while(1) { xs();

P2=weima[jishu1]; P1=xianshi[jishu1]; jishu1++; if(jishu1=

=4) {jishu1=0;} delay10ms(); } }

4、将主程序中斜体部分的程序语句修改为函数,将答案写在程序右边的空白处。功能:从上到下流水灯。

#include

第35页(共41页)