Modul Ii Timer.docx

  • Uploaded by: amin rizza
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Modul Ii Timer.docx as PDF for free.

More details

  • Words: 3,371
  • Pages: 19
MODUL II TIMER, COUNTER, INTERRUPT Moch Amin Rizsa Ramadhan (13216102) Asisten: William Candra (13215052) Tanggal Percobaan: 24//02/2019 EL3214 – Praktikum Sistem Mikroprosesor

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak Pada percobaan pertama ini, dilakukan beberapa percobaan berkaitan dengan Timer, Counter, dan Interrupt. Dilakukan percobaan set delay memanfaatkan timer/counter untuk mendapatkan waktu yang lebih presisi. Clock yang digunakan untuk timer/counter berasal dari trigger internal dan eksternal. Dilakukan juga pengaplikasian interrupt dengan timer conter (clock internal & eksternal). Penggunaan ATMega8535 ini memanfaatkan software opensource WINAVR yang di dalamnya terdapat programmers notepad dan AVRDude untuk mengcompile dan mendownload program Atmel dalam bahasa C. Dari hasil percobaan didapatkan nyala lampu LED pada trainer board yang sesuai dengan yang diharapkan pada modul praktikum. 1.

PENDAHULUAN

ATMega merupakan sistem minimum yang sering digunakan sebagai prosesor sebuah sistem sederhana. Dalam hal ini, sistem minimum ATMega, khususnya ATMega 8535 digunakan sebagai kit praktikum, sehingga diharapkan setelah melakukan percobaan, mahasiswa dapat:

ATMega 8535 merupakan salah satu mikro kontroler 8 bit buatan Atmel untuk keluarga AVR yang diproduksi secara massal pada tahun 2006. Karena merupakan keluarga AVR, maka ATMega 8535 juga menggunakan arsitektur RISC. Secara singkat, ATMega 8535 memiliki beberapa kemampuan: a. Sistem mikrokontroler 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. b. Memiliki memori flash 8 KB, SRAM sebesar 512 byte dan EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 512 byte. c. Memiliki ADC (pengubah analog-ke-digital) internal dengan ketelitian 10 bit sebanyak 8 saluran. d. Memiliki PWM (Pulse Width Modulation) internal sebanyak 4 saluran. e. Portal komunikasi serial (USART) dengan kecepatan maksimal 2.5 Mbps. f. Enam pilihan mode sleep, untuk menghemat penggunaan daya listrik.



Memahami datasheet ATMega8535



Mampu membuat aplikasi input dan output pada AVR dengan menggunakan bahasa pemrigraman C pada WinAVR.

Mikrokontroler ATMega8535 memiliki 40 pin untuk model PDIP, dan 44 pin untuk model TQFP dan PLCC. Nama-nama pin pada mikrokontroler ini adalah:



Memahami pengesetan fuse yang berkaitan dengan penggunaan besar dan kristal

a. VCC untuk tegangan pencatu daya positif.



Memahami karakteristik modulasi AM dan DSBSC.

2.

STUDI PUSTAKA

b. GND untuk tegangan pencatu daya negatif. c. PortA (PA0 – PA7) sebagai port Input/Output dan memiliki kemampuan lain yaitu sebagai input untuk ADC. d. PortB (PB0 – PB7) sebagai port Input/Output dan juga memiliki kemampuan yang lain.

ATMega8535

e. PortC (PC0 – PC7) sebagai port Input/Output untuk ATMega8535. f. PortD (PD0 – PD7) sebagai port Input/Output dan juga memiliki kemampuan yang lain. g. RESET untuk melakukan reset program dalam mikro kontroler. Gambar 1. ATMega8535 Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

1

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2 h. XTAL1 dan XTAL2 untuk input pembangkit sinyal clock.

Membuat Code Program Secara umum, semua percobaan yang dilakukan memeiliki alur yang sama. Alurnya sebagai berikut.

i. AVCC untuk pin masukan tegangan pencatu daya untuk ADC.

Buat code program yang merealisasikan perintah modul pada notepad programmers.

