Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic 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.

Register Log in

Help me generate square wave using 8051

Status
Not open for further replies.

osoenbolsa

Newbie level 3
Joined
Jul 20, 2009
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Spain
Activity points
1,339
I want to generate square wave oscillation using uc8051 with fixed duty cycle say 50% but i want to be able to change the frequency of oscillation from 1Hz to 2KHz by keying in the required value and make the uc generate it. 12MHz crystal oscillator is used. pls, i need help on how to do this.
I use asm code. Thanks all. :D
 

vipul

Junior Member level 2
Joined
Jul 4, 2008
Messages
24
Helped
4
Reputation
8
Reaction score
3
Trophy points
1,283
Location
Ahemdabad,India
Activity points
1,448
how to generate low frequency to 8051 port pin

You have to use timer interrupt...

So first calculate the Value for registers TH and TL for required frequency..
And activate timer interrupt...

In Interrupt loop toggle any one Port pin..
means for odd time make port pin high and for even time make it low...

You want to change frequency using key connected to port pin..
so Meanwhile also check status of key and change the value of Timer register according to the key pressed.....

-Vipul
 

vigneshwara_s

Member level 1
Joined
Oct 5, 2006
Messages
39
Helped
7
Reputation
14
Reaction score
0
Trophy points
1,286
Location
Chennai
Activity points
1,543
generating a square wave in 8051 port

Dear osoenbolsa ,

If you need to vary the frequency from the minimum to the maximum , The Tie should be varied from the maximum to minimum.

As VIPUL said you need to use the timer interrupt for the perfect waveform generation.

Try with the usage of interrupts , else if you find it as difficult try with the delay routines .

For 1 Khz Generation , the Time will be , 500us OFF and 500 us ON . Better you write a delay rutine for 250us , and call the delay routines that much frequencyyou need to generate in multiles of 250us.

for example , for 1Khz generation , Set 1^0 to 1 and call 250us delay twice , Clr 1^0 to 0 and call 250us delay twice. Do that continously .


But the Best way is to generate square wave with Interrupt routines.

regards,
Vikeee ..
 

osoenbolsa

Newbie level 3
Joined
Jul 20, 2009
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Spain
Activity points
1,339
8051 assembly square wave

Thanks all.

I use the Interrupt routines. But my question is how to obtain the values of tl0, th0 and r0 (3 bytes for low frequency) by program.

For example:
• I select with a Keypad 1Hz --> T/2 =500.000 us --> th0=3c ;tl0 = afh; r3=10 (10*5000us)
• If i select a new frequency of 1500Hz --> T/2 = 333 US --> TH0=FEH ; TL0=B2H; R3=0

How can i obtain, by program in asm, the values of th0, tl0 and r3? (with a table with 2000 values, division...)

Thanks all.:D
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top