Você está na página 1de 7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR

Posts

Comments

Enteryouremailaddress:

Subscribe
DeliveredbyFeedBurner

HOME

SHOP

Arsip

LINK

Search ...

Brow seHomeMicrocontrollerBasicBermaindenganTimer1AVR

2011(5)
2010(6)
2009(5)

BermainDenganTimer1AVR

September(1)
Agustus(1)

Yangnamanyatimerseringkalikitagunakan.Misalsaatmaunampilinrpm,kita

Februari(1)

butuhtimersebagaiacuan.Atauuntukmenghidupkandevicedenganintervaltertentu.

Januari(2)

AVRyangsayapakaisebagaicontohadalahATmega8535.AVRinimemilki3timer.
Yaitu:

2008(7)

1. TIMER0(8bit)
2. TIMER1(16bit)
ShareIt

3. TIMER2(8bit)

Sharethis
on
Facebook
Tweetthis
View stats
(NEW)
Appointment

Apayangdimaksudtimer8bitdan16bit?
timer8bitadalahtimerygbisamencacah/menghitungsampaimaksimalnilai0xFF
heksa(dalambiner=11111111).PadaATmega8535ada2timerjenisiniyaitu
TIMER0dan2
Kloyg16bitnilaimaksimalnya0xFFFF.PadaATmega8535timerjenis16bitadalahTIMER1.Artikelkaliiniakanmembahas
TIMER1.
Duluakdisaraninklotimermaupresisiharusmemakaibahasaassembly.Hitungjumlahinstruksiygkitatulis.laluhitunglama
waktunya.Hmmmm..ribetbener...
Untungajanemuartikeltentanginterrupttimer.DenganInterruptkitagakperlususah2menghitungberapawaktuyangdi
perlukanuntukmengeksekusiseluruhprogramkita.Karenasaatprogramdijalanin,timerjugajalansendiri(digerakkanXTAL).
Trussaatnilaitercapaiterjadilahinterrupttimer.
RegisterygbiasasayagunakanuntukmensetnilaiTimer1adalahregisterTCNT,registerTCNTsendiridibagidua:TCNT1H
danTCNT1L.
rumusyangdigunakanadalah:

TCNT=(1+0xFFFF)(waktu*(XTAL/prescaler))

waktu>waktuygkitainginkan
XTAL>frekuensixtalygdipakai
prescaler>nilaiprescaler

Apanilaiprescaleritu?
Timermembutuhkanclocksource.Biasanyaclocksourceygsayapakaiadalahclocksistem(XTAL).Dankitabisamenset
besarnyanilaiini.MaximumsamadenganXTAL,minimumXTAL/1024.Nahnilaipembagi(1024)iniygdiseburnilaiprescaler.
Macam2nilaiprescalerygdiijinkan:1,8,64,256,1024
Untukmengubahnilaiprescalertimer1,kitaharusmerubahnilairegisterTCCR1Bbit0...2

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

1/7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR

gamb ardiatasdiamb ildaridatasheetATmega8535hal.113


ContohProgram:
MengaksesTimer1denganintervalwaktu1detik.

#include<mega8535.h>
#include<stdio.h>
//LCDdiPORTB
#asm
.equ__lcd_port=0x18
#endasm
#include<lcd.h>
unsignedcharbuff[30]
unsignedlongdetik
//subrutinsaatterjadiinterruptTimer1
interrupt[TIM1_OVF]voidtimer1_ovf_isr(void)
{
TCNT1H=0xC2
TCNT1L=0xF7
detik++
lcd_clear()
sprintf(buff,"detik%d",detik)
lcd_puts(buff)
}
voidmain(void)
{
//Timer/Counter1initialization
//Clocksource:SystemClock
//Clockvalue:kHz
//Mode:Normaltop=FFFFh
//OC1Aoutput:Discon.
//OC1Boutput:Discon.
//NoiseCanceler:Off
//InputCaptureonFallingEdge
TCCR1A=0x00
TCCR1B=0x04
TCNT1H=0xC2
TCNT1L=0xF7
OCR1AH=0x00
OCR1AL=0x00
OCR1BH=0x00
OCR1BL=0x00
//Timer(s)/Counter(s)Interrupt(s)initialization
TIMSK=0x04
//AnalogComparatorinitialization
//AnalogComparator:Off
//AnalogComparatorInputCapturebyTimer/Counter1:Off
//AnalogComparatorOutput:Off
ACSR=0x80
SFIOR=0x00

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

2/7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR
//LCDmoduleinitialization
lcd_init(16)
//Globalenableinterrupts
#asm("sei")
lcd_putsf("wait...")
while(1)
{
}
}

