Anda di halaman 1dari 67

SISTEM

MIKROPROSESO
R PEMROGRAMAN TIMER/COUNTER

Imam Taufik, ST., M.Kom.


PEMROGRAMA
N
TIMER/COUNTE
• OPERASI TIMER
•RMODE OPERASI TIMER/COUNTER
• TIMER/COUNTER0 ATMEGA32
• TIMER/COUNTER1 ATMEGA32
• TIMER 16 Bit MODE NORMAL
• PERHITUNGAN WAKTU TIMER
• PROSEDUR PENGAKTIFAN TIMER
PENDAHULUA
N
• Timer pada dasarnya hanya menghitung pulsa clock.
• Frekuensi pulsa clock yang dihitung bisa sama
dengan frekuensi Kristal yang dipasang atau dapat
diperlambat dengan prescaler.
PENDAHULUA
N
• Ketika suatu event akan dihitung, maka kita hubungkan
sumber event secara eksternal ke pin clock dari register
counter.
• Saat terjadi suatu event eksternal, maka isi counter
akan dicacah naik (increment) dengan cara ini isi
counter merepresentasikan banyaknya event yang
terjadi.
• Ketika kita akan membangkitkan waktu tunda, kita
hubungkan osilator ke pin clock dari counter jadi jika
osilator memicu, maka isi counter akan mencacah naik.
• Hasilnya isi register counter menunjukkan berapa
banyak pemicuan yang telah terjadi sejak kita
melakukan clear pada counter.
PENDAHULUA
N
• Metode pertama untuk membangkitkan waktu tunda
pertama kali isi counter di clear dan menunggu
hingga counter mencapai suatu bilangan
tertentu.

Misal:
• Mikrokontroler AVR menggunakan osilator 8MHz,
maka isi register counter di increment setiap sekali
dalam 125ns (1/8MHz).
• Jadi jika kita ingin waktu tunda = 1000ns, maka kita
harus meng-clear counter terlebih dahulu kemudian
menunggu register counter hingga mencapai angka 8
(8*125ns = 1000ns)
PENDAHULUA
N
• Setiap counter dalam mikrokontroler memiliki
FLAG masing-masing.
• Flag akan di set ketika terjadi overflow pada
counter yang bersangkutan dan di clear
menggunakan software.
PENDAHULUA
N
• Metode kedua untuk pembangkitan waktu tunda
adalah mengisi (load) register counter dan
menunggunya hingga terjadi overflow dan flag di set.
• ATMega32 mempunyai 3 macam timer:
• Timer/counter 0 (8bit)
• Timer/counter 1 (16bit)
• Timer/counter 2 (8bit)
• Setiap kanal timer dilengkapi dengan prescaler yang
digunakan untuk membagi sumber clock utama
mikrokontroler (fclck_I/O) menjadi clock bagi system
pewaktuan.
PENDAHULUA
N
• Semua kanal timer AVR ATmega32 dapat
dioperasikan pada salah satu dari 4 mode:
1. Normal (mode 0)
2. Clear timer on compare match (CTC) (mode
1)
3. Fast PWM (mode 2)
4. Phase Correct PWM (mode 3)

• Timer berhubungan erat dengan kata frekuensi,


perioda dan duty cycle.
PENDAHULUA
N
• Frekuensi jumlah pulsa yang terjadi
dalam satuan waktu
• Duty Cycle perbandingan antara pulsa (TH)
dengan perioda yang dinyatakan dalam persen.
TIMER/COUNTER
0Fitur:
• Timer 8 bit
• Sebagai pencacah (counter) 1 kanal
• Timer di-nol-kan ketika match compare (auto reload)
• Sebagai pembangkit gelombang PWM
• Counter dipicu dari luar
• Sebagai pembangkit frekuensi.
• Prescaler 10bit untuk timer
• Sumber interupsi timer saat overflow (TOV0) dan
compare match (OCF0).
TIMER/COUNTER
0

