我的故事
高一 记叙文 1398字 225人浏览 forget2

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6; //数码管段选锁存端

sbit wela=P2^7; ////数码管位选锁存端

uchar code table[]={ //共阴数码管显示编码

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uint a;

uchar gao,di,ak,i;

uchar we1,we2,we3,we4,we5,we6;

void delay(uint z) //延时子函数

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void display(uchar we1,uchar we2,uchar we3,uchar we4,uchar we5,uchar we6) {

dula=1;

P0=table[we1]; //送段数据

dula=0;

P0=0xff; //送位数据前关闭所有显示,防止打开位选锁存后段选数据通过位选锁存器

wela=1;

P0=0xfe;

wela=0;

delay(1);

dula=1;

P0=table[we2];

dula=0;

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

delay(1);

dula=1;

P0=table[we3];

dula=0;

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

delay(1);

dula=1;

P0=table[we4];

dula=0;

P0=0xff;

wela=1;

P0=0xf7;

wela=0;

delay(1);

dula=1;

P0=table[we5];

dula=0;

P0=0xff;

wela=1;

P0=0xef;

wela=0;

delay(1);

dula=1;

P0=table[we6];

dula=0;

P0=0xff;

wela=1;

P0=0xdf;

wela=0;

delay(1);

}

void main()

{

TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd;

TL1=0xfd;

TR1=1;

REN=1;

SM0=0;

SM1=1; //设置串口方式1

EA=1;

ES=1;

while(1)

{

if(i==4) //判断标志变量

{

i=0;

ES=0;

a=(gao*256)+di; //数据转换

we1=a/100000;

we2=a%100000/10000;

we3=a%10000/1000;

we4=a%1000/100;

we5=a%100/10;

we6=a%10;

display(we1,we2,we3,we4,we5,we6);

ES=1;

}

}

}

void ser() interrupt 4 //串口中断

{

while(RI!=1);

RI=0; //清接收中断标志

ak=SBUF;

switch(i) //接收计算机发过来的数据,带校验码 {

case 0:if(ak==16){i=1;}else{i=0;}break; case 1:gao=ak;i=2;break;

case 2:di=ak;i=3;break;

case 3:if(ak==17){i=4;}else{i=0;}break; }

}

我的故事84篇同标题作文
换一换