Programdiatasmenggunakantimer1untukmenambahnilaivariabel"detik"setiap1detiksekali.Kemudianmenampilkan
hasilnyakeLCD.
ayokitamutilasicodeprogramdiatas:
yangakankitabahasdariprogramdiatasadalahcodeyangkliatanruwetaja.Kloygbiasasilahkanlihatdiartikel2sebelumnya
..^_^
**************

//LCDdiPORTB
#asm
.equ__lcd_port=0x18>>mendefinisakanbahwaLCDdihubungkankePORTB
#endasm
#include<lcd.h>>>libraryuntukfungsi2aksesLCD

**************

//subrutinsaatterjadiinterruptTimer1
interrupt[TIM1_OVF]voidtimer1_ovf_isr(void)
{
TCNT1H=0xC2>nilaididapatdarirumus......
TCNT1L=0xF7>....agarTimer1bernilai1detik
detik++
lcd_clear()
sprintf(buff,"detik%d",detik)>memasukkankarakterkarakterkevariabelbuff
lcd_puts(buff)>menampilkankarakterkaraktervariabelbuffkeLCD
}

SaatkitainginmenampilkansederettulisankeLCDmakakitaharusmemasukkankarakterkaraktertulisanitukesuatu
variab elarray(dalamprogramdiatasadalahvariabel"buff").Barukemudiandataygadadivariab elarraykitatampilkanke
LCD
***************

