#include <REGX51.H>
#include"intrins.h"
sbit rs=P3^7;
sbit en=P2^4;
sbit Hout=P1^7;
sbit Lout=P1^6;
unsigned int temp;
unsigned char dd[]=" Welcome";
unsigned char dd1[]="Our company";
void w1602c(unsigned char dat)
{
char i;
P3 &=~0x46;
P3 |=((dat>>4) & 0x06)|((dat>>1)&0x40);
P1 &=~0x3E;
P1 |=((dat<<1) & 0x3E);
rs=0;
en=0;
i=6;
while(i--);
en=1;
i=8;
while(i--);
en=0;
}
void w1602d(unsigned char dat)
{
char i;
P3 &=~0x46;
P3 |=((dat>>4) & 0x06)|((dat>>1)&0x40);
P1 &=~0x3E;
P1 |=((dat<<1) & 0x3E);
rs=1;
en=0;
i=6;
while(i--);
en=1;
i=8;
while(i--);
en=0;
}
void init()
{
w1602c(0x38);
w1602c(0x06);
w1602c(0x0c);
w1602c(0x01);
}
void InitADC()
{
P1ASF =0xff; //P10
ADC_CONTR =0x80;//ON_POWER
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void main()
{
unsigned char i,t,nn;
unsigned int k;
init();
CLK_DIV |=0x20;
while(1)
{
InitADC(); //on exchange power
ADC_CONTR =0x88; //start exchange
nn=5;
while(nn--);
//while(!(ADC_CONTR & 0x10));//wait for AD exchenge end
ADC_CONTR =0x00;
temp =ADC_RES; //read high 8bit to temp
temp =temp<<2;
temp |=ADC_LOW2;//read low 2bit to temp
if(t>=60)
t=0;
else
t++;
if(t>50) //write high
{
Hout=1;
Lout=0;
}
if(t<10) ////write low
{
Hout=0;
Lout=1;
}
if((t<=50)&&(t>=10)) //write normal
{
Hout=0;
Lout=0;
}
w1602c(0x80);
w1602d(0x30+temp/1000);
w1602d(0x30+(temp%1000)/100);
w1602d(0x30+((temp%1000)%100)/10);
w1602d(0x30+temp%10);
k=10000;
while(k--);
w1602c(0xc0);
for(i=0;i<12;i++)
{
w1602d(dd1[i]);
}
k=10000;
while(k--);
}
}