单片机上机考试习题.docx

上传人:b****5 文档编号:3149230 上传时间:2022-11-18 格式:DOCX 页数:14 大小:15.62KB
下载 相关 举报
单片机上机考试习题.docx_第1页
第1页 / 共14页
单片机上机考试习题.docx_第2页
第2页 / 共14页
单片机上机考试习题.docx_第3页
第3页 / 共14页
单片机上机考试习题.docx_第4页
第4页 / 共14页
单片机上机考试习题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机上机考试习题.docx

《单片机上机考试习题.docx》由会员分享,可在线阅读,更多相关《单片机上机考试习题.docx(14页珍藏版)》请在冰豆网上搜索。

单片机上机考试习题.docx

单片机上机考试习题

实验二流水灯

问题1四灯四键

#include

voidmain()

{

unsignedchari;

P0=0xff;

while

(1)

{i=P1;P0=i;}

}

问题2走马灯

#include

voidmain(void)

{

inti,j,k;

P0=0xfe;

while

(1)

{

i=0xfe;

for(k=0;k<8;k++)

{

P0=i;

i<<=1;

i++;

for(j=0;j<20000;j++);

}

}

}

实验三外部中断

问题1两中断分高低优先级

#include

sbitP15=P1^5;

unsignedinti;

voidmain()

{

EA=1;

EX0=1;

EX1=1;

IT0=1;

IT1=1;

PX1=1;

P0=0X55;

P15=0;

while

(1)

{

P0=0X55;

}

}

voidxx0(void)interrupt0

{

for(i=0;i<60000;i++)P0=0x0f;

}

voidxx1(void)interrupt2

{

P0=0x00;

P15=1;

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

P15=0;

}

问题2一键八灯中断实现+1

#include

sbitP10=P1^0;

chari;

voidmain(void)

{

i=0;

EA=1;

EX0=1;

IT0=1;

while

(1);

}

voidxt0(void)interrupt0

{

i++;

P0=~i;

}

实验四定时器中断

问题1定时器三灯亮灭

#include

sbitP01=P0^1;

sbitP02=P0^2;

sbitP00=P0^0;

chari,j;

main()

{

i=0;

j=0;

TMOD=0X01;

TH0=0Xec;

TL0=0X78;

EA=1;

ET0=1;

TR0=1;

while

(1);

}

voidxx0(void)interrupt1

{

TH0=0Xec;

TL0=0X78;

i++;

if(i==25)

{

i=0;

j++;

if(j==1)

P02=!

P02;

elseif(j==2)

{

P01=!

P01;

P02=!

P02;

}

elseif(j==3)

{

P02=!

P02;

}

elseif(j==4)

{

P00=!

P00;

P01=!

P01;

P02=!

P02;

j=0;

}

}

}

问题2定时器一秒闪一次

#include

sbitP00=P0^0;

chari;

main()

{

i=0;

TMOD=0X01;

TH0=0Xd8;

TL0=0Xf0;

EA=1;

ET0=1;

TR0=1;

P0=0xff;

while

(1);

}

voidxx0(void)interrupt1

{

TH0=0Xd8;

TL0=0Xf0;

i++;

if(i==50)

{i=0;P00=!

P00;}

}

问题3数码管定时器

#include

unsignedcharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedchari,j,k,m,n,dbbuf[2];

voiddesplay()

{

P1=03;

P0=dbbuf[0];

P1=0x02;

for(n=0;n<200;n++);

P1=03;

P0=dbbuf[1];

P1=0x01;

for(n=0;n<200;n++);

}

voidmain()

{

i=0;

j=0;

TMOD=0X01;

TH0=0Xd8;

TL0=0Xf0;

EA=1;

ET0=1;

TR0=1;

while

(1)

{

desplay();

}

}

voidxx0(void)interrupt1

{

TH0=0Xd8;

TL0=0Xf0;

i++;

if(i==100)

{

i=0;

j++;

j=j%100;

k=j/10;

m=j%10;

dbbuf[0]=tab[k];

dbbuf[1]=tab[m];

}

}

实验五串口通信

问题1双机接发

#include

sbitP10=P1^0;

voidmain()

{

TMOD=0X20;

TH1=0XFD;

TL1=0XFD;

TR1=1;

SCON=0X50;

while

(1)

{

while(!

RI);

RI=0;

P0=SBUF;

}

}

问题2虚拟

#include

sbitP10=P1^0;

voidmain()

{

TMOD=0X20;

TH1=0XFD;

TL1=0XFD;

TR1=1;

SCON=0X50;

while

(1)

{

while(!

RI);

RI=0;

P0=SBUF;

SBUF=P0;

while(!

TI);

TI=0;

}

}

问题六步进电机

问题1测量步距角约0.17°不用软件仿真直接连硬件

#include

unsignedinti,j;

voidmain()

{

while

(1)

{

for(j=0;j<200;j++)

{

P1=0xfe;

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

P1=0xfd;

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

P1=0xfb;

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

P1=0xf7;

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

}

while

(1);

}

}

问题2使步进电机转180°不用软件仿真直接连硬件

#include

unsignedinti,j;

voidmain()

{

while

(1)

{

for(j=0;j<267;j++)

{

P1=0xfe;

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

P1=0xfd;

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

P1=0xfb;

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

P1=0xf7;

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

}

while

(1);

}

}

问题3使步进电机转起来

#include

unsignedinti;

voidmain()

{

while

(1)

{

P1=0xfe;

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

P1=0xfd;

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

P1=0xfb;

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

P1=0xf7;

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

}

}

实验7电子琴

#include

chark;

sbitP00=P0^0;

sbitP10=P1^0;

sbitP11=P1^1;

sbitP12=P1^2;

sbitP13=P1^3;

sbitP14=P1^4;

sbitP15=P1^5;

sbitP16=P1^6;

unsignedintcodetab[]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06};

voidmain()

{TMOD=0X01;

EA=1;

ET0=1;

P00=0;

while

(1)

{

if(P10==0)

{

k=0;

TH0=tab[0]/256;

TL0=tab[0]%256;

TR0=1;

while(P10==0);

TR0=0;

P00=0;

}

elseif(P11==0)

{

k=1;

TH0=tab[1]/256;

TL0=tab[1]%256;

TR0=1;

while(P11==0);

TR0=0;

P00=0;

}

elseif(P12==0)

{

k=2;

TH0=tab[2]/256;

TL0=tab[2]%256;

TR0=1;

while(P12==0);

TR0=0;

P00=0;

}

elseif(P13==0)

{

k=3;

TH0=tab[3]/256;

TL0=tab[3]%256;

TR0=1;

while(P13==0);

TR0=0;

P00=0;

}

elseif(P14==0)

{

k=4;

TH0=tab[4]/256;

TL0=tab[4]%256;

TR0=1;

while(P14==0);

TR0=0;

P00=0;

}

elseif(P15==0)

{

k=5;

TH0=tab[5]/256;

TL0=tab[5]%256;

TR0=1;

while(P15==0);

TR0=0;

P00=0;

}

elseif(P16==0)

{

k=6;

TH0=tab[6]/256;

TL0=tab[6]%256;

TR0=1;

while(P16==0);

TR0=0;

P00=0;

}

}

}

voidxx0(void)interrupt1

{

TH0=tab[k]/256;

TL0=tab[k]%256;

P00=!

P00;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1