• Merupakan 8 bit timer/counter, pengaturan Timer/Counter 0


diatur oleh TCCR0 (Timer/Counter control register 0)

• Bit 3,4,5,6,7 digunakan untuk setting PWM.


Bit 2, 1, 0 (CS02, CS01, CS00): Cockseect.l Ketiga bit
tersebut memilih sumber clock yang akan digunakan oleh
timer/counter.
•DIAGRAM BLOK
TIMER/
COUNTER 0 0 disediakan melalui sumber
• Sumber clock untuk timer
clock eksternal pada pin T0 (PB0) mikrokontroler.
• Timer 0 juga dapat di-clock secara internal melalui clock
utama mikrokontroler (fclck_I/O).
• Frekuensi dari clock dapat diperlambat untuk sejumlah
aplikasi. Karena itu, pewaktuan dilengkapi dengan prescaler
untuk membagi frekuensi clock utama menjadi frekuensi
system timer (clkTn).
• Sumber clock timer0 dipilih menggunakan bit-bit CS[2:0]
yang berada pada pada TCCR0 (timer control register).
• TCCR0 juga berisi bit-bit WGM[1:0] dan COM[1:0] yang
digunakan untuk memilih mode operasi untuk timer0 serta
membuat pembangkitan gelombang untuk aplikasi khusus.
TIMER
COUNTER 0
• Sumber clock timer diumpankan ke register 8 bit
timer/counter (TCNT0)
• TCNT0 di increment atau di decrement pada
setiap pulsa clock.
• Timer 0 juga dilengkapi dengan sebuah comparator 8
bit yang bekerja secara konstan membandingkan
cacahan TCNT0 ke OCR0.
• Sinyal yang dibandingkan dari comparator 8 bit
diumpankan ke pembangkit gelombang.
• Pembangkit gelombang mempunyai sejumlah input
(top, bottom, WGM0[1:0] dan COM0[1:0]) untuk
melakukan operasi-operasi dengan sistem timer.
TIMER
COUNTER
• Sinyal 0
BOTTOM untuk pembangkitan gelombang control
logic dinyatakan ketika timer/counter TCNT0 mencapai $00.
• Sinyal MAX untuk dinyatakan ketika counter mencapai
semua 1 ($FF)
• Sinyal TOP untuk pembangkitan gelombang dinyatakan oleh
pencapaian nilai cacah maksimum $FF pada register TCNT0
atau mencapai set nilai pada OCR0. setting sinyal TOP
ditentukan oleh mode operasi timer.
• Timer0 juga menggunakan bit-bit tertentu dalam
Timer/Counter Interrupt Register Mask Register (TIMSK)
dan Timer/Counter Interrupt Flag Register (TIFR) untuk
sinyal kejadian-kejadian yng berkenaan dengan interupsi.
Mode Operasi
Timer/Counter
• Setiap kanal timer dapat di set untuk mode khusus
operasi: normal, CTC, fast PWM dan Phase Correct
PWM.
• Mode khusus operasi dipilih menggunakan
Waveform Generation Mode WGM00 dan WGM01
pada TCCR0
Mode Operasi
Timer/Counter

Mode Normal
• Pada mode normal timer secara kontinu menghitung dari
$00 (Bottom) sampai $FF(Top).
• Bila TCNT0 kembali 0 pada setiap siklus counter, maka
timer/counter, maka Timer/Counter Overflow Flag (TOV0)
akan set
• Mode normal berguna untuk membangkitkan ‘clock tick’
periodic yang dapat digunakan untuk menghitung waktu
nyata atau menyediakan delay dalam suatu system.
Mode Operasi
Timer/Counter
Mode Clear Timer on Compare Match
• Timer TCNT0 direset ke 0 setiap saat pencacah TCNT0
mencapai set nilai pada OCR0. Output Compare Flag 0
(OCF0) di set jika event ini terjadi.
• OCF0 flag di-enable oleh pernyataan timer/counter0 output
compare match interrupt enable (OCIE0) flag dalam TIMSK
dan bila I-bit dalam status register di set ke-1
• Mode CTC digunakan untuk membangkitkan gelombang
digital presisi seperti sinyal periodic atau sebuah pulsa
tunggal.
Mode Operasi
Timer/Counter

