Beruflich Dokumente
Kultur Dokumente
ASSIGNMENT
LAB 3
NOUMAN AFTAB
BSSE-8
REG # 2456
11/3/2011
SUBMITTED TO:
P2 P3_0
Universal P3_1
Counter P3_2
#include <AT89X51.H>
int CU=0,CD=255,CUSS=0,CDSS=255;
main()
{
while(1)
{
if((P3_0==0)&&(P3_1==0)&&(P3_2==0))
{
CU++;
P2=CU;
}
if((P3_0==0)&&(P3_1==0)&&(P3_2==1))
{
int ss=P1;
int i;
for(i=0;i<ss;i++)
{
CUSS++;
P2=CUSS;
}
}
if((P3_0==0)&&(P3_1==1)&&(P3_2==0))
{
CD--;
P2=CD;
}
if((P3_0==0)&&(P3_1==1)&&(P3_2==1))
{
int ss=P1;
int i;
for(i=0;i<ss;i++)
{
CDSS--;
P2=CDSS;
}
}
if((P3_0==1)&&(P3_1==0)&&(P3_2==0))
{
if(P2%2==0)
{
CU=CU+2;
P2=CU;
}
else
{
CU++;
P2=CU;
}
}
if((P3_0==1)&&(P3_1==0)&&(P3_2==1))
{
if(P2%2==0)
{
CD=CD-2;
P2=CD;
}
else
{
CD--;
P2=CD;
}
}
if((P3_0==1)&&(P3_1==1)&&(P3_2==0))
{
if(P2%2!=0)
{
CU=CU+2;
P2=CU;
}
else
{
CU++;
P2=CU;
}
}
if((P3_0==1)&&(P3_1==1)&&(P3_2==1))
{
if(P2%2!=0)
{
CD=CD-2;
P2=CD;
}
else
{
CU--;
P2=CU;
}
}
}
}
SCREEN SHOTS
RING COUNTER : An implementation of ring counter that can shift
left or right on run time.
#include <AT89X51.H>
main()
{
unsigned char ring_right=RIGHT;
unsigned char ring_left=LEFT;
P1=0;
while(1)
{
if(P0_0==0)
{
if(P1==0)
{
P1=RIGHT;
ring_right=RIGHT;
}
else
{
ring_right=ring_right>>1;
P1=ring_right;
}
}
else if(P0_0==1)
{
if(P1==0)
{
P1=LEFT;
ring_left=LEFT;
}
else
{
ring_left=ring_left<<1;
P1=ring_left;
}
}
}
}
SCREEN SHOTS
JOHNSON COUNTER:
#include <AT89X51.H>
shift_high();
shift_low();
shift_low()
{
JC=254;
P1=JC;
while(1)
{
JC=(JC<<1);
P1=JC;
if(P1==0)
{
shift_high();
}
}
}
shift_high()
{
JC=128;
P1=JC;
while(1)
{
JC=JC |(JC>>1);
P1=JC;
if(P1==255)
{
shift_low();
}
}
}
main()
{
P1=JC;
shift_high();
}
SCREEN SHOTS