| ??? 09/25/11 00:43 Read: times | #183864 - Thanks for time Responding to: ???'s previous message | 
| Maunik Choksi said: 
        .equ    OUTPIN,P2.1
        .equ    basecount,021h
          .org  0000h
          SJMP  MAIN
          .org  000bh           ;Use timer0
          LJMP  TIMER_ROUT
          .org  0070h
MAIN:     MOV   SP,#050H
          MOV   TMOD,#01H       ;initialise timer 0 in 16 bit mode
          mov   IP,#02h         ;give priority to timer0
          mov   TH0,#0ech       ;5ms timer count loaded
          mov   TL0,#078h       ;for 12 Mhz crystal
          ;The formula for deciding count is like
          ;(65535 - 5000) = 60535 here 5000 count for 5ms timer
          ;if you want to generate 1 ms timer then your formula should be
          ;(65525 - 1000) = 64535 and so on.
          ;So here we get count for 5ms timer = 60535D = EC78H =TH0TL0
          setb  TR0             ;turns on timer0
main1:
          MOV   IE,#082H        ;1000 0010 Enables timer0 interrupt
          sjmp  main1
TIMER_ROUT:
;After Every 5ms time the timer interrupt jumps here
          mov   TH0,#0ech       ;Reload timer count
          mov   TL0,#078h
          inc   basecount
          mov   a,basecount
          cjne  a,#50,skipchangestatus  
          cpl   OUTPIN          ;after every 50 * 5 = 250 ms compliment the OutputPin status
                                ;So you get 2 low 2 high output status in 1 sec i.e 2 Hz freq.
          mov   basecount,#0    ;reset the base count
skipchangestatus:
          reti                  ;return from timer interrupt
Hi Maynik: Thanks for giving me example of the 2 Hz code. Best regards, Ralph Sac | 




