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

DragonDad
Wed May 29 2019, 12:17 PM
Hi. Who is online?
Tue May 21 2019, 09:53 PM
Jayson Contreras
Hello
Xkalebar
Mon May 06 2019, 06:21 AM
Please provide me the code for gsm based sms controlled notice board
ExperimenterUK
Mon Apr 22 2019, 08:07 PM
@hassan malik post your problem in the "General help Guidance and Discussion" forum
Mon Apr 22 2019, 02:21 PM
RAJESH MAPARi
please send me code to interface atmega32 with 24c1024 serial eeprom
Mon Apr 22 2019, 10:48 AM
hassan malik
hello sir i installed proteus 7.8 professional on window 7 ultimate and window 10 but there would be same errors onn both windows. the error is bad license key.please any one help me
Mon Apr 22 2019, 10:47 AM
hassan malik
hello sir i installed proteus 7.8 professional on window 7 ultimate and window 10 but there would be same errors onn both windows. the error is bad license key.
ExperimenterUK
Sun Apr 14 2019, 03:14 PM
@deshrar. Please post your question in 8051 forum
Sun Apr 14 2019, 04:58 AM
deshraj
hallo mam.. i have downloded gsm notice board code its running fine on lcd but how so send msg to the module . i mean format of password and msg.. thank you
kevinharsha
Thu Apr 11 2019, 01:53 PM
Can i see the circuit diagram for the music tone library 8051 project?

Downloads

Comments

DragonDad
Tue May 21 2019, 02:50 PM
dhiyamtech
Thu May 09 2019, 10:20 AM
harsha.reddy
Fri May 03 2019, 09:02 AM
soumen1963
Fri May 03 2019, 06:01 AM
Vasily
Mon Apr 29 2019, 04:03 AM
Xkalebar
Sun Apr 28 2019, 08:59 AM
obibikwe
Fri Apr 19 2019, 05:55 PM
gigyani
Thu Apr 18 2019, 01:43 AM

Online

Guests: 49, Members: 0 ...

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

Members: 38066
Newest member: DragonDad
Forum Activity
Ansh12 Avatar
Posted By Ansh12
Sun Apr 28 2019, 02:15 PM
I made a minor change, it works in Proteus.Try the...
ExperimenterUK Avatar
Posted By ExperimenterUK
Thu Apr 25 2019, 08:20 PM
I made a minor change, it works in Proteus.Try the...
gigyani Avatar
Posted By gigyani
Thu Apr 25 2019, 01:17 AM
when i add cufirst.hex its not working.after 2-3 s...
ExperimenterUK Avatar
Posted By ExperimenterUK
Wed Apr 24 2019, 12:29 AM
http://www.8051projects.net/download-d205-electron...
gigyani Avatar
Posted By gigyani
Tue Apr 23 2019, 09:22 PM
How to enter the electronic voting machine into vo...
Ansh12 Avatar
Posted By Ansh12
Mon Apr 22 2019, 09:12 AM
Then flash the led when you get any input on B0.Le...
ExperimenterUK Avatar
Posted By ExperimenterUK
Fri Apr 19 2019, 05:35 PM
The full error is control_unit.asm(1294): error A4...
gigyani Avatar
Posted By gigyani
Thu Apr 18 2019, 10:09 PM
I'm using keil uvision5. attached is the rar file ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Thu Apr 18 2019, 04:58 PM
Please zip your full code and post it.Which assemb...
gigyani Avatar
Posted By gigyani
Thu Apr 18 2019, 02:01 AM
STATREAD:MOV A, #WTCMD ;LOAD WRITE CO...