Vous êtes sur la page 1sur 7

#include<reg51.

h>
void T0delay(void);
sbit Mybit=P1^0; // output PWM port
void main(void)
{
unsigned char x;
while(1)
{
Mybit=1;
for(x=0;x<10;x++) // generating 250ms delay for ON time
{
T0delay();
}
Mybit=0;
for(x=0;x<10;x++) // generating 250ms delay for OFF tine
{
T0delay();
}
Mybit=1;
for(x=0;x<5;x++) // generating 125ms delay for ON time
{
T0delay();
}
Mybit=0;
for(x=0;x<5;x++) // generating 125ms delay for OFF time
{
T0delay();
}
Mybit=1;
for(x=0;x<2;x++) // generating 50ms delay for ON time
{
T0delay();
}
Mybit=0;
for(x=0;x<2;x++) // generating 50ms delay for OFF time
{
T0delay();
}
}
}
// 25ms delay function
void T0delay(void)
{
TMOD=0X01; // timer-0 mode-1
TL0=0xFE;
TH0=0xA5;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
}

matlab code

%stop n wait ARQ with CRC-4 detection

clc;
close all;
%exp=input('Enter the number of experiments');
%m=input('Enter no. of frames : ');
m=10;
%n=input('Enter frame length : ');
n=7;
%p=input('Enter probability of error of the tx channel');
%tpt=randi([0,1],m,n);
%delay=randi([0,1],m,n);
%p=input('Enter probability of error of the tx channel');
%timeout=input('Enter max no. of transmissions per frame:');
timeout=12;
%rtd=input('Enter round trip delay(in sec):');
rtd=.125;
%rate1=input('Enter data rate of transmission medium(in Mbps):');
rate1=2;
rate=rate1*1000000;
%fprintf('The message is:');msg;
exp=input('Enter the no. of times exp to be done: ');
error=0;
for x=1:200
p(x)=x*.0005;
msg=randi([0,1],m,n);
%Cyclic Redundancy Check coding of the data packets
div=[1 0 0 1];
%predetermined divisor
for i=1:m
[q,r]=deconv(msg(i,:),div);
y(i,:)=[msg(i,:),zeros(1,3)];
for k=1:n
r(k)=mod(r(k),2);
end
fcs=[zeros(1,3),r];
%frame check sequence
pac(i,:)=bitxor(y(i,:),fcs);
clear r;clear rem;
end
%fec encoding
%fprintf('The transmitted message with parity bits is:');msgtx
xtra=0;
for c=1:exp
%stop n wait protocol
extra=0;
pass=0;
%msgrx=msgtx;
j=1;
time=0;
while(j<=m)
pass=pass+1;

msgrx(j,:)=bsc(pac(j,:),p(x));
%fprintf('Pass %d :',pass);
%fprintf('Transmitted message:');msgtx(j,:)
%fprintf('Received message:');msgrx(j,:)
[q2,r2]=deconv(msgrx(j,:),div);
r2(1,:)=mod(r2(1,:),2);
if r2==0
temp1(1,j)=0;
else
temp1(1,j)=1;
end
if(temp1(1,j)==0)
j=j+1;
time=0;
elseif(time<timeout)
extra=extra+1;
time=time+1;
%else
%j=j+1;
%extra=1000;
end
end
xtra=xtra+extra;
%error calculation
for d=1:m
if(msgrx(d,:)==pac(d,:))
else
error=error+1;
end
end
end
xtra1=xtra/exp;
%Throughput efficiency calculation based on extra
Tp=rtd/2;
Ts=(n+3)/rate;
pdr=Tp/Ts;
factor=1/(1+2*pdr);
tpt(x)=((m/(m+xtra1))*n*factor)/(n+3);
tpt1(x)=(((1-p(x))^n)*n*factor)/(n+1);
Tt=(2*Tp)+Ts;
delay(x)=((m+xtra1)/m)*Tt;
delay1(x)=Tt/((1-p(x))^n);
end
subplot(2,2,1)
plot(p,tpt)
xlabel('BER');
ylabel('Throughput');
subplot(2,2,2)
plot(p,tpt1)
xlabel('BER');
ylabel('Theoritical Throughput');

