You are on page 1of 9

MICROPROCESSOR ARCHITECTURE

ASSIGNMENT
LAB 3

NOUMAN AFTAB
BSSE-8
REG # 2456
11/3/2011

SUBMITTED TO:

SIR M. AQEEL IQBAL


FOUNDATION UNIVERSITY INSTITUTE OF ENGINEERING AND MANAGEMENT
SCIENCES
PROBLEM #1 :
UNIVERSAL COUNTER

P2 P3_0
Universal P3_1
Counter P3_2

P1 (Self Stopping Value)

P3_0 P3_1 P3_2 OPERATION


0 0 0 Count Up (Recycling)
0 0 1 Count Up (Self Stop)
0 1 0 Count Down (Recycling)
0 1 1 Count Down (Self Stop)
1 0 0 Count Up (Even)
1 0 1 Count Down (Even)
1 1 0 Count Up (Odd)
1 1 1 Count Down (Odd)

#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>

#define RIGHT 128


#define LEFT 1

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>

unsigned char JC;

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

You might also like