Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

plz everyone help me with this line follower project....

Status
Not open for further replies.

Minervamcgonall

Newbie level 3
Joined
Jan 8, 2010
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,330
i m working on line follower robot with 3 sensors using at89c2051. but main circuit i picked is from this link


i wrote the code in keil uvision but problem is that i want to generate pwm for 12V dc motor speed control. here the code is

Code C - [expand]
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <REG2051.H>
unsigned char flag,high,low,speedright,speedleft,i,rout,lout,pwmr_width,pwml_width;
void Start(void);
void Run(void);
void Turnright(void);
void Turnleft(void);
void forward(char);
void reverse(char);
void delay(void);
void pwmr_setup(void);
void pwml_setup(void);
#define rout P1_0
#define lout P1_1
 
void main()
{
P1=0x40;
P3=0xff;
high = 80;
low = 30;
speedright=160;
speedleft=160;
Start();
while(1)
{
P3=0x0f;
Run();
}
}
void Start()
{
char exit,key;
exit =1;
while(exit)
{key=P1_6;
if(key==0)
{exit=0;}
}
}
 
void Run()
{ char left,right,mid;
left=P3_0;
right=P3_7;
mid=P3_1;
 
if(left==1 )
{
Turnright();
}
if(right==1)
{
Turnleft();
}
if(mid==1)
{
forward(high);
}
if((left==0) && (right==0) && (mid==0))
{
reverse(low);}
if ((left==1) && (right==1) && (mid==1))
{forward(low);}
}
 
void forward(char speed)
{
P1=0x17;
speedright=speed+10;
speedleft=speed+10;
delay();
}
void Turnright()
{
P1=0x27;
speedright=low+5;
speedleft=low;
delay();
}
 
void Turnleft()
{
P1=0x1b;
speedright=low;
speedleft=low+5;
delay();
}
 
void reverse(char speed)
{
P1=0x2b;
speedright=speed;
speedleft=speed;
delay();
}
 
void delay()
{
unsigned char i,j;
for(i=0;i<50;i++)
for(j=0;j<50;j++);
}
 
// problem is here..i was using for loop for pwm but my teacher said to use timers.  i did use timers but dont know how to link them with the program i wrote before. so plz i need help here. my project is due monday...
void pwmr_setup(){
TMOD = 0;
pwmr_width= speedright;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void pwml_setup(){
TMOD = 1;
pwml_width=speedleft;
EA = 1;
ET1 = 1;
TR0 = 1;
}
 
void timer0() interrupt 1 {
if(!F0) { //Start of High level
F0 = 1; //Set flag
rout = 1;
//Set PWM o/p pin
 
TH0 = pwmr_width; //Load timer
TF0 = 0; //Clear interrupt flag
return; //Return
}
else { //Start of Low level
F0 = 0; //Clear flag
rout = 0; //Clear PWM o/p pin
TH0 = 255 - pwmr_width; //Load timer
TF0 = 0; //Clear Interrupt flag
return; //return
}
}
 
void timer1() interrupt 1 {
if(!F1) { //Start of High level
F1 = 1; //Set flag
lout = 1;
//Set PWM o/p pin
 
TH1 = pwml_width; //Load timer
TF0 = 0; //Clear interrupt flag
return; //Return
}
else { //Start of Low level
F1 = 0; //Clear flag
lout = 0; //Clear PWM o/p pin
TH1 = 255 - pwml_width; //Load timer
TF0 = 0; //Clear Interrupt flag
return; //return
}
}

 
Last edited by a moderator:

Try not to copy such programs as it is some others logic.
Have a clear logic ourself.
As a standard way to do (for the beginners), draw a flow chart to have a clear idea, then convert it to a program (a C program will do).

Most of the people will not try to read your program and understand the flow of the logic:|
 
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top