Discussion in "8051 Discussion Forum" started by    DavesGarage    Nov 14, 2009.
Fri Dec 25 2009, 11:17 AM
#11
ya right...i read the description for the TCON register.it says TF flag Cleared by hardware when processor vectors to interrupt routine....so can we use just RET instead of RETI as flag gets cleared automatically??.....
Sat Dec 26 2009, 07:54 AM
#12
No.

When you vector to an interrupt service routine, the micro will automatically push critical registers onto the stack, including the PSW. It's a little more involved than just a jump, which does none of this.

When you execute a RET instruction, you just restore the PSW - You don't restore any of of the registers that were pushed onto the stack.

Executing the RETI instruction does this for you...

I suggest you read from the 8052 bible books about what happens during an interrupt, and what the differences are between RET and RETI.

Hope this helps,
 ammi_paranjpe like this.
Sat Dec 26 2009, 09:31 AM
#13
thanx dave for ur help......i'll surely read from d buk u mentioned to get ma concepts more cleared.....
Sun Dec 27 2009, 08:41 AM
#14
You are welcome
Sat Apr 09 2016, 02:57 AM
#15
Hi Forum Members,

I have question(s). I have to create 1 sec to 10 sec for Timer Interrupt and switch on eight relays .

while continuously monitoring Temperature , Voltage , Pressure . 10 Relays should ON or OFF between
1 sec to 10 sec as Set by the user accordingly, to maintain the Temperature , Voltage , Pressure .

The Problem is that the Program should not exhibits large delay .. 1 sec to 10 sec . Relays should ON or OFF independently while printing the data on LCD .

Will your logic work for me . I am working on PIC16F72


--
Kr



[ Edited Sat Apr 09 2016, 03:00 AM ]
Sat Apr 09 2016, 05:26 PM
#16
Unfortunately Dave has not been in for a while, so I will try to answer your question.
The basic idea of a timer causing an interrupt will work well for you.

It it was me... I would turn the relay on and set a count during the main loop.
Each relay has its own count.

In the interrupt .. once every few milliseconds, count down the relay count.
When it hits 0, turn off the relay.

The method works for any micro with a timer that can generate an interrupt,
which is any still in use.
 Karan123 like this.
Tue Apr 12 2016, 08:15 AM
#17
Thanks ExperimenterUK,


Let me update you. Please see below code. I have to create delay between 1 sec to 10 sec with simple loops ( while, for etc. ) and switch on/off 10 relays.

When code is reached at ControlVoltageRelay(); the system stops for 10sec for each relay.
Similar thing happen on other Control Functions . My Application don't want this . The System will behave like hang while processing relay function.

I need Voltage,Temp,Pressure keeping scrolling on LCD or any output device and Relay should on/off independently without exhibiting any the delay .

I know i have to use Timer Interrupts for that (may be similar is Dave said) . But don't know how .

Please send me on code template or basic overview if you can on any micro controller .

Thanks in advances
 

while(1)
{
ReadVolage() ;
ControlVoltageRelay();
delay();
Readtemp() ;
ControltempRelay();
delay();
ReadPressure() ;
ControlPressureRelay();
delay();
}
void ControlPressureRelay()
{ 
    if(Pressure < P_RANGE)
          RELAY1= ON ;
   Delay10SecondswithLoop() ;
    if(Pressure < P_RANGE)
          RELAY2= ON
Delay10SecondswithLoop() ;
   if(Pressure < P_RANGE)
          RELAY3= ON
Delay10SecondswithLoop() ;
    if(Pressure < P_RANGE)
          RELAY4= ON
Delay10SecondswithLoop() ;
///////////////////
    if(Pressure>
 P_RANGE)
          RELAY1= ON
Delay10SecondswithLoop() ;
   if(Pressure >
P_RANGE)
          RELAY2= ON
Delay10SecondswithLoop() ;
    if(Pressure >
 P_RANGE)
          RELAY3 = ON
Delay10SecondswithLoop() ;
    if(Pressure >
 P_RANGE)
          RELAY4 = ON
Delay10SecondswithLoop() ;
}
ControlVoltageRelay()
{
    if(Voltage < P_RANGE)
          RELAY5= ON
Delay5SecondswithLoop() ;
   if(Voltage < P_RANGE)
          RELAY6= ON
Delay5SecondswithLoop() ;
    if(Voltage < P_RANGE)
          RELAY7= ON
Delay5SecondswithLoop() ;
    if(Voltage < P_RANGE)
          RELAY8= ON
Delay5SecondswithLoop() ;
///////////////////
    if(Voltage >
 P_RANGE)
                RELAY8= ON
Delay3SecondswithLoop() ;
   if(Voltage >
P_RANGE)
          RELAY6= ON
Delay3SecondswithLoop() ;
    if(Voltage >
 P_RANGE)
          RELAY7= ON
Delay3SecondswithLoop() ;
    if(Voltage >
 P_RANGE)
          RELAY8 = ON
Delaywith3SecondswithLoop() ;
}
ControltempRelay()
{
         if(temperature < T_RANGE)
          RELAY5= ON
Delay3SecondswithLoop() ;
       if(temperature  < T_RANGE)
          RELAY6= ON
Delay3SecondswithLoop() ;
        if(temperature  >
 T_RANGE)
          RELAY5= ON
Delay3SecondswithLoop() ;
        if(temperature  >
 T_RANGE)
          RELAY6= ON
Delay3SecondswithLoop() ;
}

