Aneka Proyek Mikrokontroler PIC16F84/A

A. Mengenal PIC 16F84/A

Komponen penyusun mikrocontroller antara lain:

– CPU (Central Processing Unit)

– ROM (Read Only Memory)

– RAM (Random Acces Memory)

– I/O (Input/Output)

Gb.CPU PIC16F84/A

 

Mikrocontroller PIC16F84/A memiliki spesifikasi sbb:

– ROM (Flash memori) dengan kapasitas 1024 byte (1kb)

– RAM 68 byte

– EEPROM (Memori data) 64 byte

– Timer/counter 8 bit dengan priscaller

– Fasilitas pemrograman didalam sistem (ICSP=In Circuit Serial Programming)

CPU merupakan pengontrol utama pada mikrocontroller sehingga dapat dikatakan sebagai “otak” mikrokontroller. CPU akan melakukan beberapa hal yang meliputi:

– fetch : mengambil instruksi*

– decode: menerjemahkan instruksi*

– excecute: melaksanakan instruksi*

*instruksi yang dimaksud adalah program yang disimpan dalam memoti program(ROM/flash memori). Instruksi – instruksi dalam bahasa assembly yang terdiri    dari OPCODE dan OPERAND.

Register merupakan suatu tempat dalam mikrocontroller dimana kita dapat menuliskan atau membaca isinya. Hal ini karena register ditempatkan pada dua bank yang berbeda.

Kerja Register:

Jika kita hendak mengisi register TRISA, maka harus melalui register w:

movlw b’11111 : masukkan 11111b ke register w

movwf TRISA : copy -kan isi register w ke register TRISA

Kegunaan Register:

INDF : mengatur pengalamatan

TMRO: Register timer/counter

PCL:Mengatur programm counter

STATUS: Status aritmatika, reset dan pemilihan bank

FSR: Mengatur Pengalamatan

PORTA: mengatur logika pada PORTA

PORTB: mengatur logika pada PORTB

EEDATA: mengatur data untuk EEPROM
PCLATH: Mengatur program counter

INTCON: Pengendali sela

OPTION: Register pengatur timer dan Counter

TRISA: Register pengatur arah I/O port A

TRISB:Register pengatur arah I/O port B

Mengolah Port I/O:

PIC 16F84A memiliki 13 bit port I/O yaitu 5 bit portA dan 8bit PortB.

Mengatur Input Output:

-Register untuk mengatur port sebagai masukan/keluaran adalah TRISA dan TRISB.

-Memberikan logika “o” agar port menjadi output dan logika 1 agar port menjadi input.

Mengatur Tinggi/Rendahnya Port:

Setelah melakukan konfigurasi PORTA maupun PORTB maka kita harus tahu bagaimana membuat port tinggi (logika1)atau rendah (logika0).

-Caranya: gunakan PORTB sebagai keluaran setelah itu, buat inputnya menjadi tinggi dengan cara memberikan logika1

Membaca Nilai Port:

– Setelah kita tahu cara mengisi port, maka kita akan mencoba membaca suatu nilai pada PORT

– PORTA sebagai port masukan dan hasil bacaannya akan dikirim ke port B yang dikonfigurasikan sebagai port keluaran.

PORTA akan kita jadikan port masukan dan dilengkapi dengan 5 buah sakelar

– PORTB akan dibuat sebagai port keluaran yang dilengkapi dengan 8 buah LED sebagai indikator

jika terdapat tombol yang ditekan, led yang bersesuaian akan menyala

-perintah mov portA, 0 adalah untuk membaca portA kemudian hasilnya disimpan pada register W(working register)

-dilihat pada gambar dalam keadaan sakelar tertekan port yang tersambung akan bernilai high

-ketika saklar ditekan logikanya menjadi bernilai rendah

– hal ini berlawanan dengan tujuan awal jika tombol ditekan LED akan menyala, jika tidak ditekan LED akan mati

– karena itu dibutuhkan mekanisme untuk mengubah kondisi pada PORTA. Jika tombol ditekan port bernilai rendah dan diinversikan menjadi tinggi

-gunakan perintah “COMF PORT,A” perintah tersebut akan mengubah PORTA dan menyimpan hasilnya pada W register

– inversi artinya jika bit awal = 0 maka bit akhir =1

Membaca dari Suatu Jalur:

Bagaimana jika tedapat satu sakelar saja yang terhubung pada PORTA misal: 

Tugas: Buatlah program agar saat saklar ditekan led menyala

Kompilasi dan Program:

