最全单片机参考答案(姜志海)

i++;

if(i==20) { } }

i=0;

P1_1=!P1_1;

//20次到了吗?

2.在8051系统中,已知振荡频率是12MHz,用定时器/计数器T1实现从P1.1产生高电平宽度是10ms,低电平宽度是20ms的矩形波,试编程。

#include unsigned char i; sbit P1_1=P1^1;

void main( ) { i=0; TMOD=0x10;

//T1定时方式1,定时时间10ms

//主函数

TH0=(65536-10000)/256; TL0=(65536-10000)%6; EA=1; ET1=1; TR1=1; while(1); }

void timer1_int(void) interrupt 3 {

13

TH0=(65536-10000)/256; TL0=(65536-10000)%6; i++;

if(i==1) P1_1=0; else if(i==3) { } }

i=0; P1_1=1;

3.用8051单片机的串行口扩展并行I/O口,控制16个发光二极管依次发光,试编程。

#include sbit P1_0=P1^0; sbit P1_1=P1^1;

void main() {

unsigned char i,j; bit flag=1; SCON=0x00; j=0x01; for(;;) {

P1_0=0; P1_1=0; while(flag)

//主函数

//定义位变量

14

{

P1_0=0; SBUF=j; while(!TI){;} P1_0=1;TI=0;

for(i=0;i++;i<=254){;} j=j*2; if(j==0x00)

{ j=0x01; flag=0; } }

while(!flag) { { j=0x01; flag=1; } } }

P1_1=0; SBUF=j; while(!TI){;} P1_1=1;TI=0;

for(i=0;i++;i<=254){;} j=j*2; if(j==0x00)

15

}

4.用8751单片机制作一个模拟航标灯,灯接在P1.7上,INT0接光敏器件,使它具有如下功能:

(1)白天航标灯熄灭;夜间间歇发光,亮2s,灭2s ,周而复始。 (2)将INT0信号作为门控信号,启动定时器定时。 按以上要求编写控制主程序和中断服务程序。

#include unsigned char i; sbit P1_1=P1^1;

void main() { i=0; TMOD=0x09;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; while(1) { } }

//int0=1时启动定时器0

void timer0_int(void) interrupt 1

if(!P3^2)

//int0=0,白天 //P1.7置1,灯灭

P1|=0x80;

16

联系客服:779662525#qq.com(#替换为@)