subplot(2,2,3)
plot(p,delay)
xlabel('BER');
ylabel('Delay');
subplot(2,2,4)
plot(p,delay1)
xlabel('BER');
ylabel('Theoritical Delay');
%fprintf('Frames erroneously received=%d/%d \n',error,exp*m);

rogram to implement CRC (Cyclic Redundancy Code)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
int i,j,keylen,msglen;
char input[100], key[30],temp[30],quot[100],rem[30],key1[30];
clrscr();
printf("Enter Data: ");
gets(input);
printf("Enter Key: ");
gets(key);
keylen=strlen(key);
msglen=strlen(input);
strcpy(key1,key);
for(i=0;i<keylen-1;i++)
{
input[msglen+i]='0';
}
for(i=0;i<keylen;i++)
temp[i]=input[i];
for(i=0;i<msglen;i++)
{
quot[i]=temp[0];
if(quot[i]=='0')
for(j=0;j<keylen;j++)
key[j]='0';
else
for(j=0;j<keylen;j++)
key[j]=key1[j];
for(j=keylen-1;j>0;j--)
{
if(temp[j]==key[j])
rem[j-1]='0';
else
rem[j-1]='1';
}
rem[keylen-1]=input[i+keylen];
strcpy(temp,rem);
}
strcpy(rem,temp);
printf("\nQuotient is ");
for(i=0;i<msglen;i++)
printf("%c",quot[i]);

printf("\nRemainder is ");
for(i=0;i<keylen-1;i++)
printf("%c",rem[i]);
printf("\nFinal data is: ");
for(i=0;i<msglen;i++)
printf("%c",input[i]);
for(i=0;i<keylen-1;i++)
printf("%c",rem[i]);
getch();
}
crc code

distance vector routing algorithm


/*
Distance Vector Routing in this program is implemented using Bellman Ford Algori
thm:*/
#include<stdio.h>
struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];
int main()
{
int costmat[20][20];
int nodes,i,j,k,count=0;
printf("\nEnter the number of nodes : ");
scanf("%d",&nodes);//Enter the nodes
printf("\nEnter the cost matrix :\n");
for(i=0;i<nodes;i++)
{
for(j=0;j<nodes;j++)
{
scanf("%d",&costmat[i][j]);
costmat[i][i]=0;
rt[i].dist[j]=costmat[i][j];//initialise the distance equal to cost
matrix
rt[i].from[j]=j;
}
}
do
{
count=0;
for(i=0;i<nodes;i++)//We choose arbitary vertex k and we calculate t
he direct distance from the node i to k using the cost matrix
//and add the distance from k to node j
for(j=0;j<nodes;j++)
for(k=0;k<nodes;k++)
if(rt[i].dist[j]>costmat[i][k]+rt[k].dist[j])
{//We calculate the minimum distance
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}while(count!=0);

for(i=0;i<nodes;i++)
{
printf("\n\n For router %d\n",i+1);
for(j=0;j<nodes;j++)
{
printf("\t\nnode %d via %d Distance %d ",j+1,rt[i].from[j]+1,rt[
i].dist[j]);
}
}
printf("\n\n");
getch();
}
/*
A sample run of the program works as:Enter the number of nodes :
3
Enter the cost matrix :
0 2 7
2 0 1
7 1 0
For router 1
node 1 via 1 Distance 0
node 2 via 2 Distance 2
node 3 via 3 Distance 3
For router 2
node 1 via 1 Distance 2
node 2 via 2 Distance 0
node 3 via 3 Distance 1
For router 3
node 1 via 1 Distance 3
node 2 via 2 Distance 1
node 3 via 3 Distance 0
*/

Vous aimerez peut-être aussi