Mode Phase Correct PWM


• pada mode ini, register TCNT0 mencacah dari $00
sampai $FF dan kembali ke $00 secara kontinu.
• Pada saat nilai TCNT0 cocok dengan nilai yang di
set dalam register OCR0, maka OCF0 flag di set dan
terjadi suatu perubahan dalam sinyal PWM.
Mode
Operasi
Timer/Count
er
Mode Fast PWM
• Digunakan untuk membangkitkan sinyal PWM presisi dari suatu
frekuensi dan duty cycle yang dikehendaki.
• Disebut Fast PWM karena frekuensi maksimun dua kali mode
Phase Correct PWM.
• Bila nilai register TCNT0 mencapai set nilai dalam register
OCR0,
maka akan menyebabkan perubahan pada output PWM
seperti
yang dinyatakan sebelumnya oleh perancang. Hal ini secara
kontinu dicacah naik sampai nilai TOP, pada saat itu
Timer/Counter0 mencapai overflow dimana overflow flag (TOV0)
di-set.
REGISTER
TIMER 0

Timer/counter control register0 (TCCR0) digunakan


untuk:
• Memilih mode operasional timer0 menggunakan
bit-bit waveform generation mode (WGM0[1:0])
• Menentukan operasi timer dalam mode khusus
dengan bit-bit Compare Match Output.
• Memilih sumber clock timer0 menggunakan bit-bit
CS0[2:0]
REGISTER
TIMER 0

• TCNT0 adalah counter 8 bit untuk timer0.


REGISTER
TIMER 0

Output Compare Register.


• Register OCR0 menyimpan nilai yang ditetapkan
oleh user 8bit yang secara kontinu dibandingkan
dengan register TCNT0
REGISTER
TIMER 0

Timer/Counter Interrupt Mask Register (TIMSK).


• Digunakan oleh semua kanal timer. Timer0
menggunakan bit timer/counter0, output compare
match interrupt enable (OCIE0) dan bit timer/counter0
overflow interrupt enable (TOIE0).
• Jika bit OCIE0 dan I-bit pada status register keduanya di
set ke 1, maka timer/counter0 output compare match
interrupt (OCIE0) di-enable.
• jika bit TOIE0 dan bit pada status register keduanya di
set ke 1, maka timer/counter overflow interrupt di-
enable.
REGISTER
TIMER 0

Timer/Counter Interrupt Flag Register (TIFR)


• Digunakan oleh semua kanal timer.
• Timer0 menggunakan OCF0 yang men-set untuk
suatu output compare match.
• Timer0 juga menggunakan TOV0 yang set jika
terjadi overflow pada timer/counter0.
TCCR
0

Pengaturan timer/counter0 dilakukan melalui register


TCCR0.
• Bit 7 – FOC0 (force output compare)
• Bit FOC0 aktif jika bit WGM00 ditetapkan sebagai mode
non PWM. Namun untuk menjamin kompatibilitas
dengan device berikutnya, bit ini harus di clear ke 0 bila
TCCR0 ditulis ketika beroperasi pada mode PWM.
TCCR
0

Bit 6, Bit 3- WGM01, WGM00 : Waveform Generation Unit.


