//注：若P0口只需要用数码管功能，则锁存器573可以为直通方式
//若P0口需要数码管和其它器件复用,则需要用上573的锁存功能
/***********************头文件*********************/
#include"regx52.h"		   
#define uchar unsigned char
#define uint unsigned int

uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
						0x6d,0x7d,0x07,0x7f,0x6f};  //0~9共阴显示子码

sbit LOCK=P1^0;					//定义锁存端
sbit D1=P1^1;					//数码管位选 第一位
sbit D2=P1^2;					//数码管位选 第二位
sbit D3=P1^3;					//数码管位选 第三位
sbit D4=P1^4;					//数码管位选 第四位

/*******************毫秒级延时函数	*****************/
void delayms(uint ms)
{
   uchar b;
	while(ms--)
	{
		for(b=0;b<125;b++);
	}
}

/***********************主函数	*****************/
void main()
{
	uint i;
 	LOCK=1;						//高电平通，低电平锁
								//此程序因为不复用端口,所以让它全通
	D1=0;						//依次打开全部数码管位选
	D2=0;
	D3=0;
	D4=0;
	while(1)
	{
		for(i=0;i<9;i++)
		{
			P0=dispcode[i];		//向P0口送段码
			delayms(1000);		//延时1S
		}
	}
}