Tue Apr 12 2016, 05:18 PM
#18
Which compiler are you using ?
Wed Apr 13 2016, 01:20 AM
#19
Thanks,

MPLAB v8.83 and MPLAB XC8 V.21 . You can give demo on any complier .

--
Karan
Thu Apr 14 2016, 01:13 AM
#20
Hello

@ExperimenterUK Any Update from your side

--
Karan

Get Social

Information

Powered by e107 Forum System

Conversation

Wed Aug 21 2019, 02:53 AM
charmdatescamreviewsldn
writing
Wed Aug 21 2019, 02:04 AM
charmdatemke
cooking
ExperimenterUK
Mon Aug 05 2019, 07:09 PM
@Ismail ..post in forum, give details
Mon Aug 05 2019, 04:33 PM
Ismail balghmi
Hello. Please I won't download
ExperimenterUK
Wed Jul 24 2019, 12:47 AM
@BUSTER123 Please post in the forum
Tue Jul 23 2019, 06:13 PM
BUSTER123
hello! newbie here. i am kind of a guy who hates using ready - made existing libraries, so this helped a lot as i was trying to control and write to a character lcd display. however, i can't figure out how to set the cursor position. for example, i want to set it to the 5th column in the first row, so position 5. so according to the table, i am sending 10000101 on the 8 data lines of the lcd (register select pulled low). the cursor does not move there however. and i cant move the cursor left or right too. is it something wrong that i am doing? thank you.
ExperimenterUK
Thu Jul 11 2019, 07:55 PM
@ramos https://www.theengineeringprojects.com/2017/09/l298-motor-driver-library-proteus.html
ExperimenterUK
Thu Jul 11 2019, 07:44 PM
@praveen123. Can you give a link to the project ?
Thu Jul 11 2019, 04:47 PM
ramos
buenos dias alguien podria ayudarme necesito saber como descargar la libreria del l298n para proteus
Thu Jul 11 2019, 11:11 AM
praveen123
anyone can help me

Downloads

Comments

jualanled
Sat Aug 17 2019, 03:41 AM
Wed Aug 07 2019, 10:35 AM
hieu16005
Sat Aug 03 2019, 01:16 PM
Pra
Mon Jul 29 2019, 07:39 AM
manu8193
Wed Jul 24 2019, 04:44 AM
3AAPC
Sun Jul 21 2019, 12:41 AM
rpels7707
Fri Jul 19 2019, 11:31 AM
ameya123
Fri Jul 19 2019, 07:36 AM

Online

Guests: 46, Members: 0 ...

most ever online: 182184
(Members: , Guests: 182184) on 06 Aug 2010: 05:37 AM

Members: 38086
Newest member: jualanled
Forum Activity
nick@IT Avatar
Posted By [email protected]
Wed Aug 07 2019, 10:38 AM
I am trying to execute USSD codes through my GSM m...
ExperimenterUK Avatar
Posted By ExperimenterUK
Sun Jul 28 2019, 08:55 PM
An LM339 may not be fast enough for reliable SPI ...
sakibnaz Avatar
Posted By sakibnaz
Sun Jul 28 2019, 06:40 AM
Hi All.I need to connect my MCU with an external S...
ExperimenterUK Avatar
Posted By ExperimenterUK
Wed Jul 24 2019, 10:42 PM
Your unit is communicating, so I assume the GPS si...
ExperimenterUK Avatar
Posted By ExperimenterUK
Wed Jul 24 2019, 10:32 PM
Have you read this ?http://www.8051projects.net/wi...
manu8193 Avatar
Posted By manu8193
Wed Jul 24 2019, 04:57 AM
any one tell me the explaination and 'c' code for ...
3AAPC Avatar
Posted By 3AAPC
Sun Jul 21 2019, 12:51 AM
3AAPC Avatar
Posted By 3AAPC
Sun Jul 21 2019, 12:47 AM
With the GPS antenna in the outdoors, I use the ub...
ameya123 Avatar
Posted By ameya123
Fri Jul 19 2019, 07:42 AM
Hello,Please share 8051 Assembly language code for...
figureyang Avatar
Posted By figureyang
Fri Jul 05 2019, 04:37 AM
here is the source code prepared for you download ...