找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2534|回复: 0
收起左侧

新手写的双灯循环亮的程序

[复制链接]
ID:134194 发表于 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++);}
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表