单片机上机操作考试题部分答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机上机操作考试题

部分答案

集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

1.使得8个发光二极管循环点亮,采用定时器方式0使得每个发光二极管点亮的

时间为0.5s。

#include

#include

#define uchar unsigned char

uchar T_count=0;

//定时中断

void toProc() interrupt 1

{

TH0=(8192-5000)/32; //恢复初值

TL0=(8192-5000)%32;

if(++T_count==100) //0.5s移动一位

{

P0=_crol_(P0,1);

T_count=0;

}

}

//主函数

void main()

{

TMOD=0;

TH0=(8192-5000)/32; //5ms定时

TL0=(8192-5000)%32;

EA=1;

ET0=1;

TR0=1;

P0=0xfe;

while(1);

}

2.完成下面电路所示的功能,K1,K2对应两个开关按键。P1口对应发光二极管的状态

#include

#define uint unsigned int

#define uchar unsigned char

sbit k1=P3^2;

sbit k2=P3^3;

//延时

void delay(uint x)

{

uchar i;

while(--x)

{

for(i=0;i<120;i++);

}

}

//主函数

void main()

{

while(1)

{

if((k1==0)&&(k2==0)) //K1、K2同时按下{

P1=0x00;

delay(10);

}

else if((k1==0)&&(k2==1)) //K1按下,K2不按

{

P1=0xcc;

delay(10);

}

else if((k1==1)&&(k2==0)) //K2按下,K1不按

{

P1=0xf0;

delay(10);

}

else

{

P1=0xff;

delay(10);

}

}

}

3.在一个数码管上循环显示“H”“E”“L”“L”“O” ,循环的时间为1s。#include

#define uchar unsigned char

#define uint unsigned int

uchar code tab[]={0xf6,0xf9,0xb8,0xb8,0xbf};

uchar T_count=0;

uchar i=1;

void t0Proc() interrupt 1

{

TH0=0x3c;

TL0=0xb0;

if(++T_count==10)

{

P0=tab[i];

i=(i+1)%5;

T_count=0;

}

}

void main()

{

TMOD=1;

TH0=0x3c;

TL0=0xb0;

EA=1;

TR0=1;

ET0=1;

P0=tab[0]; //初始化P0口

while(1);

}

4.在6个数码管上分别显示自己学号的后六位数字。#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code tab[]={};//学号自己设置

//延时

void delay(uint x)

{

uchar i;

while(x--)

{

for(i=0;i<100;i++);

}

}

//主函数

void main()

{

uchar k;

uchar wei=0x01;

P0=~tab[0];

P2=0x01;

delay(1000);

while(1)

{

for(k=1;k<6;k++)

{

wei=wei<<1;

P0=~tab[k]; //发送数字段码

P2=wei; //发送位码

delay(1000);

}

}

}

5.做一个简易30s的倒计时秒表,秒表的显示通过8个发光二极管显示出来。#include

#define uchar unsigned char

void delay1s()

{

uchar i;

for(i=0;i<10;i++)

{

TH1=0x3c;

TL1=0xb0;

TR1=1; //启动T1

while(!TF1); //判断T1有无请求

TF1=0;

}

}

void main()

{

uchar i;

uchar t;

TMOD=0x10; //选择T1计时

相关文档
最新文档