voidmain(void)
{
//Timer/Counter1initialization
//Clocksource:SystemClock
//Clockvalue:kHz
//Mode:Normaltop=FFFFh
//OC1Aoutput:Discon.
//OC1Boutput:Discon.
//NoiseCanceler:Off
//InputCaptureonFallingEdge
TCCR1A=0x00
TCCR1B=0x04>prescaler256
TCNT1H=0xC2>nilaididapatdarirumus......
TCNT1L=0xF7>....agarTimer1bernilai1detik

ingetrumus:TCNT=(1+0xFFFF)(waktu*(XTAL/prescaler))
waktuygdinginkanadalah1detik,XTALygsayapakaiadl4Mhzdannilaiprescaler=256

Jadi,...............

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

3/7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR
TCNT=(1+65535)(1detik*(4.000.000/256))
=65536(1detik*15625)
=6553615625
=49911(desimal)
=C2F7(heksadesimal)

NilaiuntukTCNTyangdidapatdarirumusbernilai16bit(4angkaHeksadesimal),2angkaygdidepankitamasukkanke
TCNT1Hdan2angkaygdibelakangkitamasukkankeTCNT1L
****************

//Timer(s)/Counter(s)Interrupt(s)initialization
TIMSK=0x04>Timer/Counter1,OverflowInterruptEnable

codediatashanyamenset"OverflowInterruptTimer1".Interruptbaruaktifsaatadaperintah:#asm("sei")

padacontohinisayapakeATmega8535,ketikasayacobauntukATmega162nilaiTIMSKdiubahmenjadiTIMSK=0x80
****************

//AnalogComparatorinitialization
//AnalogComparator:Off
//AnalogComparatorInputCapturebyTimer/Counter1:Off
//AnalogComparatorOutput:Off
ACSR=0x80>meOFFkananalogcomparator
SFIOR=0x00

jikatidakdipakai,sebaiknyaanalogcomparatordiOFF.Untukmenghematpemakaiandaya.Halinisangatpentingjikasumber
dayaygdigunakanmemakaibaterai.
*******************

//LCDmoduleinitialization
lcd_init(16)>inisialisasiLCD16*2

*******************

//Globalenableinterrupts
#asm("sei")>mengaktifkanInterruptinterruptygsudahdisetsebelumnya

Nah...padasaatiniinterruptTimer1aktif
*******************

lcd_putsf("wait...")>menampilkantulisanwait..keLCD

*********************

while(1)
{
}

Programiniygdijalankanolehmicrocontroller...mikrohanyamuterdisinididalamwhile(1){...}
(inget!!!infiniteloopingdiartikelBASICI/O)..Jadimikrosamasekalitidakmengeksekusiperintah.
lhakokbisa?????bingungg....~_~!
DisinilahbedanyapakeInterrupt!!.
saatterjadiInterruptTimer1,alurprogrammikroakanmeloncatke:

//subrutinsaatterjadiinterruptTimer1
interrupt[TIM1_OVF]voidtimer1_ovf_isr(void)
{

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

4/7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR
......................................
......yoww.....programygadadisiniygdijalanin...
......................................
}

setelahprogramygadadisubrutinINTERRUPTdijalankan,makaalurprogrammikroakanmuter2lagidiinfinitelooping
******************
jikaadaygkurangdariprogramdiatasmohonkritikdansarannya
anyquestions??postcommentonthisblog:http:\\avrku.blogspot.com
orsendemailto:zigan@ymail.com
CodeVisionAVRCCompileriscopyrightb yPavelHaiduc,HPInfoTechs.r.l.
AVRisaregisteredtrademarkofAtmelCorporation.
<
Postedbyzigan

COM M ENT S :
13commentstoBermaindenganTimer1AVR

keren

kiddieezmengatakan...on9Agustus200919.15

mas,kaloprogramyangnggapakeinterruptgmnmas?
apaemangharuspakeinterrupt?
masalahnyakantimerperdetikmausayagunakansebagaicounterperdetikdalam
perulangan....
contohnyakayatekmasukindalamwhile(i<10/*detik*/)/*10detikinidiperolehdari
perhitungantimertadigitumas*/
{
................
i++
}kalokayagitugmnmas?
balesymas,,,tulungpisan....
masalahnyakalopakepakeperulanganbiasa,angka10ituhukandetiktapigtau
(1/berapa)kalidetiknyamas,cepetpisan

Anonimmengatakan...on3Oktober200913.41

@anonim:
klomemangbutuhpresisisetaukuygpalingenakpaketimer(gktaulagisichkloada
referensiyglebihoke...:P)

definisinilaiygmodihitung:
unsignedintfreq,cacah
masukinnilaiyangmaudihitungdalam
loopingprogramutama
while(1)
{
if(PINB.0==0)cacah++
while(PINB.0==0)
}
nilaicacahakanbertambahsetiapPINB.0berubahdariHighkeLow.
masukkannilaicacahkefreqmelaluiinterupsitimer.
//subrutinsaatterjadiinterruptTimer1
interrupt[TIM1_OVF]voidtimer1_ovf_isr(void)
{
TCNT1H=0xC2
TCNT1L=0xF7
freq=cacah
cacah=0

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

5/7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR
lcd_clear()
sprintf(buff,"freq%d",freq)
lcd_puts(buff)
}
nahnilaifrequensiakandiupdatesetiap1detik...

zigan
zigan@ymail.commengatakan...on23November200908.30

Komentarinitelahdihapusolehpengarang.

prezstmengatakan...on18Agustus201011.25

mas,mautanyaapakahadaperbedaan,saatkitamenggunakannilaiprescaleryg
gedeamaygkecilpadasistemyangakankitakontrol?pengaruhnyapadaAVRapa?
suwun...

prezstmengatakan...on18Agustus201011.30

ituhanyaberpengaruhpadaseberapacepatclocktimeryangakankitagunakan..
jadisumberclocktimeruntukcontohdiprogramdiataskandarixtalyangdigunakan
olehmicrocontrollerdibagidengannilaiprescaler

ziganmengatakan...on18Agustus201017.58

bisatidaktimernyasejamatawlebih..?

oonmengatakan...on13Oktober201000.42

bisaaja,
timernyakandisettiapsatudetik..jaditinggalmasukinvaribeltrussetiaptimeraktif,
nilaivariabeltersebutdiincrement..
pasnilainya=3600makaitudahsatujam^_^

ziganmengatakan...on15Oktober201012.35

MantapTImeravr.kalomaubelajarlebihjauhdenganCVAVRkunjungiblogsaya
http://iswanto.staff.umy.ac.id/danhttp://blog.umy.ac.id/iswanto

iswantomengatakan...on13Februari201103.10

omprogramparallaxpingyangbuatngukurjarakgmnya?????mohonbantuanya
om......tapipakecodevisionavryaom.....makasih..

Anonimmengatakan...on7Mei201114.49

bangsayamautanyaklotimersayagunakanbuatngitunglebarpulsanyagmana,??
jadibisadilihatwaktuThighnyasamaTlownyamakasih

coky_coky11.blogspot.commengatakan...on1Juni201103.40

infonyamembantusekali,biarlebihmudahbisapkewizarddaricodevision.salam
avrmania,,

Kiki'Kaye'mengatakan...on14Oktober201111.40

maturnuwuninfonya,ikutbelajardisiniya

anotherorionmengatakan...on1April201209.18

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

6/7

12/2/2014

AVRku.blogspot.com:BermaindenganTimer1AVR
PoskanKomentar

L I NKS T O T HI S P OS T
BuatSebuahLink

PostingLebihBaru

Beranda

PostingLama

CopyrightAVRku.blogspot.com

http://avrku.blogspot.com/2009/02/bermaindengantimer1avr.html

TemplatebyBlogTemplate4U|BlogspotTutorial|Blogger

7/7

Você também pode gostar

  • Proposal 5
    Proposal 5
    Documento5 páginas
    Proposal 5
    Idham Nuryadi
    Ainda não há avaliações
  • Bab 1 Propo
    Bab 1 Propo
    Documento1 página
    Bab 1 Propo
    Idham Nuryadi
    Ainda não há avaliações
  • Bab Ii 4
    Bab Ii 4
    Documento19 páginas
    Bab Ii 4
    Idham Nuryadi
    Ainda não há avaliações
  • Proposal 4
    Proposal 4
    Documento5 páginas
    Proposal 4
    Idham Nuryadi
    Ainda não há avaliações
  • Bab Ii 4
    Bab Ii 4
    Documento19 páginas
    Bab Ii 4
    Idham Nuryadi
    Ainda não há avaliações
  • Sistem Adaptif
    Sistem Adaptif
    Documento4 páginas
    Sistem Adaptif
    Idham Nuryadi
    Ainda não há avaliações
  • Bab Ii 1
    Bab Ii 1
    Documento10 páginas
    Bab Ii 1
    Idham Nuryadi
    Ainda não há avaliações
  • CV New Jombang
    CV New Jombang
    Documento1 página
    CV New Jombang
    Idham Nuryadi
    Ainda não há avaliações
  • Bab Ii 5
    Bab Ii 5
    Documento17 páginas
    Bab Ii 5
    Idham Nuryadi
    Ainda não há avaliações
  • Bab Ii 4
    Bab Ii 4
    Documento19 páginas
    Bab Ii 4
    Idham Nuryadi
    Ainda não há avaliações
  • Bahan Buat Soft Kopi...
    Bahan Buat Soft Kopi...
    Documento2 páginas
    Bahan Buat Soft Kopi...
    Idham Nuryadi
    Ainda não há avaliações
  • Cover Penglis1
    Cover Penglis1
    Documento1 página
    Cover Penglis1
    Idham Nuryadi
    Ainda não há avaliações
  • Bab Ii 2
    Bab Ii 2
    Documento14 páginas
    Bab Ii 2
    Idham Nuryadi
    Ainda não há avaliações
  • Pendahuluan (Belum Di Acc)
    Pendahuluan (Belum Di Acc)
    Documento3 páginas
    Pendahuluan (Belum Di Acc)
    Idham Nuryadi
    Ainda não há avaliações
  • Daftar Pustaka
    Daftar Pustaka
    Documento1 página
    Daftar Pustaka
    Idham Nuryadi
    Ainda não há avaliações
  • Bab I
    Bab I
    Documento5 páginas
    Bab I
    Idham Nuryadi
    Ainda não há avaliações
  • GD
    GD
    Documento2 páginas
    GD
    Idham Nuryadi
    Ainda não há avaliações
  • Matematika Teknik I1
    Matematika Teknik I1
    Documento9 páginas
    Matematika Teknik I1
    Har Bukan 'Hard'
    Ainda não há avaliações
  • Bab Iii
    Bab Iii
    Documento1 página
    Bab Iii
    Idham Nuryadi
    Ainda não há avaliações
  • Power Amplifier With Tone Control
    Power Amplifier With Tone Control
    Documento10 páginas
    Power Amplifier With Tone Control
    Idham Nuryadi
    Ainda não há avaliações
  • Tugas Kelompok
    Tugas Kelompok
    Documento6 páginas
    Tugas Kelompok
    Idham Nuryadi
    Ainda não há avaliações
  • Tabel Proteksi
    Tabel Proteksi
    Documento12 páginas
    Tabel Proteksi
    'Sii Cumig Dudidudidamdam'
    Ainda não há avaliações
  • Bab Ii Ta MML
    Bab Ii Ta MML
    Documento10 páginas
    Bab Ii Ta MML
    Idham Nuryadi
    Ainda não há avaliações
  • Print
    Print
    Documento2 páginas
    Print
    Idham Nuryadi
    Ainda não há avaliações
  • DAFTARNAMDITERIMADISBMPTN2013
    DAFTARNAMDITERIMADISBMPTN2013
    Documento19 páginas
    DAFTARNAMDITERIMADISBMPTN2013
    Niken Lestari G
    Ainda não há avaliações
  • Jarkomnisasi WTHME 2013
    Jarkomnisasi WTHME 2013
    Documento6 páginas
    Jarkomnisasi WTHME 2013
    Idham Nuryadi
    Ainda não há avaliações
  • Konsep Penjemputan
    Konsep Penjemputan
    Documento1 página
    Konsep Penjemputan
    Idham Nuryadi
    Ainda não há avaliações
  • Daftar Lulus Umbpt 2013
    Daftar Lulus Umbpt 2013
    Documento19 páginas
    Daftar Lulus Umbpt 2013
    Hardiansyah Randy
    Ainda não há avaliações
  • Tata Tertib WTHME 2013
    Tata Tertib WTHME 2013
    Documento1 página
    Tata Tertib WTHME 2013
    Idham Nuryadi
    Ainda não há avaliações