test.c

来自「基于at89s51和adc0809的5v数字电压表」· C语言 代码 · 共 97 行

C
97
字号
#include <REGX51.H>

unsigned char code dispbitcode[]={0xf1,0xf2,0xf4,0xf8,
0x1f,0x2f,0x4f,0x8f};
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned char dispbuf[8]={10,10,10,10,0,0,0,0};
unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
unsigned char i;
unsigned char k,l;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit ALE=P3^7;


void main(void)
{

ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;

ST=1;

while(1)
{
	if(EOC==1)
		{
		OE=1;
		getdata=P0;
		OE=0;
		temp=getdata*235;
		temp=temp/128;
		i=5;
		dispbuf[0]=10;
		dispbuf[1]=10;
		dispbuf[2]=10;
		dispbuf[3]=10;
		dispbuf[4]=10;
		dispbuf[5]=0;
		dispbuf[6]=0;
		dispbuf[7]=0;
		while(temp/10)
			{
			dispbuf[i]=temp%10;
			temp=temp/10;
			i++;
			}
		dispbuf[i]=temp;
		ST=1;
		ST=0;

		}
}
}

void t0(void) interrupt 1 using 0
{
CLK=~CLK;

}

void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==7)
{
P1=P1 | 0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;

}

}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?