Anda di halaman 1dari 43

Mikrokontroler

P.7 Timers and counters

Implementasi Timer
Tulis nilai 6 pada timer/counter TCNT0 Tentukan frekuensi clock Jalankan sampai overflow flag TOV0 Stop Counter Clear Overflow Flag Ulangi proses 3x selama 1ms

Pemilihan Clock
Ketika jumlah counts kurang dari batas maximum counter :
Kurangi jumlah counts dari nilai count maximum Gunakan nilai itu sebagai nilai Preload

Implementasi Timer

code
Counter -0 While(counter < 3) { TCNT0 = 6; // diset untuk 250 counts TCCR0 = 0x02 // pilih CLK / 8 while ((TIFR & 0x01)==0) // tunggu flag TCCR = 0; // stop clock TIFR = TIFR | 0x01; // clear flag counter++; // increment count }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Code
For (loop_counter = 0; loop_counter < 3; loop_counter++) { TCNT0 = 6; // set untuk 250 counts TCR0 = 0x02; // pilih CLK/8 while ((TIFR & 0x01) ==0 tunggu flag TCCR0 = 0; // stop clock TIFR = TIFR | 0x01; // clear flag }

Contoh
Tulis sebuah program yang dapat membentuk pola scanning PORTC dengan frekuensi 5Hz menggunakan tampilan LED.

Scanning LED

Scanning LED

Scanning LED

Scanning LED

Scanning LED

Scanning LED

Scanning LED

Scanning LED

PortC = 1; PortC = PortC << 1;

Scanning
Berikan nilai 1 Delay Geser (shift) nilai pada PORT ke kiri 1 posisi Delay Geser nilai.. Delay

Scanning
Berikan nilai 1 Delay Geser (shift) nilai pada PORT ke kiri 1 posisi Delay Geser nilai.. Delay

Loop

Scanning
Berikan Nilai Output 1 Delay Loop
Shift (geser) nilai pada PORT ke kiri satu posisi Delay

Scanning
Berikan Nilai Output 1 Delay Loop ??
Shift (geser) nilai pada PORT ke kiri satu posisi Delay

Scanning LED
PortC = 1;

PortC = PortC << 1;

Scanning LED
PortC = 1;

PortC = PortC << 1;

Scanning
Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0
Shift (geser) nilai pada PORT ke kiri satu posisi Delay

Scanning
Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0
Shift (geser) nilai pada PORT ke kiri satu posisi Delay

Lalu ?

Scanning
Endless Loop Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay

Scanning
Endless Loop Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay

Delay berapa lama ?

Scanning
Endless Loop Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay berapa lama ? Delay

5Hz1/50.2 sec

Scanning
Endless Loop Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay selama 0.2 detik (200 ms)

Scanning
Endless Loop Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay selama 0.2 detik (200 ms)

Bagaimana kalau geser ke kanan?

Scanning
Endless Loop Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay selama 0.2 detik (200 ms)

Bagaimana kalau geser ke kanan?

0x80

Scanning

Endless Loop kanan Berikan Nilai Output 1 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kiri satu posisi Delay selama 0.2 detik (200 ms)

Bagaimana kalau geser ke kanan?

Scanning
Endless Loop Berikan Nilai Output 0x80 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kanan satu posisi Delay selama 0.2 detik (200 ms)

Scanning
Endless Loop Stop ? Berikan Nilai Output 0x80 Delay Loop sampai nilai di PORT = 0 Shift (geser) nilai pada PORT ke kanan satu posisi Delay selama 0.2 detik (200 ms)

Anda mungkin juga menyukai