08092.txt

来自「这个是我写的一个基于8051的电气测试仪的原代码!」· 文本 代码 · 共 93 行

TXT
93
字号
#include <reg52.H>
#include <intrins.h>
//#include <wait.h>

unsigned char code led_dispcode[]={ 0x3f,0x06,0x5b,0x4f,0x66, 
                               		0x6d,0x7d,0x07,0x7f,0x6f};
unsigned dispbit_select[4]={0xfe,0xfd,0xfb,0xf7};
unsigned data dis[5]={0x00,0x00,0x00,0x00,0x00};
unsigned char getdata;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
/*
void delay(short i)
{
i = i;
#pragma asm
	   
	   PUSH B
	   PUSH ACC
	   MOV B,#0FFH
DELAY: NOP
	   NOP
	   DJNZ B,DELAY
	   POP ACC
	   POP B
#pragma endasm

}
*/
void  read_adc0809(void)
{
	P0 = 0XFF;
	ST = 1;
	ST = 0;
	_nop_();
	while(EOC == 0);
	OE = 1;
	getdata = P0;
	OE = 0;
}

void display(void)
{
	unsigned char k;

	dis[4]=getdata;
	dis[3]=dis[4]/51;  
	dis[4]=dis[4]%51;
	dis[4]=dis[4]*10;
	dis[2]=dis[4]/51;
	dis[4]=dis[4]%51;
	dis[4]=dis[4]*10;
	dis[1]=dis[4]/51;
	dis[4]=dis[4]%51;
	dis[4]=dis[4]*10;
	dis[0]=dis[4]/51;

	for(k = 0;k < 4;k++)
	{
		P1=led_dispcode[dis[k]];
		if(k == 3){P1 = P1|0x80;}  
		P2 = dispbit_select[k];
		//Delay8us();
		P2 = 0xff;
	}  
}

void main(void) 
{
	TMOD = 0x02;
	TH0 = 246;
	TL0 = 246;
	ET0 = 1;
	TR0 = 1;
	EA = 1;
		
	ST = 0;
	OE = 0;

  	while(1)
  	{
		read_adc0809();
		display();
	} 
} 
void t0(void) interrupt 1 //using 0
{
	CLK = CLK^0x01;
}

⌨️ 快捷键说明

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