Bit ini mengontrol kenaikan counter, sumber bagi nilai
maksimum counter (TOP), dan jenis pembangkitan bentuk
gelombang yang akan digunakan.
• Mode operasi didukung oleh unit timer/counter: mode
normal, mode clear timer on compare match (CTC) dan dua
jenis mode PWM.
TCCR
0
Bit 5,4 – COM01, COM00: Compare Match Output Mode
• Bit-bit ini mengontrol tingkah laku pin OC0 (output compare).
• Jika satu atau kedua bit ini (COM01, COM00) dalam keadaan
set, maka output OC0 mengesampingkan fungsional port
normal dari pin I/O yang dikoneksikan padanya.
• Catatan: bit DDR (data direction register) yang berhubungan
dengan OC0 harus di set untuk meng-enable output driver.
• Bila OC0 dikoneksikan ke pin, fungsi bit-bit COM01,COM00
tergantung pada setting bit WGM01, WGM00.
• Bit 2,1,0 – CS02,CS01,CS00: clock select
Tiga bit clock select memilih sumber clock yang
akan digunakan oleh timer/counter.
TIMER/COUNTER
1Fitur-fitur timer/counter1:
• Desain 16-bit (bisa untuk PWM 16 bit).
• Dua unit pembanding (compare unit)
• Dua register komparator
• Satu input capture unit : Fitur input capture digunakan untuk
meng-capture karakteristik/perilaku dari suatu sinyal input,
termasuk periode, frekuensi, duty cycle atau panjang pulsa.
• Timer direset ketika match compare (auto reload).
• Dapat menghasilkan gelombang PWM dengan glitch free
• Perioda PWM yang dapat diubah-ubah
• Pembangkitan frekuensi.
• Empat sumber interupsi (TOV1,OCF1A,OCF1B dan ICF1)
REGISTER TIMER
1

Register TCCR1A dan TCCR1B digunakan untuk:


• Memilih mode operasional timer 0 menggunakan bit-
bit waveform mode generation (WGM1[3:0])
• Menentukan operasi timer dalam mode khusus dengan
bit-bit compare match output (kanal A, COM1A[1:0];
dan kanal B, COM1B[1:0])
• Memilih sumber clock timer1 menggunakan bit-bit
CS1[2:0]
REGISTER KONTROL
TCCR1A

Bit 7,6 – COM1A1, COM1A0: compare output mode for channel A


Bit 5,4 – COM1B1, COM1B0: compare output mode for channel B

• Bit-bit COM1A1, COM1A0 dan COM1B1, COM1B0 mengontrol tingkah


laku pin-pin output compare (berturut-turut OC1A dan OC1B).
• Jika satu atau kedua bit COM1A1, COM1A0 atau COM1B1, COM1B0
ditulisi satu, maka output OC1A atau OC1B mengesampingkan
fungsional port normal dari pin I/O yang dikoneksikan padanya.
• Catatan: bit DDR (data direction register) bersesuaian dengan pin
OC1A atau OC1B harus di set untuk meng-enable output driver.
REGISTER KONTROL
TCCR1A
• Bila OC1A atau OC1B dikoneksikan ke pin, fungsi COM1x1,
COM1x0 bergantung dari setting WGM13 s/d WGM10.
REGISTER KONTROL
TCCR1A
Bit 3 – FOC1A: force output compare for Chanel A
•BitBit-bit
2 – FOC1B: force output
FOC1A/FOC1B compare
hanya aktif bilafor Chanel
bit-bit WGM13 s/d WGM10
B menetapkan sebuah mode non-PWM.
• Untuk menjamin kompatibilitas dengan device yang akan datang, bit-bit ini
harus diset ke nol bila TCCR1A ditulisi ketika beroperasi pada mode PWM.
• Bila penulisan logika satu ke bit FOC1A/FOC1B, maka sebuath immediate
compare match didorong pada unit pembangkitan bentuk gelombang.
• Output OC1A/OC1B diubah sesuai dengan setting bit-bit COM1x1,
COM1x0.
• Catatan bahwa bit-bit FOC1A/FOC1B diimplementasikan sebagai strobe.
• Karena itu nilai berada pada bit-bit COM1x1, COM1x0 yang menentukan
pengaruh forced compare.
• Sebuah strobe FOC1A/FOC1B tidak akan membangkitkan interupsi apapun
atau tidak akan meng-clear timer pada clear timer on compare match (CTC)
mode menggunakan OCR1A sebagai TOP.
• Bit-bit FOC1A/FOC1B selalu dibaca sebagai nol.
REGISTER KONTROL
Bit 1,0 – WGM11,WGM10: waveform generation mode
TCCR1A
• Bit ini dikombinasikan dengan bit WGM13, WGM12 pada TCCR1B.
• Bit-bit ini mengontrol urutan pencacahan counter, sumber untuk nilai counter
(TOP) maksimum, dan jenis pembangkit gelombang yang digunakan.
REGISTER KONTROL
TCCR1B

• Bit 7 – ICNC1 : input capture noise canceler


• Bit 6 – ICES1 : input capture edge select
• Bit 5 – reserved bit
• Bit 4:3 – WGM13:12: waveform generation mode
• Bit 2,1,0 – CS12,CS11,CS10: clock select.
Ketiga bit clock select ini memilih sumber clock
yang akan digunakan untuk timer/counter.
TIMER 16-BIT MODE
NORMAL
• Pada mode normal, TCNT1 akan menghitung naik
dan membangkitkan interrupt timer/counter1
ketika nilainya berubah dari $FFFF ke $0000.
• Seringkali kita menganggap untuk menggunakan
timer cukup dengan memasukkan nilai yang
diinginkan ke TCNT1 dan menunggu sampai terjadi
interrupt.
• Hal itu benar untuk timer yang menghitung
mundur, tetapi untuk timer yang menghitung maju
maka kita harus memasukkan nilai 65536-(timer
value) ke dalam TCNT1.
REGISTER TIMER 16
BIT
• TCNT1. TCNT1 Timer/Counter1 Register digunakan
untuk menyimpan nilai timer yang diinginkan.
• TCNT1 dibagi menjadi 2 register 8 bit yaitu TCNT1H
dan TCNT1L
REGISTER TIMER 16
BIT
• TIMSK. Timer Interrupt Mask Register (TIMSK) dan Timer Interrupt Flag
Register (TIFR) digunakan untuk mengendalikan interrupt mana yang
diaktifkan dengan cara melakukan setting pada TIMSK dan untuk
mengetahui interrupt mana yang sedang terjadi.
REGISTER TIMER 16
BIT
Bit 5 – TICIE1: Timer/Counter1, input capture
interrupt enable
• Bila bit ini ditulisi satu dan I-Flag dalam status
register di set (interupsi global di-enable), maka
timer/counter1 input capture interrupt di-enable.
REGISTER TIMER 16
BIT
Bit 4 – OCIE1A: Timer/Counter1, Output Compare
Match A Match Interrupt Enable
• Bila bit ini ditulisi satu dan I-Flag dalam status
register di set (interupsi global di-enable), maka
Timer/Counter1 Output Compare A Match
Interrupt di-enable.
REGISTER TIMER 16
BIT
Bit 3 – OCIE1B: Timer/Counter1, Output Compare
Match B Match Interrupt Enable
• Bila bit ini ditulisi satu dan I-Flag dalam status
register di set (interupsi global di-enable), maka
Timer/Counter1 Output Compare B Match
Interrupt di-enable.
REGISTER TIMER 16
BIT
Bit 2 – TOIE1: Timer/Counter1 Overflow Interrupt
Enable
• Bila bit ini ditulisi satu dan I-Flag dalam status
register di set (interupsi global di-enable), maka
Timer/Counter1 Overflow Interrupt di-enable.
REGISTER TIMER 16
BIT
• TIFR (Timer Interrupt Flag Register)
• Timer Interrupt Mask Register (TIMSK) dan Timer
Interrupt Flag (TIFR) Register digunakan:
• Untuk mengendalikan interrupt mana yang diaktifkan
dengan cara melakukan setting pada TIMSK
• Untuk mengetahui interrupt mana yang sedang
terjadi.
REGISTER TIMER 16
BIT
Bit 5 – ICF1: timer/counter1 input capture flag
• Flag ini set jika terjadi capture event pada pin ICF1.
• Jika input capture register (ICR1) di set oleh
WGM13 s/d WGM10 yang akan digunakan sebagai
nilai TOP, maka ICF1 flag di set jika counter
mencapai nilai TOP.
• ICF1 secara otomatis di clear jika input capture
interrupt vector dieksekusi.
• Alternatifnya, ICF1 dapat di clear dengan penulisan
logika ke lokasi bit nya
REGISTER TIMER 16
BIT
BIT 4 – OCF1A : Timer/Counter1 Output Compare A
Match Flag
• Flag ini di set dalam siklus clock timer setelah nilai
counter (TCNT1) sesuai dengan Output Compare
Register A (OCR1A).
• Catatan: dengan memaksa strobe pada Output
Compare (FOC1A) tidak akan menge-set OCF1A
Flag. OCF1A Flag secara otomatis di clear jika
vector interupsi Output Compare Match A
dieksekusi.
• Alternatifnya, OCF1A dapat di clear dengan
penulisan logika 1 ke lokasi bit nya
REGISTER TIMER 16
BIT
BIT 3 – OCF1B: Timer/Counter1, Output Compare B
Match Flag
• Flag ini di set dalam siklus clock timer setelah nilai
counter (TCNT1) sesuai dengan Output Compare
Register B (OCR1B).
• Catatan: dengan memaksa strobe pada Output
Compare (FOC1B) tidak akan menge-set OCF1B Flag.
OCF1B Flag secara otomatis di clear jika vector
interupsi Output Compare Match B dieksekusi.
• Alternatifnya, OCF1B dapat di clear dengan penulisan
logika 1 ke lokasi bit nya
REGISTER TIMER 16
BIT
Bit 2 – TOV1: Timer/Counter1 Overflow Flag
• Setting flag ini tergantung pada setting bit-bit
WGM13 s.d. WGM10.
• Pada mode normal CTC, TOV1 Flag di set jika timer
overflow.
• TOV1 secara otomatis di clear jika vector interupsi
Timer/Counter1 Overflow dieksekusi.
• Alternatifnya, TOV1 dapat di clear dengan
penulisan logika 1 ke lokasi bit nya
PERHITUNGAN WAKTU
TIMER
• Waktu maksimum sebuah timer 16 bit dapat
dihitung berdasarkan persamaan:

TMAX=1/f_clk x (65535+1)

• Untuk timer 8 bit digunakan persamaan:

TMAX=1/f_clk x (255+1)
CONTO
H
• Sebuah AVR ATMega8535 menggunakan Kristal
dengan frekuensi 8MHz dan timer yang digunakan
adalah timer 16bit, maka nilai maksimum waktu
timer yang bisa dihasilkan adalah:

TMAX=1/f_clk x (65535+1)
=0,125us * (65536)
=8191.875us
CONTO
H
• Untuk menghasilkan timer yang lebih lama dapat
digunakan prescaler, misalnya 1024. maka waktu
maksimum timer yang bisa dihasilkan adalah:

TMAX=1/f_clk x (65535+1)*N
=0,125us * (65536) * 1024
=8388608us 8,388608 detik
CONTO
H
• Ketika prescaler digunakan, waktu timer dapat
diperpanjang namun tingkat ketelitiannya menjadi
turun.
• Misal dengan prescaler 1024 nilai timer akan
bertambah 1 setiap kelipatan 1024pulsa dan
membutuhkan waktu
(1/f_clk) * 1024 (1/8MHz) * 1024 128us
• Bandingkan tingkat resolusi ini tanpa prescaler
(0,125us)
PERHITUNGAN WAKTU
TIMER
• Nilai timer yang diinginkan harus terlebih dahulu
dikonversikan menjadi nilai heksadesimal yang nantinya
dimasukan kedalam untuk inisialisasi register timer.
• Persamaan

TCNT: nilai timer (heksadesimal)


Fclk: frekuensi clock (Kristal) yang digunakan (Hz)
Ttimer: waktu timer yang diinginkan (detik)
N : prescaler (1,8,64,256,1024)
1+65535 : nilai max timer adalah 65535 dan overflow saat
65535 ke 0000h
CONTO
H
• Misal sebuah timer 16 bit diinginkan bekerja
selama 1 detik, dengan frekuensi clock sebesar
11,0592MHz dan prescaler 1024 maka diperoleh
nilai TCNT sebesar:

• Dengan demikian nilai TCNTH = 0xD5 dan nilai


TCNTL = 0xD0
PROSEDUR
PENGAKTIFAN TIMER
Langkah berdasarkan contoh di
atas:
• Aktifkan TOIE1 pada TIMSK
• Masukan nilai ke timer TCNT1
• Set prescaler pada 1024 (set
bit CS12 dan CS10 pada
TCCR1B)
• Aktifkan bit global interrupt
pada SREG
• Tunggu/ atau lakukan hal
lain.
Semua perhitungan dan
pengecekan dilakukan
hardware
LANGKAH
PENGGUNAAN TIMER 1
MODE
1. Mulai NORMAL
2. Isikan nilai cacahan ke register TCNT1
3. Isi nilai ke register TCCR1A dan TCCR1B
4. Jaga overflow flag sampai high
5. Matikan timer (stop sumber clock)
6. Clear kembali TOV1
7. Ulangi delay.
CONTO
H program timer1 mode normal menggunakan
• Buat
frekuensi oscillator 8MHz untuk membangkitkan
gelombang kotak (duty cycle 50%) dengan frekuensi
0,5Hz. Sinyal ini keluar melalui PB3. abaikan waktu
overhead yang ditimbulkan instruksi.

• Solusi:
• Perioda sinyal yang keluar pada PB3 T = 1/0,5Hz =
2detik
• Sinyal gelombang kotak yang mempunyai duty cycle 50%,
jadi TH = 0,50*T TH = 0,50*2s TH= 1s
• TL = T-TH = 2s-1s = 1s
CONTO
H
• Berdasarkan table, untuk membangkitkan waktu
tunda 1 detik pada Kristal 8MHz maka diperlukan
prescaler 256, jadi
• WT=256*(65536-TCNT)*0,125us
• 1s=256*(65536-TCNT)*0,125us
• TCNT= 34286 0x85EE
CONTO
H
• TCCR1A=0b00000000 (WGM11=0, WGM10=0)
• TCCR1B=0b00000100 (WGM13=0, WGM12=0,
CS12=1, CS11=0) prescaler 256
.include “m8535def.inc” ;===subrutin tunda=== Tunggu:
.org 0x0000 Ldi r16,0xEE In r16,TIFR
ldi r20,high(ramend) Out TCNTL,r16 Sbrs r16,TOV1
out sph,r20 Ldi r16,0x85 Rjmp Tunggu
ldi r20,low(ramend) Out TCNTH,r16 Ldi r16,0x00
out spl,r20 Out TCCR1A,r16
Ldi r16,0x00 Out
Sbi ddrb,3 Out TCCR1A,r16 TCCR1B,r16
Ulang: Ldi r16,0b00000100 Ldi r16,0b00000100
Cbi portb,3 Out TCCR1B,r16 Out TIFR,r16
Rcall RET
tunda Sbi
portb,3
Rcall tunda
Rjmp
Ulang
LATIHA
N
• Buat program timer1 mode normal menggunakan
frekuensi oscillator 16MHz untuk membangkitkan
gelombang kotak (duty cycle 50%) dengan
frekuensi 0,25Hz. Sinyal ini keluar melalui PB3.
abaikan waktu overhead yang ditimbulkan
instruksi.

Anda mungkin juga menyukai