Jd, pd uC ATmega16
kita memiliki TCNT0,
TCNT1 dan TCNT2
Isi dr OCRn
dibandingkan dgn isi
dr TCNTn.
...
register memory Purpose
...
Registers R31
$001F I/O Address
TWBR $00
$0020
TWSR $01
Standard I/O
Oleh karena itu, kita
...
...
Registers
SPH $3E
dpt mengakses
$005F SREG $3F
$0060
menggunakan
General
purpose
...
RAM
instruksi IN dan OUT (SRAM)
$FFFF
Jawab:
LDI R20, 25 ;R20 = 25
OUT TCNT0, R20 ;TCNT0 = R20
IN R19, TCNT0 ;R19 = TCNT0
.INCLUDE “M16DEF.INC”
.MACRO INITSTACK ;set up stack
LDI R20, HIGH(RAMEND)
OUT SPH, R20
LDI R20, LOW(RAMEND)
OUT SPL, R20
.ENDMACRO
INITSTACK
LDI R16, 1<<5 ;R16 = 0x20 (utk PB5)
SBI DDRB, 5 ;PB5 sbg output
LDI R17,0
OUT PORTB, R17 ;clear PORTB
1
𝑇𝑐𝑙𝑜𝑐𝑘 =
𝐹𝑇𝑖𝑚𝑒𝑟
.INCLUDE “M16DEF.INC”
.MACRO INITSTACK ;set up stack
LDI R20, HIGH(RAMEND)
OUT SPH, R20
LDI R20, LOW(RAMEND)
OUT SPL, R20
.ENDMACRO
INITSTACK
LDI R16, 0x08 ;R16 = 0b00001000 (utk PB3)
SBI DDRB, 3 ;PB3 sbg output
LDI R17,0
OUT PORTB, R17 ;clear PORTB
.INCLUDE “M16DEF.INC”
.MACRO INITSTACK ;set up stack
LDI R20, HIGH(RAMEND)
OUT SPH, R20
LDI R20, LOW(RAMEND)
OUT SPL, R20
.ENDMACRO
INITSTACK
LDI R16, 0x08 ;R16 = 0b00001000 (utk PB3)
SBI DDRB, 3 ;PB5 sbg output
LDI R17,0
OUT PORTB, R17 ;clear PORTB
Kusuma Wardana, M.Sc. 52
BEGIN : RCALL DELAY ;panggil delay
EOR R17, R16 ;toggle D3
OUT PORTB, R17 ;toggle PB3
RJMP BEGIN
;------------ Timer0 delay
DELAY : LDI R20, 0x00 ;R20 = 0x00
OUT TCNT0, R20 ;load Timer0
LDI R20, 0x01
OUT TCCR0, R20 ;Timer0, normal, no pre, int clk
AGAIN : IN R20, TIFR ;read TIFR
SBRS R20, TOV0 ;jk TOV0=1, skip inst slanjutny
RJMP AGAIN
LDI R20, 0x00
OUT TCCR0, R20
LDI R20, (1<<TOV0)
OUT TIFR, R20 ;clear TOV0 dgn menulis 1
RET
4ms 4ms
.INCLUDE “M32DEF.INC”
.MACRO INITSTACK ;set up stack
LDI R20, HIGH(RAMEND)
OUT SPH, R20
LDI R20, LOW(RAMEND)
OUT SPL, R20
.ENDMACRO
INITSTACK
LDI R16, 0x08 ;R16 = 0b00001000 (utk PB3)
SBI DDRB, 3 ;PB5 sbg output
LDI R17,0
OUT PORTB, R17 ;clear PORTB
Kusuma Wardana, M.Sc. 64
BEGIN : RCALL DELAY ;panggil delay
EOR R17, R16 ;toggle D3
OUT PORTB, R17 ;toggle PB3
RJMP BEGIN
;------------ Timer0 delay
DELAY : LDI R20, 0x83 ;R20 = 0x83
OUT TCNT0, R20 ;load Timer0
LDI R20, 0x04
OUT TCCR0, R20 ;Timer0, normal, pre256,int clk
AGAIN : IN R20, TIFR ;read TIFR
SBRS R20, TOV0 ;jk TOV0=1, skip inst slanjutny
RJMP AGAIN
LDI R20, 0x00
OUT TCCR0, R20
LDI R20, (1<<TOV0)
OUT TIFR, R20 ;clear TOV0 dgn menulis 1
RET
Contoh:
LDI R20, -100
Karena -100 = 9C, maka R20 = 9C (dlm hex)
ATmega32
2x18.75us 18.75us
PB.5
.INCLUDE “M32DEF.INC”
.MACRO INITSTACK ;set up stack
LDI R20, HIGH(RAMEND)
OUT SPH, R20
LDI R20, LOW(RAMEND)
OUT SPL, R20
.ENDMACRO
INITSTACK
LDI R16, 0x08 ;R16 = 0b00001000 (utk PB3)
SBI DDRB, 3 ;PB5 sbg output
LDI R17,0