标题: 新手写的双灯循环亮的程序 [打印本页]

作者: zls2898230    时间: 2016-7-19 01:01
标题: 新手写的双灯循环亮的程序
#include<reg51.h>
#include<absacc.h>
#define PA XBYTE[0xcfa0]
#define PB XBYTE[0xcfa1]
#define PC XBYTE[0xcfa2]
#define CTL8255 XBYTE[0xcfa3]
unsigned char table1[]={21,22,23,24,25,26,27,28,29,30};
unsigned char table2[]={0,0,0,0,0,0,0,0,0,0};
unsigned char LEDSEG[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X51,0X79,0X71};
unsigned char i=0,j=0,k=0;
unsigned char a;
void Delay(unsigned int u);
void send();
void recv();
void display();
void main()
{
  TMOD=0X20;
  TH1=TL1=249;
  TR1=1;
  SCON=0X50;
  PCON=0X00;
  IE=0X90;
  CTL8255=0X80;
while(1)
{ send();
   display();
}
}
void send()
{
a=table1[i++];
a=a/10*16+a%10;
SBUF=a;
Delay(50);
if(i==10)i=0;
}
void recv()
{
  table2[j++]=SBUF;
  if(j==10)j=0;
}
void display()
{if(j!=0)
  {P1=table2[k++];
  PB=0XFE;
  PA=LEDSEG[a%16];
  Delay(10);
  PB=0xFD;
  PA=LEDSEG[a/16];
  Delay(1000);
  if(k==10) k=0;
  }
}
void ser() interrupt 4
{if(TI==1) TI=0;
  if(RI==1)
  {RI=0;recv();}
}
void Delay(unsigned int u)
{unsigned char i;
while(u--)
{for(i=0;i<125;i++);}
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1