j. AREF untuk pin tegangan referensi ADC. Untuk melakukan pemrograman dalam mikro kontroler AVR, Atmel telah menyediakan software khusus yang dapat diunduh dari website resmi Atmel. Software tersebut adalah AVRStudio. Software ini menggunakan bahasa assembly sebagai bahasa perantaranya. Selain AVRStudio, ada beberapa software pihak ketiga yang dapat digunakan untuk membuat program pada AVR. Software dari pihak ketiga ini menggunakan bahasa pemrograman tingkat tinggi seperti bahasa C, Java, atau Basic. Untuk melakukan pemindahan dari komputer ke dalam chip, dapat digunakan beberapa cara seperti menggunakan kabel JTAG atau menggunakan STNK buatan Atmel.

3.

Make All programm/run program.

Amati nyala LED dan hubungaanya dengan saklar IS1, IS2, ..., IS7.

METODOLOGI Gambar 1. Alur Praktikum

3.1

ALAT DAN KOMPONEN

Berikut beberapa peralatan yang digunakan saat melakukan percobaan: 

Komputer yang terinstall aplikasi WinAVR



ATMega8535



Trainer Board



Kabel Kabel

3.2

4.

HASIL DAN ANALISIS

DELAY DENGAN TIMER/COUNTER Pada percobaan pertama ini, dilakukan pengujian terhadap progam yang sudah terdapat pada modul.

ALUR PERCOBAAN

Persiapan Hardware/Software

Beri ATMega8535 tergangan input dari power supply sebesar 9 Volt.

Hubungkan pin PORTX (sesuai modul) ATMega8535 pada port input/output trainer board.

Buka WinAVR, Projek baru, edit makefile yang tersedia berdasarkan petunjuk modul. Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

2

Gambar 4.1. Flow Chart TugasA1/A2

Pin A ATMega8535 diset sebagai output dengan code DDRA = 0xFF. Sinyal output dari pin A ini akan digunakan untuk mengontrol nyala LED pada trainer board. Untuk tugas ini 4 LED paling kanan nyala bergantian dengan 4 LED paling kiri bdengan interval waktu 1 s.

menapung 8 bit saja, maka nilai ini ditampung dalam 2 register OCR1H dan OCR1L, OCR1H =0x70 & OCR1L = 0x80. Setelah compare match, interrupt akan kembali disable untuk menjalankan kembali program utama. (TugasA2) Pada tugas ini, praktikan diperintahkan untuk memodifikasi source code pada TugasA1 untuk sehingga nyala 4 LED paling kanan bergantian dengan 4 LED paling kiri dengan interval waktu x s, dengan x = Nomor kelompok praktikum mod 5 + 2. Artinya, waktu 3s (kelompok E6) menjadi lama waktu delay yang digunakan untuk tugas A2 ini.

Gambar 4.2. Tampilan LED TugasA1

