📄 tlc8031.c
字号:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit adcs = P1^2;
sbit adclk = P1^0;
sbit addt = P1^4;
uchar adres;
uint admax;
uint admin;
uchar adcount;
uint adsum;
uchar nowtemp;
uchar t_adc;
/*******************************************************************/
unsigned char code temptab[]=
{
99,98,97,96,95,94,93,92,91,90,
89,89,88,87,86,85,85,84,83,82,
82,81,80,80,79,78,78,77,77,76,
75,75,74,73,73,72,71,71,70,70,
69,69,68,68,67,67,66,66,65,65,
64,64,63,63,62,62,61,61,60,60,
59,59,59,58,58,57,57,57,56,56,
55,55,54,54,53,53,52,52,51,51,
50,50,50,49,49,49,48,48,48,47,
47,47,46,46,45,45,45,44,44,43,
43,42,42,41,41,41,40,40,40,39,
39,39,38,38,38,37,37,36,36,36,
35,35,34,34,34,33,33,32,32,31,
31,30,30,30,29,29,28,28,27,27,
27,26,26,26,25,25,24,24,23,23,
23,22,22,21,21,20,20,20,19,19,
19,18,18,17,17,16,16,15,15,14,
14,13,13,12,12,11,11,10,10,9,
8,8,7,7,6,5,5,4,3,3,
2,1,1,0
};
/*******************************************************************/
void delay(void)
{
_nop_();
_nop_();
_nop_();
}
/*******************************************************************/
unsigned char getad(void)
{
unsigned int data k=0;
unsigned char data i,j;
adcs=1;
delay();
adclk=0;
delay();
adcs=0;
adclk=1;
delay();
adclk=0;
delay();
adclk=1;
delay();
adclk=0;
delay();
for(i=0;i<8;i++)
{
delay();
if (addt==1) j=1;
else j=0;
k=(k<<1)|j;
adclk=1;
delay();
adclk=0;
}
delay();
adclk=1;
delay();
adclk=0;
delay();
adclk=1;
delay();
adclk=0;
delay();
adclk=1;
adcs=1;
return(k);
}
/*******************************************************************/
void adchand(void)
{
if(t_adc==0)
{
t_adc=100; /* 100毫秒 */
adres=getad();
if (adres>admax) admax=adres;
else if(adres<admin) admin=adres;
adsum=adsum+adres;
adcount--;
if(adcount==0)
{
adres=(unsigned char)((adsum-admax-admin)/8);
if(adres>225) nowtemp=0;
else if(adres<32) nowtemp=99;
else
nowtemp=temptab[adres-32];
adsum=0;
admax=0;
admin=0xffff;
adcount=10;
}
}
}
void timer0(void) interrupt 1 using 1 /*1毫秒定时中断*/
/*定时器0*/
{
TH0=0xfc;
TL0=0x21;
if (t_adc!=0) t_adc--;
}
/*******************************************************************/
void main()
{
TMOD=0X21;
TH0=0xfc;
TL0=0x72;
IE=0x02;
TR0=1;
EA=1;
adsum=0;
admax=0;
admin=0xffff;
adcount=10;
while(1)
{
adchand();
_nop_();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -