Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
main()
{
P1 = 0x00;
TMOD = 0x09;
loop:TL0 = 0xAF;
TH0 = 0x3C;
// clear port
// initialize timer 0 as 16 bit timer
// load valur 15535 = 3CAFh so after
// 50000 counts timer 0 will be overflow
pin = 1;
TR0 = 1;
// start timer
while(TF0 == 0) {}
TL0 = 0xAF;
TH0 = 0x3C;
pin = 0;
while(TF0 == 0) {}
goto loop;
}
xample-2: write a program to make 8 to 1 multiplexer with enable signal
#include<reg51.h>
sbit D0 = P0^0;
sbit D1 = P0^1;
sbit D2 = P0^2;
sbit D3 = P0^3;
sbit D4 = P0^4;
sbit D5 = P0^5;
sbit D6 = P0^6;
sbit D7 = P0^7;
sbit S0 = P1^0;
sbit S1 = P1^1;
sbit S2 = P1^2;
sbit EN = P1^7;
sbit pin = P3^5;
main()
{
P3=0x00;P0=0xFF;
TMOD = 0x01;
next:TL0 = 0xAF;
// load count
TH0 = 0x3C;
while(EN==1){}
op is first ip
else if((S0==1)&&(S1==0)&&(S2==0)) pin = D1;
op is second ip
else if((S0==0)&&(S1==1)&&(S2==0)) pin = D2;
else if((S0==1)&&(S1==1)&&(S2==0)) pin = D3;
// same as above
// by default op is cleared
TR0 = 1;
// start timer 0
while(TF0==0){}
means 50ms
TR0 = 0;
// stop timer
goto next;
}
Example-3: take parallel input from port P1 convert it into serial and send it via
P0.0
#include<reg51.h>
sbit sout = P0^0;
sbit D0 = P1^0;
sbit D1 = P1^1;
sbit D2 = P1^2;
sbit D3 = P1^3;
sbit D4 = P1^4;
sbit D5 = P1^5;
sbit D6 = P1^6;
sbit D7 = P1^7;
int i;
void delay(void);
// 1 ms delay
main()
{
for(i=0;i<8;i++)
{
sout = D0;
D0 = D1;
D1 = D2;
D2 = D3;
D3 = D4;
D4 = D5;
D5 = D6;
D6 = D7;
delay();
}
}
void delay()
{
int k
for(k=0;k<1000;k++);
}
SCON=0x40;
TL1=0xFD;
TH1 = 0xFD;
TR1 = 1;
loop:REN = 1;
// start timer 1
// enable reception
while(RI==0){}
RI=0;
ACC = SBUF;
REN = 0;
SBUF = ACC;
while(TI==0){}
TI=0;
goto loop;
}
Example-5: detect an external interrupt on P3.2 and P3.3. Indicate on LEDs
connected on P0.0 & P0.1
#include<reg51.h>
sbit op1=P0^0;
sbit op2=P0^1;
void delay(void);
// 10 ms delay
{
op1=0;
// indication on LED1
delay();
op1=1;
}
void intrupt1(void) interrupt 2
{
op2=0;
// indication on LED2
delay();
op2=1;
}
void delay()
// delay for 10 ms
{
int x;
for(x=0;x<10000;x++);
}
void main()
{
P0=0xFF;
IE=0x85;
while(1);
// continuous loop
// initialize counter to 0
{
TF1=0;
c++;
// increment counter
if(c==100)
{
TR1=0;
// stop timer
LED=0;
// LED off
}
TH1=0x3C;
TL1=0xAF;
// 15535 to count 50 ms
}
void main()
{
P2=0x00;
TMOD=0x90;
// clear op
// set timer 1
TH1=0x3C;
TL1=0xAF;
IE=0x88;
LED=1;
// LED on
TR1=1;
// timer 1 start
while(1);
// continuous loop
Example 7: send ultrasonic wave through P1.0 and receive its echo through
P3.2. generate an interrupt. Calculate the distance of object.
#include <reg51.h>
sbit tx = P1^0; // transmitter pin
int c=0,d=0; // counter and distance
void tmr0(void) interrupt 1 // timer 0 interrupt vector
{
TF0=0;
c++;
TL0 = 0xAF;
TH0 = 0x3C;
}
void int0(void) interrupt 0 // ext interrupt 0 vector
{
TR0 = 0;
// stop timer
d = c*30;
}
main()
{
IE=0x83;
// enable interrupts
IP=0x01;
TMOD = 0x01;
P1 = 0x00;
TL0 = 0xAF;
TH0 = 0x3C;
tx = 1;
// enable transmission
TR0 = 1;
// start timer
while(1);
}