Dalam mikrokontroler PIC 16F84/A terdapat flash memori yang merupakan program memori. Pada memori tersebut disimpan interuksi – intruksi bagi mikrokontroler.

1. Kompilasi Program

– Mikrokontroler hanya tahu 2 kondisi level tegangan yaitu 0 dan 1. semua informasi diproses secara biner (0/1)

– Terdapat bahasa rakitan (assembly) yang dapat memudahkan kita, tetapi mikrokontroler tidak mengerti bahasa assembly jadai kita harus menterjemahkannya ke bilangan biner

2.Proses Kompilasi

– menyediakan program yang ditulis menggunakan kaidah bahasa assembly

– jangan lupa untuk memberikan ekstensi  *.asm

– proses kompilasi yang berhasil akan menghasilkan file ekstensi *.hex setelah proses berlangsung apabila terdapat kesalahan akan gagal dan muncullah pesan (file*.hex belum terbentuk)

-perbaiki kesalahan pada kode sumber dengan buka file *.err

-perbaiki kesalahan program dan ulangi proses kompilasi

-jika berhasil akan diperoleh file coba.hex

3.memprogram mikrokontroler

cara memasukan file ke dalam flash memori:

diperlukan alat yang disebut programmer dapat juga menggunakan ICSP programmer dengan alat ini mikro kontroler tidak perlu dicabut saat memprogram.

Software Downloader:

– software yang digunakan untuk memprogram mikrokontroler yaitu IC-prog 1.05D

– untuk melakukan penyetingan ikutilah langkah sebagi berikut ini:

  a. buka menu setting lalu pilih hardware

  b. selanjutnya pilih AW589 programmer pilih direct I/O untuk jenis interface

  c. klik ok untuk menutup jendela hardware setting

  d. klik menu setting > option > misc

  e. aktivkan pilihan “enable NT/2000/XP driver

  f. klik ok untuk menutup jendela dialog

  g. pada jendela utama MPASM pilih jenis mikrokontroler PIC16f84A untuk tipe oscillator dapat dipilih XT atau HS. untuk fuses pilih PWRT

Setelah persiapan selesai anda dapat  embuka file *.hex yang dihasilkan dari proses kompilasi sebelumnya. Untuk itu, buka menu file > open dan file *.hex yang akan di download ke mikrokontroler. Apabila proses pemrograman berhasil dengan baik, akan ada pesan yang mengindikasikan keberhasilan proses.

SUBRUTIN dan DELAY :

 – Subrutin:

   adalah bagian dari program yang dapat dipanggil dimana saja saat ia dibutuhkan. Keuntungan menggunakan subrutin adalah ukuran file jadi lebih kecil dan juga mempermudah mencari kesalahan program jika bermasalah.

– Delay:

  adalah instruksi pada mikrokontroler PIC 16F84/A umumnya berukuran 1 siklus. Jika menggunakan oscillator berukuran 4 Mhz setiap siklus akan dikerjakan dalam waktu 1/4 Mhz atau 1 mikro second. untuk mendapatkan waktu tunda yang lama dapat digunakan tundaan yang bertingkat.

– Progam Tunda:

  cara kerja program tunda adalah dengan mengurangkan satu (decrement) dari suatu lokasi memori yang lain suatu lokasi memori (Count1) Jika Count1 telah mencapai 0 suatu lokasi memori yang lain (Count2) akan dikurangi dengan 1 dst. Jika count2 mencapai nilai 1 maka count berakhir. Contoh subrutin:

DEFINE OSC 4        ‘ Memilih oscilator 4 Mhz

DEFINE loader_used 1

LED var PORTD.0     ‘ LED sebagai alias PORTD.0

Main:
    High LED        ‘ LED diberi nilai 1/+5VDC
    Pause 500       ‘ Tunda selama 500ms
    Low LED         ‘ LED diberi nilai 0 /0VDC
    Pause 500       ‘ Tunda selama 500ms
Goto Main
End

Contoh Program Assembler:

‘****************************************************************Modul MicroController

 ‘* Name : Kedip.ASM *

‘* Author : M.Hidayat *

‘* Notice : Copyright (c) 2003 Polman Astra *

‘* : All Rights Reserved *

‘* Date : 2/27/2003 *

‘* Version : 1.0 *

‘* Modul : PIC 2 *

‘* CPU : PIC16f84 *

‘* Software: MPLAB 7.11, EpicWin, *

‘* Compiler: – *

‘* Durasi : 3 jam *

‘****************************************************************

;***** Declaring and configuring a microcontroller *****

PROCESSOR 16f877

#include “p16f877.inc”

;Define Registers Used

T1 equ 20

