#include<reg52.h>
#include<absacc.h> //定义8255A的绝对地址时用,必须包含此库函数
#include<intrins.h>
/***********宏声明***********/
#define uint unsigned int
#define uchar unsigned char
#define D8255 XBYTE[0x7f03] //8255控制口地址
#define D8255A XBYTE[0x7f00] //8255 PA口地址
#define D8255B XBYTE[0x7f01] //8255 PB口地址
#define D8255C XBYTE[0x7f02] //8255 PC口地址
sbit A0=P3^0;
sbit A1=P3^1;
char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //设段码
void delay(uint x)
{
uint i;
while(x--) //延时约x毫秒
for(i=0;i<123;i++);
}
void main()
{
uchar i,t=0x0fe;
D8255=0x80; //送出控制字给8255A的控制口 ,A、B、C均为输出
while(1)
{
for(i=0;i<10;i++)
{
A0=0;
A1=0;
D8255A=table[i]; //向PA口送出数据
delay(200);
A0=1;
A1=0;
D8255B=0x55; //向PB口送出数据
delay(200);
A0=0;
A1=1;
delay(200);
D8255C=~t; //向PC口送出数据
t=_crol_(t,1); //t循环左移1位
}
}
}