Sebelum masuk ke superlooping, program akan menge-set terlebih dahulu agar kondisi overflow interrupt tidak diaktifkan melalui fungsi init_tim. Fungsi ini mengenalkan pada prosesor bahwa pengunaan clock timer/counter menggunakan prescaler 256 CTC (clear Time on Compare) [TCCR1A=0; TCCR1B=0b00001100; ] dan mengnonaktifkan interrupt [TIMSK|=(0<
Gambar 4.3. Tampilan LED TugasA2

Realisasi untuk tugas ini dengan memodifikasi isi dari fungsi Delay() source code sebelumnya. Modifikasi dilakukan pada komponen Register OCR yang menjadi nilai akhir (compare point). Perubahan nilai akhir ini dapat dilakukan karena pada register TCCR telah dideklarasi bahwa akan digunkan mode timer CTC yang nilai akhirnya dapat diatur. Untuk mendapatkan delay selama 3 s, dengan mengikuti persamaan sebelumnya, diperoleh: 𝑂𝐶𝑅 = 3𝑠.

7372800 = 86400 256

Akan tetapi, dikarenakan nilai OCR berada diluar batas maksimal register 16 bit (65535), maka hal digunakan prescalar yang lebih besar yaitu 1024. Untuk menggunakan prescalar dengan nilai itu maka perlu dilakukan perubahan mode operasi timer pada register TCCR, TCCR = 0b00001101. Nilai baru untuk OCR dengan prescalar 1024 diperoleh dari: 𝑂𝐶𝑅 = 3𝑠.

7372800 = 2160 1024

Nilai ini dalam bilangan hexadecimal adalah 5460, OCR = 0x5460. nilai ini ditampung dalam 2 register OCR1H dan OCR1L, OCR1H =0x54 & OCR1L = 0x60.

Untuk mendaptkan delay selama 1 detik maka: 𝑂𝐶𝑅 = 1𝑠.

EKSTERNAL CLOCK SEBAGAI COUNTER

7372800 = 28800 256

Nilai ini dalam bilangan hexadecimal adalah 7080, OCR = 0x7080. Karena Register OCR hanya mampu

Pada tugas ini, eksternal clock digunakan untuk mentrigger counter. Eksternal clock ini berasal dari button IS1 pada trainer board yang akan

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

3

memberikan sinyal HIGH saat button tersebbut ditekan. (TugasB1) Dilakukan run program terhadap source code pada lampiran.

Gambar 4.5. Tampilan LED TugasB1

(TugasB2) Pada tugas ini, dilakukan modifikasi terhadap source code pada TugasB1 sehingga nyala LED akan berganti setelah penekanan x kali button dan kondisi LED yang berbeda ini terjadi selama x s, di mana x = nomor kelompok praktikum mod 5 + 3. Penekanaan button ISP sebnayak 4x akan membuat nyal LED berbeda selama 4 sekon (kelompok E6). Untuk merealisasikan ini dilkukan modifikasi pada initial value TCNT0 dan compare value OCR0 (TNCT0 = 0 & OCR0 = 3) agar kondisi LED baru berubah saat penekanan 4x button IS1. Sedangkan agar kondisi LED yang berbeda bertahan selama 4s, digunakan fungsi Delay() seperti pada tugasA dengan nilai OCR1H dan OCR1L yang disesuaikan. Nilai OCR ini dapat dicari mengikuti persamaan 1: 𝑂𝐶𝑅 = 4𝑠.

Gambar 4.4. Flowchart Tugas B1/B2

#define F_CPU dgunakan untuk penyesuaian nilai eksternal clock. #include digunakan untuk memberitahu preprosesor bahwa akan digunakan fungsi dari library tersebut. PORTA diset sebagai output dengan DDRA = 0xFF. Kondisi default program selalu 1 sehingga akan dilakukan superlooping untuk menyalakan LED berdasar sinyal instruksi dari PORTA. Penggunaan TCCR0 = 0b00000110 berarti sumber clock berasal dari clock eksternal pada pin T0 ATMega8535, counter dilakukan saat falling edge. Sumber clock ini berupa button ISP pada trainer board yang jika ditekan akan membuat nilai pada register TCNT0 melakukan counter. Initial value TCNT0 = 123 dan compare value OCR0 = 124 berarti jika dilakukan 2 kali penekanan pada button IS1, maka Flag ini akan kembali di-nol-kan dengan setting register TIFR yang berdfungsi untuk mendeteksi adanya interrupt dati counter/timer [TIFR = (0<
7372800 = 28800 1204

Nilai ini dalam bilangan hexadecimal adalah 7080, OCR = 0x7080. nilai ini ditampung dalam 2 register OCR1H dan .OCR1L, OCR1H =0x70 & OCR1L = 0x80.

Gambar 4.6 Tampilan LED TugasB2

APLIKASI INTERRUPT DENGAN TIMER COUNTER.

/

Pada TugasC ini, dilakukan percobaan yang memanfaatkan counter/timer sebagai interrrupt. (TugasC1) Dilakukan run terhadap diberikan oleh modul.

source

code

yang

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

4

Gambar 4.8. Tampilan LED Tugas C1

(TugasC2) Pada tugas ini, dilakukan modifikasi terhadap source code pada TugasB1 sehingga interupsi baru terjadi setelah program utama dijalankan selama x s, di mana x = nomor kelompook praktikum mod 5 + 2. Artinya setelah 3s, interupsi program baru terdeteksi (kelompok E6). Untuk merealisasikan tugas tersebut, Dilkuakan modifikasi nilai pada register TCNT dengan mengikuti persamaan: 𝑇𝐶𝑁𝑇 = (1 + 𝐹𝐹𝐹𝐹ℎ) − 𝑡𝑑𝑒𝑙𝑎𝑦 𝑇𝐶𝑁𝑇 = (65536) − 3 Gambar 4.7. Flowchart Tugas C1/C2

𝑓𝑐𝑙𝑘 𝑁

7372800 = 43936 1024

Dalam bilangan hexadesimal TCNT = 0xABA0 (TCNT1H = 0xAB, TCNT1L = 0xA0).

Fungsi ISR() digunakan untuk mendeteksi adanay intrrupt. Jika terdeteksi adanya interrupt, maka prosesor akan diberitahu untuk bahwa ada program lain yang lebih diprioritaskan untuk dieksekusi dibandingkan dengan program utama. Saat program lain ini dieksekusi, maka program utama akan ditahan terlebih dahulu hingga proram lain teresbut selesai dieksekusi. Program lain yang dijalankan saat terjadi interrupt adalah bentuk LED yang menyala semua (bit 1-8) pada trainer board selama 500 detik. Sedangkan jika tak terdeteksi adanya interupsi, maka program utam akan dijalankan dan menampilkan nyala LED bit ganjil dan bit genap secara bergantian dengan interval waktu 100ms. Interupsi baru akan terdeteksi setelah program utam dijalankan selama 1s, hal ini didasarkan pada pemberian nilai pada register TCNT, TCNT0 = 0xE3DF yang memberikan lama waktu 1s. Register ini akan terus melakukan counter dari nilai terendah hingga nilai tertingginya yaitu 65535 untuk register 16 bit (Timer/Counter 1 aktif pada TIMSK = 0b000100) karena mode operasi yang digunakan adalah mode normal (TCCR1B = 0b00000101) dengan prescaler 1024.

Gambar 4.9. Tampilan LED TugasC2

EKSTERNAL INTERRUPT Pada pecobaan terkhir ini kembali digunakan button IS1 dan IS2 sebagai control lampu LED melalui interupsi eksternal. (TugasD1) Pada tugas ini, Pin INT0 pada ATMega8535 dijadikan sebagi pin yang menerima sinyal input dari button IS1 pada trainer board. Saat button ditekan, maka akan terjadi interupsi terhadap program utama untuk mengeksekusi program lain yang ada pada baris kode fungsi ISR().

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

5

Gambar 4.10. Tampilan LED Tugas D1

Konfigurasi eksternal interrupt seperti ini di atur memanfaatkan register external interrupt MCUCR, MCUCSR, GICR, dan GIFR pada fungsi intial external intrrupt [init_Ext_int()]. MCUCR = 0x02 berarti saat sinyal pada INT1 falling edge, maka program akan diminta untuk melakukan interupsi. GIFR dan GICR dengan nilai 0x40 bekerja sama untuk mengaktifkan external interrupt request 1 dan external interrupt flag 1. (TugasD2) Percobaan terakhir menugaskan praktikan untuk membuat kode yang merealisasikan LED dengan kondisi berikut: 

Program utama akan menampilkan data ”FFh” bergantian dengan data ”00h”, masing-masing selama ½ detik.



Jika terjadi interrupt dari INT0, program akan menampilkan data ”99h” bergantian dengan data ”66h”,masing-masing selama ½ detik. Setelah itu kembali ke program utama.



Jika terjadi interrupt dari INT1, program akan menampilkan data ”XXh” bergantian dengan data ”YYh”,masing-masing selama ½ detik.. Setelah itu kembali ke program utama dengan XX adalah dua digit terakhir NIM praktikan 1 dan YY adalah dua digit terakhir NIM praktikan 1.

Gambar 4.9. Flowchart Tugas D1

Sebelum interupsi, Program utama akan dijalankan dan menampilkan LED dengan nyala seperti pada tugas sebelumnya yaitu semua LED bit genap akan nyala bergantian dengan semua LED bit ganjil dengan interval waktu 500ms. Saat interupsi terjadi (button IS1 ditekan) maka program lain isi dari fungsi ISR akan dijalankan dan menampilkan LED yang bergerak meutar dari kanan ke kiri.

Realisasi untuk syarat-syarat tersebut menggunakan tambahan button IS2 dari trainer board dan dihubungkan pada pin INT1 pada ATMega8535.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

6

Gambar 4.12. Tampilan LED TugasD2

5.

KESIMPULAN

Dari hasil praktikum ini, dapat ditarik beberapa kesimpulan antara lain:

Gambar 4.11. Flowchart Tugas D2

perbedaan dengan tugsD1 hanya pada penambahan fungsi ISR(INT1_vect) untuk mendeteksi adanya perintah interupsi melalui penekanan button IS2 pada trainer board. Perintah interuksi pada masing-masing button akan mengalihkan proses eksekusi pada program yang ada pada blok fungsi ISR(). Selain itu, value dari register external interrupt juga disesuaikan. MCUCR = 0x0A berarti kini ada dua pin yang berperan untuk menerima perintah interupsi saat sinyal falling edge yaitu pin INT0 dan pin INT1. GIFR dan GICR dengan value 0xC0 berarti kini INT1 dan INT0 keduanya diaktifkan untuk external interrupt request dan flag.



Untuk melakukan konfigurasi Timer/Counter dan Interrupt, digunakan register TCCRx, TCNTx, OCRx, TIMSK, dan TIFR.



Register TCCRx digunakan untuk melakukan setting clock yang digunakan, baik clock eksternal maupun clock internal, demikian pula dengan prescaler yang digunakan. Selain itu, pada register TCCRx juga dapat dilakukan pengesetan mode operasi.



Register TCNTx merupakan register 8 bit (16 bit untuk TCNT1) yang digunakan sebagai tempat menyimpan nilai timer/counte.



Register OCRx merupakan register 8 bit (16 bit untuk OCR1) tempat menyimpan nilai output compare match.



Register TIMSK merupakan register yang mengatur tipe interrupt yang terjadi (aktif). Bit 0 pada register TIMSK merupakan bit TOIE0 yang mana jika diset akan mengaktifkan interrupt berdasarkan Timer/Counter0 (TCNT0) Overflow. Sementara bit 1 pada TIMSK merupakan bit OCIE0 yang mana jka diset akan mengaktifkan interrupt berdasarkan compare match antara nilai TCNT0 dengan nilai OCR0. Demikian pula dengan bit lainnya, yg dicantumkan di bawah ini,

Gambar 5.1 Register TIMSK

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

7

Dapat dilihat dari gambar di atas, bahwa penjelasan untuk bit-bit lainnya sama seperti penjelasan pada bit 0 dan bit 1 pada penjelasan sebelumnya. Namun dapat dilihat pada bit 5, bahwa terdapat bit TICIE1 yang mana ketika diset maka interrupt Timer/Counter1 Input Capture akan aktif. 

Register TIFR merupakan register yang berisi bit flag interrupt. Bit 0 merupakan bit flag Timer/Counter0 Overflow interrupt. Sementara bit 1 merupakan bit flag Output Compare0 match interrupt. Untuk bit-bit lainnya, penjelasannya sesuai dengan penjelasan sebelumnya kecuali untuk bit 5 yaitu bit flag untuk Input Capture1 interrupt.

Gambar 2.17 Register TIFR Untuk melakukan kofigurasi External Interrupt, maka dilakukan pengesetan pada register MCUCR, MCUCSR, GICR, dan GIFR.Register MCUCR digunakan jika ingin mengeset pin INT0 (bit 1 dan bit 0) maupun pin INT1 (bit 3 dan bit 2) sebagai pin interrupt eksternal.Register MCUCSR digunakan jika ingin mengeset pin INT2 (bit 6) sebagai pin interrupt eksternal.Register GICR digunakan untuk mengaktifkan interrupt eksternal dengan pin yang berkorelasi dan Register GIFR digunakan sebagai flag interrupt eksternal yang berkorelasi..

Gambar 2.18 Register GICR & GIFR

DAFTAR PUSTAKA [1]

Tim Asisten, Praktikum Sistem Mikroprosesor, Laboratorium Dasar Teknik Elektro ITB, Bandung, 2019.

[2]

http://id.wikipedia.org/wiki/ATMega8535, 24-02-2019, 10:12

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

8

LAMPIRAN /=============================================================== ========================================= //Tugas 2A1 //============================================================== ========================================== #include void init_tim(void); void Delay(void); int main(void) { DDRA=0xFF; PORTA=0x00; init_tim(); while (1) { PORTA=0x0F; Delay(); PORTA=0xF0; Delay(); } return 0; } void init_tim(void) { //mode operasi CTC, sumber clock prescaller 256 TCCR1A=0; TCCR1B=0b00001100; //overflow interrupt disable TIMSK|=(0<
9

OCR1AH=0x7A; OCR1AL=0x12; //menunggu hingga compare match, nilai TCNT1=OCR1A loop_until_bit_is_set(TIFR,OCF1A); //meng-nol-kan flag TIFR|=_BV(OCF1A); //overflow interrupt disable TIMSK|=_BV(TOIE1); } //========================================================== ============================================== //============================================================== ========================================== //Tugas 2A2 //============================================================== ========================================== #include void init_tim(void); void Delay(void); int main(void) { DDRA=0xFF; PORTA=0x00; init_tim(); while (1) { PORTA=0x0F; Delay(); PORTA=0xF0; Delay(); } return 0; } void init_tim(void) { //mode operasi CTC, sumber clock prescaller 1024 TCCR1A=0; TCCR1B=0b00001101; //overflow interrupt disable TIMSK|=(0<
1 0

} void Delay(void) { //overflow interrupt enable TIMSK|=_BV(TOIE1); //(1< #define F_CPU 7372800UL #include void init_tim(void); int main(void) { init_tim(); DDRA=0xFF; while(1) { //penentuan nilai awal timer TCNT0 = 123; //penentuan nilai compare OCR0 = 125; //menanti compare match while(bit_is_clear(TIFR,OCF0)) { Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

11

PORTA=0b10101010; } //mengenolkan flag TIFR|=_BV(OCF0); PORTA=0b01010101; _delay_ms(500); } return 0; } void init_tim(void) { //mode operasi dan sumber clock TCCR0=0b00000110; //overflow interrupt disable TIMSK=(0< #define F_CPU 7372800UL #include void init_tim(void); void Delay(void); int main(void) { init_tim(); DDRA=0xFF; while(1) { //penentuan nilai awal timer TCNT0 = 0; //penentuan nilai compare OCR0 = 2; //menanti compare match while(bit_is_clear(TIFR,OCF0)) { Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

12

PORTA=0b10101010; } //mengenolkan flag TIFR|=_BV(OCF0); PORTA=0b01010101; Delay(); } return 0; } void init_tim(void) { //mode operasi CTC, sumber clock prescaller 1024 TCCR1A=0; TCCR1B=0b00001101; //overflow interrupt disable TIMSK|=(0<
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