T2 equ 21

T3 equ 22

;***** Structure of program memory *****

ORG 0x00 ; Reset vector

goto Main

ORG 0x04 ; Interrupt vector

goto Main ; No interrupt routine

Main

banksel PORTD

clrf PORTD

movlw 0x00

banksel TRISD

movwf TRISD

Loop

banksel PORTD

movlw 0x88

movwf PORTD

call Wait

banksel PORTD

movlw 0x00

movwf PORTD

call Wait

goto Loop

Wait ;Approx 125 mS delay

movlw .255

movwf T2

delay1

call Delay

decfsz T2,f ;Decrement this register and

goto delay1 ; keep going until it hits zero

Politeknik Manufaktur Astra

Delay ;Short delay

movlw .255 ;Load Temp register with constant for .3 ms

movwf T1

delay4

call delay2

decfsz T1,f ;Decrement until zero

goto delay4

delay2

movlw .2

movwf T3

delay3

decfsz T3,f

goto delay3

return

END

TUNDA MENGGUNAKAN TIMER:

– pada mikrokontroler PIC 16F84/A terdapat timer dan counter berukuran 8-bit register yang bersesuaian adalah TMRO yang beralamat di 01H

– Kecepatan timer dientukan oleh siklus pelaksanaan instruksi pada mikrokontroller

– Hitungan dari 0000 0000b sampai 1111 1111b akan diselesaikan dalam waktu 256 mikro second

– Agar dapat melambat maka digunakan prescaler 1:4 maka setiap pulsa yang masuk akan dihitung sebagai satu pulsa masuk bagi timer

   maka akan dihasilkan:

 0000 0000b ==> 1111 1111b sebesar 256 mikro second.

SOFTWARE DELAY (Pic Del):

– software ini memudahkan kita untuk membuat tundaan dengan hanya memasukan parameter seperti kecepatan clock dan waktu tundaan dengan hanay memasukan parameter seperti kecepatan clock, dan waktu tundanya software ini akan mengirim data tersebut

– cara :

   * masukan data frekuensi yang kita pakai pada kolom frekuensi

   *masukan nilai untuk delay time

   *tekan tombol calculate cycle

   *tekan tombol generate mode

– kita langsung mendapatkan kode

-untuk membuat delay 1 detik program akan membutuhkan lokasi RAM (Pdel0.Pdel1,Pdel2) serta sebuah stack

-untuk itu kita harus menyediakan 3 lokasi RAM untuk untuk penempatannya

Timer/Counter dan Interupsi:

Paa PIC 16F84A telah terdapat sebuah timer ataupun counter yang berukuran 8bit kita dapat memanfaatkannya untuk membuat tundaan atau untuk menghitung kejadian (fungsi counter). Sifat timer/counter:

– timer/counter berukuran 8bit

– dapat dibaca atau ditulis

-terdapat pres caller berukuran 8bit yang dapat diprogram

-sumber clock dapat dipilih

-intterupsi pada overflow

-pemilihan edge untuk clock luar

Menggunakan Timer:

bisa dijadikan timer maupun counter sesuai kondisi.Berikut syarat untuk menjadikan timer

– bit TOCS jika diclear akan terpilih fungsi timer

– sebaliknya jika di set akan menjadi counter

– jika dimisalkan modul TMR0 (di 0H1) berisi 0000 0000b setiap satu siklus  intruksi, hitungan akan bertambah satu menjadi 0000 00001b lalu 0000 0010b dan 1111 1111b

Menggunakan Counter:

– sama seperti timer tetapi beda sumber clocknya timer = internal /counter =external

– bit TOCS harus diset (1) bit TOSE diatur jika = 1 hitungan counter turun.jika = 0 hitungan counter naik

– counter akan dinaikan hitungannya dengan cara menekan tombol pada penan RA4

Daftar Pustaka:

Malik,Ibnu.2009.Aneka Proyek Mikrokontroller PIC16F84/A.Elek Media Komputindo.Jakarta:Indonesia

Penampakan Buku:

Comments
2 Responses to “Aneka Proyek Mikrokontroler PIC16F84/A”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

  • Trying To Be Consisten

    Let's make your self consistance in over view, and carefuly in manage emotion..:))

  • Thank You

    I just wanna say thank to every people surround of me who gave me many new knowledge that build my mature...^-^
  • Sorry ….

    I am sorry for every mistake I made in every time I passed away...
  • Please Help Me…

    I am a beginer in a writing a blog need too many your help as a reader by leave your comments here. Your comments will be an equipment to build my knowledge.
%d bloggers like this: