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
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;
Scanning LED
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
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)
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)
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)
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)