PIC 12F675 adalah mikrokontroler CMOS 8-bit buatan Microchip. PIC 12F675 berukuran kecil dan hanya memiliki 8 pin. PIC 12F675 memiliki memori program (FLASH) berukuran 1024 words, SRAM 64 byte dan EEPROM 128 byte.
PIC12F675 memiliki 6 buah pin GPIO, 1 buah komparator tegangan analog dan 1 buah Timer 8-bit dan 1 buah Timer 16-bit. Dan tidak sperti saudara kembarnya PIC 12F629 yang tidak dilengkapi dengan Analog-to-Digital Converter (ADC), PIC 12F675 memiliki 4 buah pin ADC dengan resolusi 10-bit.
Pin-pin GPIO mikrokontroler PIC 12F675 memiliki kapasitas arus yang tinggi sehingga bisa langsung digunakan untuk mengontrol LED.
Layout Pin PIC 12F629/675

Berikut ini adalah layout pin dari mikrokontroler PIC 12F629 dan PIC 12F675. Untuk detilnya silakan membaca datasheet PIC12F629/675 yang dapat Anda unduh melalui link berikut ini.
Rangkaian Eksperimen PIC 12F675
Sesuai dengan judul artikel di atas, pada eksperimen ini kita tidak akan membuat Blinking LED, hehehe. Nah, simak rangkaian berikut ini.

Sebuah rangkaian LED Active-High terhubung ke PIN-2 (GP5) dan sebuah rangkaian Push-Button Active-Low terhubung ke PIN-6 (GP1).
Resistor Pull-Up 10K (R1) pada PIN-4 (MCLR / Master Clear) diperlukan agar pin ini tetap berada pada kondisi logika HIGH setelah mikrokontroler menjalani proses reset. Pada mikrokontroler AVR, pin MCLR disebut pin RESET.
Resistor Pull-Up 10K (R2) dan Push-Button (PB1) membentuk rangkaian input Push-Button Aktif-Low. Jika PB1 tidak ditekan, maka PIN-6 (GP1) akan berlogika HIGH. Dan jika PB1 ditekan, maka GP1 akan berlogika LOW.

Pemrograman PIC 12F675
Untuk pemrograman, saya menggunakan Just Another Language atau disingkat JAL.
JAL adalah bahasa pemrograman open source yang dibuat untuk memrogram mikrokontroler PIC dari Microchip. Bahasa pemrograman JAL mirip seperti bahasa pemrograman Pascal. Dan seperti Pascal, JAL tidak case-sensitive.
IDE untuk JAL adalah JAL Edit. Program ini dilengkapi dengan text editor, jalv2 compiler dan fasilitas untuk menjalankan program untuk proses burning atau pemrograman chip PIC.
Selain itu, JAL Edit juga memiliki beberapa tools seperti Communication Terminal dan ASCII Chart (Tabel Kode ASCII).
Dengan JAL Edit, kita siap meyusun program untuk mikrokontroler Microchip 8-bit.

Nah, berikut ini adalah kode program JAL selengkapnya untuk rangkaian eksperimen di atas.
Program ini bertujuan untuk mengontrol LED dengan Push-Button. Jika PB1 ditekan, maka LED akan menyala. Dan jika PB1 dilepas (tidak ditekan), maka LED akan padam.
Kode Program
-- Title: 12f675_led_button.jal -- Description: Mengontrol LED dengan Push-Button -- BUKAN Blinking LED :) -- Author: Chandra MDE - teknikelektrolinks.com -- Date: 20 April 2022 -- Microcontroller: PIC 12F675 include 12f675 pragma target clock 4_000_000 -- 4MHz pragma target OSC INTOSC_NOCLKOUT -- internal osc pragma target WDT DISABLED pragma target BROWNOUT DISABLED pragma target MCLR EXTERNAL enable_digital_io() include delay alias led is pin_A5 alias button is pin_A1 pin_A5_direction = OUTPUT pin_A1_direction = INPUT forever loop if button == 0 then delay_1ms(50) if button == 0 then led = 1 end if elsif button == 1 then delay_1ms(50) if button == 1 then led = 0 end if end if end loop
Untuk menghasilkan file .HEX, maka perlu dilakukan proses kompilasi. Caranya adalah dengan memilih menu Compile –> Compile atau bisa juga dengan menekan tombol fungsi F9. Cara lain adalah dengan meng-klik pada button Compile actival jal file (ikon Play).
Proses Burning
Untuk memrogram chip PIC 12F675, saya menggunakan modul PIC Programmer K150. Berikut ini adalah tampilan dari program aplikasinya.

Penjelasan Singkat Kode Program
Komentar pada JAL diawali dengan 2 karakter -, yakni: —. Contoh:
-- Ini adalah komentar. Komentar tidak dikompilasi. alias led is pin_A5 -- led adalah nama alias untuk pin_A5
Baris perintah: include 12f675 berfungsi untuk mengikutsertakan file library mikrokontroler 12F675.
Baris-baris perintah dengan awalan pragma target adalah baris-baris konfigurasi mikrokontroler.
pragma target clock 4_000_000 pragma target OSC INTOSC_NOCLKOUT
artinya mikrokontroler 12F675 akan bekerja pada frekuensi 4MHz menggunakan Internal Oscillator.
pragma target WDT DISABLED pragma target BROWNOUT DISABLED pragma target MCLR EXTERNAL
artinya Watchdog Timer dan Brown-Out Detector tidak digunakan dan menggunakan reset eksternal. Dengan konfigurasi reset eksternal, maka diperlukan resistor pull-up R1 untuk menahan kondisi logika HIGH pada pin MCLR. Cek rangkaian eksperimen di atas.
Baris perintah: enable_digital_io() artinya semua pin akan berfungsi sebagai Digital I/O. Karena kita menggunakan output LED dan input Push-Button, maka kita perlu menggunakan perintah enable_digital_io().
alias berfungsi untuk memberi nama alias untuk pin mikrokontroler.
alias led is pin_A5 alias button is pin_A1
artinya, led adalah nama lain dari pin_A5 dan button adalah nama lain dari pin_A1. Dengan menggunakan alias, maka kita bisa menggunakan nama led dan button sebagai pengganti pin_A5 dan pin_A1 dalam kode program.
pin_A5_direction = OUTPUT artinya pin_A5 akan difungsikan sebagai output.
pin_A1_direction = INPUT artinya pin_A1 akan difungsikan sebagai input.
Adapun baris-baris perintah berikut ini adalah kode program utama yang berfungsi untuk mendeteksi kondisi logika pin_A1 (Push-Button) dan mengeset kondisi logika pin_A5 (LED) sesuai dengan kondisi Push-Button.
Jika Push-Button ditekan, maka LED akan menyala. Dan jika Push-Button dilepas (tidak ditekan), maka LED akan padam.
forever loop if button == 0 then delay_1ms(50) if button == 0 then led = 1 end if elsif button == 1 then delay_1ms(50) if button == 1 then led = 0 end if end if end loop
Nah, bagaimana? Bukan Blinking LED kan?
Program di atas memang sederhana, namun demikian bukan berarti secara fungsional tidak berguna. Program di atas adalah program testing untuk modul driver Relay 24V dengan input berupa modul sensor Photo-electric produk dari Omron atau Autonics.
Semoga bermanfaat.