13

//========================================================== =============================================== //========================================================== ============================================== //Tugas 2C1 //========================================================== ============================================== #include #define F_CPU 7372800UL #include #include void init_int(void); ISR(TIMER1_OVF_vect) { unsigned char i; PORTA=0xFF; _delay_ms(200); TIFR=(1<
14

TCNT1L=0xDF; sei(); } //========================================================== ============================================== //========================================================== =============================================== //Tugas 2C1 //============================================================== ========================================== #include #define F_CPU 7372800UL #include #include void init_int(void); ISR(TIMER1_OVF_vect) { unsigned char i; PORTA=0xFF; _delay_ms(200); TIFR=(1<
15

TIMSK=0b000000; TCCR1B=0b00000101; //prescalar 1024 TCNT1H=0xAB; TCNT1L=0xA0; sei(); } //========================================================== ============================================== //============================================================== ========================================== //Tugas 2D1 //============================================================== ========================================== #include #define F_CPU 7372800UL #include #include void Init_Ext_Int(void); ISR(INT0_vect) { unsigned char i=0x01,n; for(n=0;n<8;++n) { PORTA = i; _delay_ms(250); i=(i<<1)|(i>>7); } } int main(void) { Init_Ext_Int(); sei(); DDRA=0xFF; while (1) { PORTA = 0b10101010; _delay_ms(500); PORTA = 0b01010101; _delay_ms(500); } Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

16

return 0; } void Init_Ext_Int(void) { MCUCR=0x02; MCUCSR=0x00; GICR=0x40; GIFR=0x40; } //========================================================== =============================================== //============================================================== ========================================== //Tugas 2D2 //========================================================== ============================================== #include #define F_CPU 7372800UL #include #include void Init_Ext_Int(void); ISR(INT0_vect) { PORTA = 0b10011001; _delay_ms(500); PORTA = 0b01100110; _delay_ms(500); } ISR(INT1_vect) { PORTA = 0b00000010; _delay_ms(500); PORTA = 0b00000011; _delay_ms(500); } int main(void) { Init_Ext_Int(); sei(); DDRA=0xFF; Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

17

while (1) { PORTA = 0b11111111; _delay_ms(500); PORTA = 0b00000000; _delay_ms(500); } return 0; } void Init_Ext_Int(void) { MCUCR=0x0A; MCUCSR=0x00; GICR=0xC0; GIFR=0xC0; } //============================================================== ===========================================

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

18

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB

19

Related Documents


More Documents from "Agung Yoga"