?? tlc2543.c
字號:
#include <reg52.h>
#define BYTE unsigned char
#define WORD unsigned int
#define START P1^5
#define AIN0 0X40 //address and modern
#define AIN1 0X41
#define AIN2 0X42
#define AIN3 0X43
#define AIN4 0X44
#define AIN5 0X45
#define AIN6 0X46
#define AIN7 0X47
#define AIN8 0X48
#define AIN9 0X49
#define AINA 0X4a
#define VINB 0X4b //200
#define VINC 0X4c //000
#define VIND 0X4d //3FF
code BYTE SHOWCODE[]={0x02,0x9e,0x24,0x0c,0x98,0x48,
// 0 1 2 3 4 5
0x40,0x1e,0x00,0x08,0x10,0xc0,
//6 7 8 9 A B
0x62,0x84,0x60,0x70,0xff,0xfc};
//C D E F 10(滅) -
sbit CLOCK =P1^0;
sbit AD_EOC =P1^1;
sbit AD_CS =P1^2;
sbit DATA_OUT =P1^3;
sbit ADDR_IN =P1^4;
void delay1ms(WORD x);
WORD TLC2543(BYTE);
WORD computer(WORD[9]);
void showX(WORD);//bit 16 or 10 0=10
WORD r;
void main(void)
{WORD x[9];
int i;
BYTE addrx;
EA=0;
while(START==0)
{
delay1ms(3);
addrx=AIN7;
for(i=0;i<9;i++)
{
x[i]=TLC2543(addrx);
}
r=computer(x);
showX(r);
delay1ms(10);
/////////
delay1ms(10);
delay1ms(100);
delay1ms(100);
delay1ms(10);
addrx=AIN0;
for(i=0;i<9;i++)
{
x[i]=TLC2543(addrx);
}
r=computer(x);
showX(r);
delay1ms(10);
delay1ms(100);
delay1ms(100);
delay1ms(10);
}
}
WORD TLC2543(BYTE x)
{
WORD i,volt;
BYTE al=0,ah=0;
CLOCK=0;
AD_CS=0;
for(i=0;i<8;i++)/*address select and moden control*/
{ADDR_IN=(bit)(x&0x80); CLOCK=1; CLOCK=0;x<<=1;}
for(i=0;i<4;i++) /*waite 4 clock*/
{CLOCK=1; CLOCK=0;}
AD_CS=1;
while(AD_EOC==0);
AD_CS=0;
for(i=0;i<4;i++) /*read d11--d8*/
{DATA_OUT=1;CLOCK=1;ah<<=1;
if(DATA_OUT==1)
ah|=0x01;
CLOCK=0;}
for(i=0;i<8;i++) /*read d7--- d0*/
{DATA_OUT=1;CLOCK=1;al<<=1;
if(DATA_OUT==1)
al|=0x01;
CLOCK=0;}
AD_CS=1;
volt=(WORD)ah;volt<<=8;volt|=al;/*computer volt value*/
return(volt);
}
WORD computer(WORD x[9])
{int i,temp;
WORD sum=0;
for(i=1;i<8;i++)
{if(x[0]>x[i])
{temp=x[0]; x[i]=temp;x[0]=x[i];}
if(x[9]<x[i])
{temp=x[0]; x[i]=temp;x[0]=x[i];}
}
for(i=1;i<8;i++)
{sum=sum+x[i];}
r=sum/8 ;
return(r);
}
void showX(WORD b)
{
TI=0;
SBUF=SHOWCODE[(b%0x100)%0x10];
while(TI==0);
TI=0;
SBUF=SHOWCODE[(b%0x100)/0x10];
while(TI==0);
TI=0;
SBUF=SHOWCODE[b/0x100];
while(TI==0);
}
void delay1ms(WORD x)
{
WORD j;
;
;
;
while(x--!=0)
{
for(j=0;j<80;j++)
;}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -