1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

Counting In Coming Pulses on controller

Discussion in 'Microcontrollers' started by waqar, May 18, 2003.

  1. waqar

    waqar New Member

    Joined:
    Mar 13, 2003
    Messages:
    67
    Likes:
    0
    Ok People,,
    Talking about the same program as i have posted before, but now i have made only one change is that, that is the Make and Break Ratio are same i.e. 40 Milli Seconds..
    Now this is also not working in a proper order but it is doing something which is:-

    By pressing signal digit i get following result considering the what is in CJNE command:-

    1 or 2 if pressed and in CJNE command i R7=1 then it work

    3 or 4 if pressed and in CJNE command i have used R7=2 then it work

    5 or 6 if pressed and in CJNE command i have used R7=3 then it work

    7 or 8 if pressed and in CJNE command i have used R7=4 then it work

    9 or 0 if pressed and in CJNE command i have used R7=5 then it work

    At preset two digits represent same number of pulses, i think the problem is clear to all of you..now can some one make out a relation out of this
    and provide the correct solution , a solution that is valid for any pulse dialing telephone.

    Is it possible that if some how the program is made in such a fashion that instead of counting
    the pulses it counts how much time it took for number of pulses to arrive and then compare it with time interval already stored in the memory.


    like

    Digit Time (seconds)
    0 1 second for 10 pulse
    9 9/10
    8 8/10
    7 7/10
    6 6/10
    5 5/10
    4 4/10
    3 3/10
    2 2/10
    1 1/10

    please suggest a way out..






    ; CHECKING ONE TELEPHONE LINE WITH MT8816 AND AT89C52
    ; P2.0 FOR DETECTING OFF HOOK (1) AND ON HOOK (0)
    ; SLIC TO X2 PIN31 OF MT8816
    ; ADDRESS LINE + DATA PIN OF MT8816 WITH P1
    ; DIAL TONE IS ON Y0 PIN 31 OF MT8816



    ORG 00H
    LJMP MAIN


    ORG 0030H
    MAIN:
    MOV P0,#00000000B ;port IS CLEARED
    MOV P3,#00000000B ;STROBE IS CLEARED
    MOV P2,#00000000B ;RESETING THE PIN
    MOV P1,#00000000B ;RESETING THE PIN
    OFF: JNB P2.0,OFF ;WAITING FOR OFF-HOOK
    CALL DELAY
    MOV P1,#10010000B ;ADDRESS LINE TO CONNECT Y0 WITH X2 FOR DIAL TONE
    SETB P3.7 ;STROBE IS SET HIGH
    ON: JB P2.0,ON
    MOV R7,#00D
    J: CALL DELAY_40MS
    INC R7
    CALL DELAY_40MS
    JNB P2.0,J
    JB P2.0,CHECK3
    CHECK3: CJNE R7,#05D,DO ;this will detect digit 9 and 0
    CLR P1.7
    CLR P3.7
    DO: JNB P2.0,MAIN
    SJMP DO


    DELAY_60MS:
    MOV R0,#05D
    L2: MOV R1,#53D
    L1: MOV R2,#250D
    DJNZ R2,$
    DJNZ R1,L1
    DJNZ R0,L2
    RET


    DELAY_40MS:
    MOV R0,#05D
    A2: MOV R1,#49D
    A1: MOV R2,#180D
    DJNZ R2,$
    DJNZ R1,A1
    DJNZ R0,A2
    RET

    DELAY_800MS:
    MOV R0,#80D
    U2: MOV R1,#94D
    U1: MOV R2,#100D
    DJNZ R2,$
    DJNZ R1,U1
    DJNZ R0,U2
    RET


    DELAY:
    MOV R0,#05D
    C2: MOV R1,#10D
    C1: MOV R2,#200D
    DJNZ R2,$
    DJNZ R1,C1
    DJNZ R0,C2
    RET
    END
     

Share This Page