Qurban amanah Bersama Da'i AbdurrahmanGani

Cerita tentang Indonesia-Gamers-chetter

Rabu, 28 Maret 2012

Program Baskom ILmu Komputer


BASCOM-8051

  • Bascom test board
  • LCD 2x16
  • crystal 22118400 Hz
  • Siemens GSM C35i Datacable for RS232 connection,
  • BASCOM-8051 Version 2.0.8.0




Hasilnya adalah di sini, cara cepat dan kotor untuk mengirim SMS dari uP dengan saya BASCOM-8051.

Nomor telepon dan pesan teks dalam ROM program di akhir program, ini adalah konstanta dan kita harus menyimpan sebagai RAM sebanyak mungkin.

Untuk preprocess kita perlu mengetahui panjang angka, berapa banyak karakter yang dikandungnya. Dan hal yang sama kita perlu tahu untuk teks pesan itu sendiri. Ketika kita memiliki data ini, kita dapat menghitung panjang dari perintah itu sendiri. Kami membutuhkannya untuk menginformasikan C35i dalam AT + CMGS = pernyataan.

Maka pesan PDU Format berikut, dimulai dengan awalan Cetak "000100"; (jangan lupa semicollon Jika demikian, maka pernyataan Print Bascom menambahkan dua karakter, karakter carriage return dan karakter baris baru, yang di sini tidak di tempat ini nggak!. 't kerja.)

Apa tiga byte perintah pesan berarti, saya tidak tahu. Aku hanya ingat, bahwa pertama x00 byte mengatakan, kami akan mengirim pesan melalui SMS Service Center, yang nomor telepon sudah dalam memori C35i, sehingga kita tidak perlu menentukan itu.

Kemudian nomor telepon penerima berikut, yang telah dimodifikasi litle. Pertama panjang ini jumlah dalam angka, (386 41 1234 56 memiliki 11 angka, sehingga x0B adalah 11), byte berikutnya x91 berarti, jumlah itu sendiri adalah dalam bentuk internasional dan dimulai dengan kode negara - (Slovenia - 386)

No 38641123456 harus menghasilkan ke

8346113254F6

setiap angka ke halfbyte, dan jika jumlah angka-angka ganjil, maka jumlah yang signifikan setidaknya diikuti oleh F.

Konversi ini dilakukan dengan rutin khusus dalam program, yang juga berisi pernyataan Cetak.

Pernyataan Cetak untuk beberapa atribut berikut. x0000 tidak baik.

Pada teks pesan terakhir berikut. Sementara karakter ASCII menempati hanya nilai-nilai di bawah 128, yang mereka butuhkan hanya 7 bit informasi. Jadi kompres dilakukan beberapa cara ini, bahwa 8 karakter mengirimkan 7 byte, di mana semua bit signifikan. Cara itu harus dilakukan, Anda dapat membaca di situs web saya sudah metioned. Upaya ini dilakukan oleh laporan Bascom setelah pernyataan

Printhex Dolzspor; Mereka juga mengandung laporan Cetak diperlukan.

Kita akhiri dengan Print char (26);

yang merupakan karakter <ctrl-z> untuk mengakhiri perintah.

Mengapa untuk memproses dan pada data yang sama, untuk mendapatkan dan hasil yang sama? Kami memproses sekali pada simulator Bascom, kami menangkap hasilnya dan kemudian kita meletakkannya dalam laporan Cetak appropirate dari program baru. C35i tidak keberatan.

Nah kedua dua sampel tidak mengganggu, adalah C35i senang dengan perintah kita atau tidak. Kedua program tidak membaca jawaban C35i.

Well, saya tidak berhasil menangkap jawaban dengan perintah Masukan Bascom. Mungkin demikian, saya tidak menguasai Bascom cukup.

Yah saya menulis untuk tujuan ini rutin Interrupt Serial, yang menangkap setiap charater dari RS232 dan meletakkannya di akhir XX1 (1) untuk XX1 (16) daerah karakter besar, baik itu pertama bergerak semua charaters untuk satu byte ke kiri , dan menempatkan karakter baru membaca di akhir. Rutin interupsi Serial tidak melakukan lebih dari ini. Jadi saya selalu ada di XX1 daerah tersebut 16 karakter terakhir dari RS232.

Dengan bantuan Prikazi subroutine kedua (artinya Tunjukkan padaku!) Saya mendapatkan 16 karakter terakhir pada baris pertama dari 2x16 LCD, dan 8 byte terakhir dari itu di baris kedua LCD dalam format heksa. Panggilan subroutine Prikazi diikuti dengan pernyataan tunggu, sehingga LCD dapat visualy diperiksa.

Nah apa-apa begitu rumit pada tampaknya, tapi lebih. Rutin Interrupt Serial Jadi tidak coexsistent dengan pernyataan cetak, jadi aku selalu dinonaktifkan interupsi befor pernyataan print serial dan diaktifkan setelah seperti ini:

Aktifkan Serial

Nonaktifkan Serial

Set Scon.1

Print "AT + CMGS ="; Dolztele

Ulang Scon.1

Aktifkan Serial

Ketiga program yang ditulis sebagai program utama, tetapi Anda akan membuat subrutin dari itu dan Anda akan memanggil mereka dari program utama Anda bila diperlukan






   -------------------------Program saya jadikan 2 columns----
'$ Sim
'Cepat dan Durty sampel untuk mengirim SMS dalam format PDU
'
'
"Peralatan:
'Siemens C35i GSM telepon,
'(Mungkin bekerja juga dengan terminal lain GSM Simens dari
'Dari 35 baris)
'Siemens Kabel Data
'Bascom tes papan dengan 22.118400 Mhz kristal
'

$ Regfile = "89s8252.dat"
$ Baud = 19200
$ Kristal = 22118400

Pekerjaan byte:
Dim I As Byte
Dim J As Byte
Dim K1 As Byte
Dim K2 As Byte
Dim K As Byte
'Panjang nomor telepon di mana pesan yang akan mengirim
Dim Dolzstev As Byte
'Panjang pesan dalam karakter
Dim Dolzspor As Byte
'Panjang seluruh perintah
Dim Dolztele As Byte


Tunggu 1
'Mari kita tunggu litle, mari semua peralatan stabil setelah power on

'Telepon penerima nuber serta pesan itu sendiri
'Bahu akan preproses sebelum kirim ke Siemens
"Pertama kita harus mengetahui panjang dari kedua
'-----------1------
'Mari kita cari tahu panjang tidak ada telepon!
I = 0
Melakukan
   J = Lookup (i, Telno)
   Incr Saya
Loop Until J = 0
Dolzstev = I - 1
'Panjang nomor telepon ini sekarang disimpan dalam Dolzstev
"-------------2------
'Mari kita cari tahu panjang tidak ada pesan!
I = 0
Melakukan
   J = Lookup (i, Sporocilo)
   Incr Saya
Loop Until J = 0
Dolzspor = I - 1
'Panjang dari pesan ini sekarang disimpan dalam Dolzspor
"-----------3--------
'Dengan panjang baik sekarang kita menghitung panjang seluruh perintah
"Kami membutuhkannya untuk perintah AT + CMGS = xx
'
I = Dolzstev Mod 2
J = Dolzstev / 2
I = I + J
Dolztele = 7 + Saya
I = Dolzspor Mod 8
J = Dolzspor / 8
J = J * 7
J = J + I
Dolztele = Dolztele + J
'Panjang perintah ini sekarang disimpan dalam Dolztele
'(keterangnya) cetak
'Sementara Siemens C35i menerima SMS hanya dalam mode PDU, ada tidak perlu
'Untuk beralih ke mode PDU dengan AT + = perintah CMFG 0.
'
"Kami hanya mengirim AT + CMGS = nn iklan, kita akan
'Mengirim SMS
Print "AT + CMGS ="; Dolztele
Tunggu 1
"Sekarang kita mulai untuk mengirim
'Awalan pertama
Print "000100";
"Sekarang tidak mengikuti penerima telepon.
"Ini telah dilakukan dalam awal format internasional dengan
'Tidak negara
'Misalnya: 386 Slovenia
"41 kode area atau dalam contoh kita
'Kode GSM operater Mobitel
'Tidak lokal 123456
'Jadi: 38641123456
'Dikonversi tidak terlihat seperti ini:
'8346614523F1
'Dua dan dua tokoh dipertukarkan dan jika tidak ada tokoh aneh
'F akan ditambah
"Rutinitas ini melakukannya:
Printhex Dolzstev;
Print "91";
Sebab Aku Langkah = 0 Untuk Dolzstev 2
   J = I + 1
   Jika J> = Dolzstev Lalu
      Print "F";
   Lain
      K1 = Lookup (j, Telno)
      Cetak Chr (k1);
   End If
   K1 = Lookup (i, Telno)
   Cetak Chr (k1);
Berikutnya
"Sekarang beberapa atribut mengikuti, 0000 tidak baik
Print "0000";
"Sekarang berikut kompresi 8 karakter dalam 7 byte
'Bagaimana hal itu harus dilakukan, membaca
'Http://www.dreamfabric.com/sms/hello.html

Printhex Dolzspor;
I = 0
J = 1


Melakukan
   K1 = Lookup (i, Sporocilo)
   K2 = Lookup (j, Sporocilo)
   K = Saya Mod 8
   Pergeseran K1, Kanan, K
   K = 7 - K
   Pergeseran K2, Kiri, K
   K1 = K1 + K2
   Printhex K1;
   Incr Saya













-- Contoh Program bascom untuk menyalakan motor

$regfile = "m8535.dat"
   $crystal = 8000000
   $baud = 9600

   Config Pina.2 = Input           'inisialisai port yang digunakan sebagai input/ masukkan
   Config Pina.3 = Input
   Config Pina.4 = Input
   Config Porta.0 = Output
   Config Porta.1 = Output

   Motor_a Alias Porta.0        'inisialisasi port yang digunakan sebagai motor
   Motor_b Alias Porta.1
   Interrupt Alias Pina.7
   Switch_open Alias Pina.2
   Switch_close Alias Pina.3

   Reset Motor_a            
   Reset Motor_b

Motor_a = 1              'motor_a berputar
      Bitwait Switch_open , Set             'berputar sampai dengan limitswich tertekan
         Motor_a = 0                                 'motor_a mati setelah limitswich ditekan
      Bitwait Interrupt , Set
         Cls
         Locate 1 , 6
         Lcd "WELCOME"
      Do
      Loop Until Interrupt = 0
         Motor_b = 1
      Bitwait Switch_close , Set
         Motor_b = 0

Ket : Intinya program diatas adalah menggerakkan motor dc dengan dua arah dimana motor_a adalah untuk searah jarum jam sedangkan motor_b sebaliknya. diamana ditambahkan pula limitswich sebagai pembatas pintu maklum aplikasi program ini untuk buka tutup pintu otomatis klo ngak ganti pake push button bisa juga kok sedangkan interrupt digunakan untuk optocoupler yang berguna untuk mendeteksi orang lewat. jadi secara keseluruhan program ini yaitu pertama motor berputar sampai limitswich tertekan lalu berhenti kemudian menunggu perintah dari optocoupler yaitu pina.7 setelah itu motor berputar sampai mendapatkan masukkan dari limitswich kedua setelah itu motor berhenti selesai deh program nya
mohon maaf klo ada yang salah /kurang jelas Terimakasih

Info (http://argi-argianto.blogspot.com/2011/03/contoh-program-bascom-untuk-menyalakan.html)

Ket : [Materi Kuliah Tahun 2012/03/29- Pelajar Peratikum MikroProsesor D3 Semester 4]
Universitas : Gunadarma Depok
Penulis Abdurrahman Gani
2DC01





Tidak ada komentar:

Posting Komentar

Total Tayangan Blog Me