با سلام و خسته نباشید من تقریبا 3 ماه که می خوام با آی سی mt8888 می خوام شماره گیری کنم ولی نمی تونم با میکرو 89s52 با زبان بیسیک کسی می تونه با این آی سی به من کمک کنه خیلی عصابم رو خورد کرد ممنون از همه
اطلاعیه
Collapse
No announcement yet.
شماره گیری تلفن توسط هی سی mt8888
Collapse
X
-
پاسخ : شماره گیری تلفن توسط هی سی mt8888
$regfile = "8052.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6 , Db7 = P2.7 , E = P2.3 , Rs = P2.2
Dim A As Byte
Declare Sub Dtmf_out_off
Declare Sub Dtmf_out_on
Declare Sub Int_mt
Declare Sub Data_rd
Declare Sub Data_rw
Declare Sub Command_rw
Declare Sub Command_rd
Declare Sub Send_data_dtmf
Declare Sub Receive_data_dtmf
Declare Sub Dial_up
Declare Sub Out_dtmf(a As Byte)
'******************************************** *
'connect pin 14,15,16,17 of mt8888 to p1.0--p1.3
Irq Alias P1.4 'pin 13 mt8888 to p1.4
Rd Alias P1.7 'pin 12 mt8888 to p1.7
Rs Alias P1.6 'pin 11 mt8888 to p1.6
Rw Alias P1.5 'pin 9 mt8888 to p1.5
Relay Alias P2.0
Ring Alias P2.1
Sw Alias P3.0
Declare Sub Showlcd
Dim Ringcount As Byte
Dim Ringrec As Byte
Dim Endcall As Byte
Dim X As Byte
Dim Send_en_bit As Bit
Dim Tel As String * 15
Dim Telx As String * 1
Dim Len_tel As Byte
Dim I As Byte
Dim Receive_byte As Byte
Dim Busy_cuont As Word
Dim Status As Byte
Tel = "0123456789"
Call Int_mt
Lcd "Initializing"
Wait 2
Do
If Sw = 0 Then
Cls
Lcd "Dialing"
Wait 2
Cls
Call Dial_up
End If
Loop
End
'///////////////////
Receive_ring:
If Ring = 1 Then
Do
Loop Until Ring = 0
Incr Ringcount
End If
Return
'////////////////////
Sub Showlcd
Locate 1 , 1
Lcd 11 ; "RING"
End Sub
'////////////////////////////
Sub Dial_up
Relay = 0
Waitms 500
Relay = 1
P1 = &B11110100
Call Command_rw
Len_tel = Len(tel)
For I = 1 To Len_tel
Telx = Mid(tel , I , 1)
X = Val(telx)
If X = 0 Then
X = 10
End If
Call Out_dtmf(x)
Lcd X
Next
End Sub
'/////////////////////////
Sub Receive_data_dtmf
Receive_byte = 0
P1.0 = 0
P1.1 = 0
P1.2 = 0
P1.3 = 0
Call Command_rd
Status = P1 And &H0F
If P1.2 = 1 Then
Call Data_rd
Receive_byte = P1
Receive_byte = Receive_byte And &B00001111
End If
If Receive_byte > 0 Then
Lcd Receive_byte
End If
End Sub
'/////////////////////////////////
Sub Out_dtmf(a As Byte)
P1 = &B11111100
Call Command_rw
P1 = &B11110001
Call Command_rw
Call Dtmf_out_on
P1 = A
Call Data_rw
Call Dtmf_out_off
End Sub
'//////////////////////
Sub Dtmf_out_off
Waitms 400
P1 = &B00000100
Call Command_rw
Waitms 100
End Sub
'////////////////////////////
Sub Dtmf_out_on
P1 = &B00000101
Call Command_rw
End Sub
'////////////////////////////
Sub Int_mt
Call Command_rd
Waitms 100
P1 = &B00000000
Call Command_rw
Waitms 100
P1 = 0
Call Command_rw
Waitms 100
P1 = &B00001000
Call Command_rw
Waitms 100
P1 = 0
Call Command_rw
Waitms 100
Call Command_rd
End Sub
'/////////////////////////////////
Sub Command_rw
Rs = 1
Rd = 1
Rw = 0
Waitms 10
Rw = 1
End Sub
'//////////////////////
Sub Command_rd
Rs = 1
Rd = 0
Rw = 1
Waitms 10
Rd = 1
End Sub
'////////////////////////
Sub Data_rw
Rs = 0
Rd = 1
Rw = 0
Waitms 10
Rw = 1
End Sub
'//////////////////////////
Sub Data_rd
Rs = 0
Rd = 0
Rw = 1
Waitms 10
End Sub
'////////////////////
-
پاسخ : شماره گیری تلفن توسط هی سی mt8888
سلام
من بعد 2 سال برگشتم (رفته بودم سربازی)
من با MT8888 کار کردم ولی میکرو 8051 بود آخه مال سال 84 هست. البته چند دفعه در این مورد از من سوال شد که من نتونستم بنابر بعضی مشکلات جواب بدم که ازشون معضرت می خوام.
حالا اگه فکر می کنین برنامه بدرد می خوره برنامه رو بزرام
دیدگاه
دیدگاه