东南大学 单片机实验 解答

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

实验一#include

sbit Led1=P1^0;

sbit Led2=P1^1;

void Delay1s(void)

{

unsigned char h,i,j,k;

for(h=10;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}

void main()

{

while(1)

{

Led1=1;

Led2=0;

Delay1s();

Led1=0;

Led2=1;

Delay1s();

}

}

实验二

#include

#include sbit Led1=P1^0;

sbit Led2=P1^1; unsigned char flag, sdata; void Led1Invert(void) {

if(Led1==0)

{

Led1=1;

}

else

{

Led1=0;

}

}

voidInitSerial()

{

SCON=0x50;//将串口设置为方式1,8位数据

PCON=0x00;//不进行2分频

TMOD=0x20;//定时器1设为模式2

TL1=0xfd;//设置波特率为19200=22118400/(32*12*(256-0xfd)) TH1=0xfd;//设置波特率

TR1=1;//启动定时器1

ES=1;//允许串口中断

}

voidSen(unsigned char ch)

{

ES=0;

TI=0;

SBUF=ch;

while(!TI){}//等待发送结束信号

TI=0;

ES=1;

}

void Ser_ISR() interrupt 4 //串口中断号为4

{

ES=0;

if(RI)

{

flag=1;

sdata=SBUF;

RI=0;

}

ES=1;

}

void main()

{

unsigned char temp,state;

InitSerial();

EA=1; //允许系统中断

Led1=0; //点亮Led1

temp=XBYTE[0x8000];//读输入状态

Sen(temp); //将状态号码通过串口发送while(1)

{

if(flag)

{

Led1Flush();

Sen(sdata+1); //将收到的数据加一后回送flag=0;

}

state=XBYTE[0x8000]; //访问按键状态

if(state!=temp) //按键和拨码状态改变

{

temp=state;

Sen(temp);

}

}

}

实验三

#include

#include

sbit SCK=P1^7;

sbit RCK=P1^6;

sbit SER=P1^5;

unsigned char

num[]={0x41,0xf9,0x83,0xa1,0x39,0x25,0x05,0xf1,0x01,0x21,0x11,0x0d,0x47,0x89,0 x07,0x17,0xff}; //先移低位

unsigned char flag, sdata;

voidInitSerial()

{

SCON=0x50;//将串口设置为方式1,8 位数据

PCON=0x00;//不进行2 分频

TMOD=0x20;//定时器1 设为模式2,

TL1=0xfa;//设置波特率为9600

19200=22118400/(32*12*(256-0xfd))

TH1=0xfa;

TR1=1;//启动定时器1

ES=1;//允许串口中断

}

void Ser_ISR() interrupt 4 //串口中断服务程序//串口中断号为4 {

ES=0;

if(RI)

{

flag=1;

sdata=SBUF;

RI=0;

}

ES=1;

}

void delay() //延时0.5秒

{

inti,j;

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

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

}

voidmove_in(unsigned char a) {

unsigned char i;

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

{

SCK=0;

SER=(num[a]>>i)&(0x01);

SCK=1;

}

}

void main()

{

unsigned char state,i,j;

InitSerial(); //初始化串口

EA=1; //允许系统中断

while(1)

{

state=XBYTE[0x8000];

相关文档
最新文档