maybe:
@ device pic16F876A, hs_osc, wdt_on, lvp_off, protect_off
include "MODEDEFS.BAS"
define OSC 20
adcon1=7
trisc = %00000000
'_________pic to mc145436a assignments______________________
dtmf_ready VAR PORTA.0 'pin 12 (DV)
select_dtmf VAR PORTA.1 'pin 3 (Enable)
reset VAR PORTA.2 'pin 5 (GT)
DT0 VAR PORTB.4 'pin 2 (D1) ??
DT1 VAR PORTB.5 'pin 1 (D2) ??
DT2 VAR PORTB.6 'pin 14 (D4)
DT3 VAR PORTB.3 'pin 13 (D8)
ce var portA.3 'pin from isd chip
'____________________variables____________________ ______
dtmf VAR byte ' Stores most recent DTMF digit
dtmf1 var byte
password var byte [8]
codeword var byte [8]
codeword1 var byte [8]
c var byte
e var byte
'___________________Initial Conditions__________________
start:
pause 100:high ce:high reset:Low select_dtmf:e = 0
repeat
until dtmf_ready
portc = %00000000:ce = 0: pause 20:ce = 1: pause 2000:c = 0
repeat
Repeat
until dtmf_ready 'waits for number to be depressed
select_dtmf = 1 ' Enable the data output from the MT8870
dtmf = 0:dtmf.0=DT0:dtmf.1=DT1:dtmf.2=DT2:dtmf.3=DT3
LookUp dtmf,["_1234567890*#"],dtmf
assword[c]=dtmf
Repeat : until dtmf_ready=0 ' Loop here until DTMF signal stops
reset = 0: PAUSEUS 30:Reset=1 ' Hold GT for > 18mS
select_dtmf = 0 ' Disable the MT8870 data output
gosub Output_DTMF:c = c + 1
until c > 7
c=0:repeat:dtmf=password[c]:gosub output_DTMF: Pause 1000:c=c+1:until c>7
goto start
end
Output_DTMF:
Lookup dtmf-"0",[%10101001,%10010111,%10011001,%10011011,%10011101, %10011111,%10100001,%10100011,%10100101,%10100111],PortC
pause 1:ce = 0: pause 1:ce = 1
return
Last edited by BigWumpus; - 27th May 2006 at 19:37.
PBP 2.50C, MCS+ 3.0.0.5, MPLAB 8, MPASM 5.14, ASIX Presto, PoScope, mE mikroBasic V7.2, PICKIT2
Bookmarks