Dengan menggunakan rangkaian diatas saya berikan contoh bagaimana menggunakan fasilitas timer dalam SMART-AVR Basic.
TIMER RUN digunakan untuk menjalankan internal timer
TIMER STOP digunakan untuk menghentikan internal timer
TIMER CLR digunakan untuk menghentikan sekalian me-reset nilai timer (TIMH dan TIML) internal timer.
Timer ini bekerja berdasarkan interrupt timer0 ATMEGA8.
Berikut contoh programnya:
‘*******************************************************
CLRLCD
TEXT: TEST TIMER
ASM: SEI
VAR10 = 0
VAR11 = 0
MULAI:
TIMER RUN
LOOP1:
AH = TIMH
AL = TIML
'5000Dec --> 1388Hex -->BH=13Hex = 19Dec BL=88Hex=136Dec
BH = 19
BL = 136
CL = 0
FN:CMP16
IF CL = 1 THEN MSECOND
HHI = TIMH
HLO = TIML
LOCATE = 64
GOSUB TAMPIL
GOTO LOOP1
MSECOND:
TIMER CLR
TIMER RUN
VAR10 = VAR10 + 1
HHI = 0
HLO = VAR10
LOCATE = 20
GOSUB TAMPIL
GOTO LOOP1
TAMPIL:
FN:HEX2BCD
VAR0 = BCD65 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD65 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD43 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD43 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD21 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD21 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
RETURN
‘*******************************************************
Dalam tampilan LCD akan tampil nilai TIMER dan nilai setiap pencapaian timer sebesar 5000.
Timer ini dapat digunakan untuk aplikasi penundaan
TIMER RUN digunakan untuk menjalankan internal timer
TIMER STOP digunakan untuk menghentikan internal timer
TIMER CLR digunakan untuk menghentikan sekalian me-reset nilai timer (TIMH dan TIML) internal timer.
Timer ini bekerja berdasarkan interrupt timer0 ATMEGA8.
Berikut contoh programnya:
‘*******************************************************
CLRLCD
TEXT: TEST TIMER
ASM: SEI
VAR10 = 0
VAR11 = 0
MULAI:
TIMER RUN
LOOP1:
AH = TIMH
AL = TIML
'5000Dec --> 1388Hex -->BH=13Hex = 19Dec BL=88Hex=136Dec
BH = 19
BL = 136
CL = 0
FN:CMP16
IF CL = 1 THEN MSECOND
HHI = TIMH
HLO = TIML
LOCATE = 64
GOSUB TAMPIL
GOTO LOOP1
MSECOND:
TIMER CLR
TIMER RUN
VAR10 = VAR10 + 1
HHI = 0
HLO = VAR10
LOCATE = 20
GOSUB TAMPIL
GOTO LOOP1
TAMPIL:
FN:HEX2BCD
VAR0 = BCD65 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD65 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD43 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD43 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD21 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD21 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
RETURN
‘*******************************************************
Dalam tampilan LCD akan tampil nilai TIMER dan nilai setiap pencapaian timer sebesar 5000.
Timer ini dapat digunakan untuk aplikasi penundaan
Tidak ada komentar:
Posting Komentar