Вы находитесь на странице: 1из 4

/*sbit PWM_pin1 = P2^0;

sbit PWM_pin2 = P2^1;


sbit echo=P3^3;
sbit trig=P2^4;
int dist=0;
int repeat=1;
int timer=0;
int i=0;
void measure();
void port_init(void);
void InitTimer0(void);
void InitTimer1(void);
void InitPWM(void);
void write_PWM(int);
unsigned char PWM = 0;
unsigned int temp = 0;
void SerialInitialize(void);
void SendByteSerially(void);
#define PWM_Freq_Num 1

void port_init(void)
{
P0 = 0x00;
P2 = 0x00;
P3 =0x04;
}
void measure(){
repeat=1;
InitTimer1();
trig=1;
for(i=0;i<10;i++);
trig=0;
TR1=1;
while(repeat){}

}
void InitTimer1(){
TH1=0x00;
TL1=0x00;
TMOD&=0x0F;
TMOD|=0x10; //timer to find time
elapsed in return of echo
ET1 = 1;
EA = 1;
}
void timer1_interrupt() interrupt 2
{
TR1=0;
timer&=0x00;
timer|=TH1;
timer=(timer<<8);
timer|=TH0;
repeat=0;
dist=(timer*(1/100000)*0.342)/2;
}

/*
int main(void)
{
port_init();
t

InitPWM();
write_PWM(127);
}

void write_PWM(int a){

PWM = a; // Make 50% duty cycle of PWM


while(1) // Rest is done in Timer0 interrupt
{}

// Init CCT function

// Timer0 initialize
void InitTimer0(void)
{
TMOD &= 0xF0; // Clear 4bit field for timer0
TMOD |= 0x01; // Set timer0 in mode 1 = 16bit mode

TH0 = 0x00; // First time value


TL0 = 0x00; // Set arbitrarily zero

ET0 = 1; // Enable Timer0 interrupts


EA = 1; // Global interrupt enable

TR0 = 1; // Start Timer 0


}

// PWM initialize
void InitPWM(void)
{

InitTimer0(); // Initialize timer0 to start generating interrupts


// PWM generation code is written inside the Timer0
ISR
}

// Timer0 ISR
void Timer1_ISR (void) interrupt 1
{
TR1 = 0; // Stop Timer 0

if(PWM_pin1) // if PWM_pin1 is high


{
PWM_pin1 = 0;
temp = (255-PWM)*PWM_Freq_Num;
TH1 = 0xFF - (temp>>8)&0xFF;
TL1 = 0xFF - temp&0xFF;
}
else // if PWM_pin1 is low
{
PWM_pin1 = 1;
temp = PWM*PWM_Freq_Num;
TH1 = 0xFF - (temp>>8)&0xFF;
TL1 = 0xFF - temp&0xFF;
}

TF1 = 0; // Clear the interrupt flag


TR1 = 1; // Start Timer 0
}
*/

///////////////////////////////////////////////////////////code for printing on LCD

sbit rs=P1^3;
sbit rw=P1^4;
sbit e= P1^5;
void delay(unsigned int);
void cmd(unsigned char);
void dat(unsigned char);

void printmeasure(int dist)


{
unsigned char ch[]="DISTANCE";
unsigned char ch1;
unsigned int i,j,k;

cmd(0x38);
cmd(0x01);
cmd(0x0c);
cmd(0x83);
cmd(0x06);

for(i=0;ch[i]!='\0';i++)
dat(ch[i]);

cmd(0xc3);
ch1=((dist/10)+48);
dat(ch1);
ch1=a;
dat((dist%10)+48);
/*
while(1){
for(k=0;k<16;k++)
{
cmd(0x1c);
}
}
*/
}
void delay(unsigned int t)
{
unsigned int i,j;
e=1;
for(i=0;i<t;i++)
for(j=0;j<1275;j++);
e=0;
}

void cmd(unsigned char ch)


{
rs=0;
rw=0;
P2=ch;
delay(20);
}
void dat(unsigned char ch)
{

rs=1;
rw=0;
P2=ch;
delay(20);
}

void InitTimer1(){
TMOD&=0x0F;
TMOD|=0x10; /*initialize
Timer*/
//TF1=0;
//TR1 = 0;
//ET1=0;
}

/*void Delay_us()
{
TL1=0xF5;
TH1=0xFF;
TR1=1;
while (TF1==0){}
TR1=0;
TF1=0;
}
*/

Вам также может понравиться