| Kai Klaas 02/05/06 19:47 Modified: 02/05/06 20:00 Read: 1515 times Germany |
#109257 - schematic and code Responding to: Suresh R's previous message |
Suresh said:
I too prefer doing it with a microcontroller for accuracy.
But, to my knowledge i thought, i could use an interrupt to start dispensing. and i can program the timer. But iam not aware of how the Timing could be adjusted manually when a microcontroller is used. Any suggestions. You could try the following circuit:
(Pin1 of ISP header goes to P1.7) This could be the code (not tested so far): $nomod51
$include (89s52.mcu)
org 0
sjmp begin
org 002bh
;initialize
begin: mov auxr,#00011001b ;reset pin is input
mov tmod,#00000001b ;timer 0 in modus 1
;Total delay is
;number 'z' (BCD-
;switches) times
;10msec delay of
;timer 0
;reads 'start' and
;BCD switches
start_pressed?: clr p1.4 ;strobe watchdog
mov c,p0.2 ;read 'start'
setb p1.4 ;strobe watchdog
;'start' pressed?
jc start_pressed? ;No!
;'start' is pressed:
mov a,p0 ;read "1"
swap a ;eases layout
cpl a ;true data
anl a,#00001111b ;low nibble needed
mov r0,a ;store "1" in r0
mov a,p2 ;read "10","100"
cpl a ;true data
mov r1,a ;store it in r1
swap a ;eases layout
anl a,#00001111b ;low nibble needed
mov b,#10 ;load #10 into b
mul ab ;a = "10" x 10
add a,r0 ;add r0 ("1")
mov r0,a ;store it in r0
mov a,r1 ;now we need "100"
anl a,#00001111b ;low nibble needed
mov b,#100 ;load #100 into b
mul ab ;a = "100" x 100
add a,r0 ;add r0
mov r0,a ;low byte in r0
mov a,#0 ;carry?
addc a,b ;add carry to b
mov r1,a ;high byte in r1
;r1=0?
jnz activate_relay ;r1<>0!
;r1=0!
mov a,r0 ;r0=0?
jz start_released? ;r0=0 and r1=0!
;means z=0!
;r0<>0 or r1<>0!
;means z<>0!
activate_relay: clr p0.0 ;turn on relay
;initialize timer
timer_delay: mov th0,#220 ;reload high byte
mov tl0,#15 ;reload low byte
setb tr0 ;start timer 0
clr p1.4 ;strobe watchdog
;timer busy?
timer_busy?: jnb tf0,timer_busy? ;timer busy!
;10msec delay over
clr tr0 ;stop timer 0
clr tf0 ;clear overfl. flag
setb p1.4 ;strobe watchdog
;decrement z
mov a,r0 ;
clr c ;
subb a,#1 ;a=r0-1
mov r0,a ;low byte of z=z-1
;into r0
mov a,r1 ;carry?
subb a,#0 ;
mov r1,a ;high byte of z=
;z-1 into r1
;r1=0?
jnz timer_delay ;r1<>0!
;r1=0!
mov a,r0 ;r0=0?
jnz timer_delay ;r0<>0!
;r0=0 and r1=0!
;means z=0!
setb p0.0 ;turn off relay
start_released?: clr p1.4 ;strobe watchdog
mov c,p0.2 ;read 'start'
setb p1.4 ;strobe watchdog
;'start' released?
jnc start_released? ;No!
;'start' released!
;initialize waiting
;loop
mov r1,#103 ;'start' released
waiting_loop_1: mov r0,#255 ;for 0.2 sec?
waiting_loop_2: clr p1.4 ;strobe watchdog
mov c,p0.2 ;read 'start'
setb p1.4 ;strobe watchdog
;still released?
jnc start_released? ;No!
;still released!
djnz r0,waiting_loop_2 ;repeat loop 2
djnz r1,waiting_loop_1 ;repeat loop 1
ljmp start_pressed? ;'start' released
;for at least
;0.2sec!
end
Kai |
| Topic | Author | Date |
| Circuit for dispensing unit | Suresh R | 01/31/06 05:09 |
| 1.1 sec monoshot | Abhishek Singh | 01/31/06 09:43 |
| this thread is apin off from an earlier | Terry Lingle | 01/31/06 13:07 |
| yes | Steve M. Taylor | 01/31/06 13:55 |
| timing circuit | Suresh R | 02/01/06 04:17 |
| Monostable | Andy Neil | 01/31/06 12:08 |
| Yes. | Steve M. Taylor | 01/31/06 13:06 |
| Hello All | Suresh R | 01/31/06 22:23 |
| Description of the "Dispensing Unit" | Andy Neil | 02/01/06 00:39 |
| using micro | Suresh R | 02/02/06 00:25 |
| Microcontroller | Andy Neil | 02/02/06 01:35 |
| Pressure | Steve M. Taylor | 02/02/06 03:51 |
| What must your circuit can do? | Kai Klaas | 02/02/06 07:17 |
| 0.1 sec | Steve M. Taylor | 02/02/06 10:34 |
| but not with a potentiometer | Erik Malund | 02/02/06 10:38 |
| Vernier | Steve M. Taylor | 02/02/06 13:02 |
| and calibrate it how? | Erik Malund | 02/02/06 13:14 |
| Precision | Andy Neil | 02/02/06 15:13 |
| Sure! | Kai Klaas | 02/02/06 16:01 |
| Price | Andy Neil | 02/02/06 17:06 |
| Less than 1€ | Kai Klaas | 02/02/06 20:02 |
| levels of precision | Suresh R | 02/03/06 05:01 |
| Please have a look into datasheet! | Kai Klaas | 02/03/06 05:57 |
| somewhere here there is a link | Erik Malund | 02/03/06 06:51 |
| Details? | Kai Klaas | 02/03/06 07:17 |
| I recall that in an earlier thread | Erik Malund | 02/03/06 07:20 |
| Ooops. | Steve M. Taylor | 02/03/06 09:49 |
| Blown Discharge PIN | Abhishek Singh | 02/04/06 19:15 |
| You can also let the smoke out of the | Terry Lingle | 02/04/06 22:37 |
| limits | Steve M. Taylor | 02/05/06 06:13 |
| dissapation | Terry Lingle | 02/05/06 09:45 |
| There must be a point. | Steve M. Taylor | 02/05/06 10:31 |
| Fusing the bonding wires | Terry Lingle | 02/05/06 13:59 |
| History making | Steve M. Taylor | 02/05/06 14:47 |
| Current limiting | Kai Klaas | 02/07/06 06:42 |
| I do go through | Suresh R | 02/07/06 01:50 |
| schematic and code | Kai Klaas | 02/05/06 19:47 |
| codes | Suresh R | 02/07/06 00:32 |
| Instruction Description | Andy Neil | 02/07/06 04:28 |
| not quite | Erik Malund | 02/07/06 06:09 |
| Pedantic | Andy Neil | 02/07/06 07:12 |
| is that not the pot calling the kettle b | Erik Malund | 02/07/06 07:17 |
| Of course not! | Andy Neil | 02/07/06 07:31 |
| Answers | Kai Klaas | 02/07/06 07:55 |
| Re: codes and shcematic | Suresh R | 02/10/06 03:55 |
| Recommendations | Kai Klaas | 02/10/06 07:05 |
Decimal switches - how to start C | Erik Malund | 02/10/06 08:09 |
| LM555 pin 2 wired wrong. | Charles Bannister | 02/01/06 04:45 |
| ... and the LED? | Andy Neil | 02/01/06 05:31 |
| i'm sure thts not the circuit | Abhishek Singh | 02/01/06 06:38 |
| Astable?? | Kai Klaas | 02/01/06 11:46 |
| I wondered who'd spot that first... | Andy Neil | 02/01/06 12:47 |
| Damaged? | Kai Klaas | 02/01/06 11:51 |
| And Andy's correction | Steve M. Taylor | 02/01/06 12:03 |
| Absolutely! | Kai Klaas | 02/01/06 12:24 |
| one shot in the foot | Erik Malund | 02/01/06 12:31 |
| Need not to work unreliably | Kai Klaas | 02/02/06 07:10 |



