jump to navigation

GO-BLOG Maret 12, 2007

Posted by fisika02 in Tak Berkategori.
trackback

.include”C:\Appnotes\m8535def.inc”

.equ maju  =0b00101011
.equ skiri  =0b00101101
.equ skanan  =0b00011011
.equ mkiri  =0b00101000
.equ mkanan  =0b00000101
.equ henti  =0b00000000
.equ mundur  =0b00011101
.equ mdkanan  =0b00011000
.equ mdkiri  =0b00000101
.equ delta15u =0xff5b
.equ delta12m =0xbf34
.equ delta  =0x00
.equ refbawah =65
.equ refatas  =2

.org 0x0000
 rjmp main
.org 0x0001
 rjmp ext_int0
.org 0x0002
 rjmp ext_int1

main:
 ldi  r16,low(RAMEND)
 out  spl,r16
 ldi  r16,high(RAMEND)
 out  SPH,r16

 ldi  R16,0xff
 out  DDRB,R16
 out  PORTB,R16

 ldi  R17,0x00
 out  DDRA,R17
 out  PORTA,R17
 ldi  R16,0xff
 out  DDRC,R16
 out  PORTC,R16
 
 ldi  R17,0b11110000
 out  DDRD,R17
 out  PORTD,R17

init_adc:

 ;ldi  r16,0x0     ;flame kanan
 ;out  ADMUX,r16
 
 ldi  r16,0b10100111    ;1/128
 out  ADCSRA,r16

 ldi  r18,0x0
 out  SFIOR,r18

 ;int0 int1
 ldi  R16,0b00000010
 out  MCUCR,R16

 ldi  R16,0b11000000   ;int0,1 enabled
 ;ldi  R16,0b01000000   ;int0,1 enabled
 out  GICR,R16

 cbi  PORTD,6
 cbi  PORTB,0
 cbi  PORTB,6

mulai:

 sbi  PORTB,6
 rcall delay15u
 cbi  PORTB,6

 ldi  R16,0b00000100
 out  TIMSK,R16

 ldi  R16,high(delta)   ;high value
 out  TCNT1H,R16

 ldi  R16,low(delta)   ;low value
 out  TCNT1L,R16

 ldi  R16,0b00000001    ;nopres
 out  TCCR1B,R16

 sei
 rjmp tunggu

ext_int0:
 in  R16,TCNT1L
 in  R17,TCNT1H
 out  PORTA,R17

 cpi  R17,1
 BREQ terus04
 BRLO terus04
 cpi  R17,2
 BREQ terus03
 cpi  R17,3
 BREQ terus02
 cpi  R17,4
 BREQ terus01
 cpi  R17,5   ;jarak tembok,semakin besar semakin jauh
 BREQ terus0
 cpi  R17,6
 BREQ terus1
 cpi  R17,7
 BREQ terus2
 cpi  R17,8
 BREQ terus3
 cpi  R17,9
 BRSH kanantajam
 reti

terus04:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,255
 ldi  R18,0
 rcall PWM
 rjmp mulai
 reti

terus03:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,155
 ldi  R18,0
 rcall PWM
 rjmp mulai
 reti

terus02:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,100
 ldi  R18,0
 rcall PWM
 rjmp mulai
 reti

terus01:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,90
 ldi  R18,0
 rcall PWM
 rjmp mulai
 reti

terus0:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,0
 ldi  R18,0
 rcall PWM
 rjmp mulai
 reti

terus1:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,0
 ldi  R18,90   ;makin besar makin lambat
 rcall PWM
 rjmp mulai
 reti

terus2:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,0
 ldi  R18,100
 rcall PWM
 rjmp mulai
 reti

terus3:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,0
 ldi  R18,155
 rcall PWM
 rjmp mulai
 reti

kanantajam:
 ldi  R16,maju  ;R16=gerak,R17=PWM kiri, R18=PWM kanan
 out  PORTC,R16
 ldi  R17,0
 ldi  R18,190
 rcall PWM
 rjmp mulai
 reti

PWM:
 ldi  r16,0
 out  OCR2,R17  ;semakin besar semakin lambat
 ldi  r16,0b01110001 ;kiri
 out  TCCR2,r16 

 out  OCR0,R18  ;semakin besar semakin lambat
 ldi  r16,0b01110001 ;kanan
 out  TCCR0,r16
 rcall delay12m
 ret
 
ext_int1:
 push R16 
 in  R16,sreg
 push R16 

 ldi  r16,0
 ldi  r17,0
 out  OCR2,R17     ;semakin besar semakin lambat
 ldi  r16,0b01110001
 out  TCCR2,r16 

 ldi  r17,0
 out  OCR0,R17     ;semakin besar semakin lambat
 ldi  r16,0b01110001
 out  TCCR0,r16
 ldi  R16,0xff
 out  PORTA,R16

 ldi  R16,skiri
 out  PORTC,R16

 pop R16 
 in  R16,sreg
 pop R16
 rcall delay12m
 reti
delay15u:
 ldi  R16,0b00000100
 out  TIMSK,R16

 ldi  R16,high(delta15u)   ;high value
 out  TCNT1H,R16

 ldi  R16,low(delta15u)   ;low value
 out  TCNT1L,R1

 ldi  R16,0b00000001    ;prescaler=1
 out  TCCR1B,R16

loop1:
 in  r17,TIFR
 sbrs R17,TOV1   ;tunggu hingga melimpah
 rjmp loop1
 ldi  r16,0b00000100  ; nolkan TOV1
 out  TIFR,r16
 ret

delay12m:
 ldi  R16,0b00000100
 out  TIMSK,R16

 ldi  R16,high(delta12m)   ;high value
 out  TCNT1H,R16

 ldi  R16,low(delta12m)   ;low value
 out  TCNT1L,R1

 ldi  R16,0b00000010    ;prescaler=8
 out  TCCR1B,R16
 rcall loop1
 ret

start:
 sbi  ADCSRA,ADSC
start1: 
 SBIS ADCSRA,ADIF
 rjmp start1
 cbi  ADCSRA,ADSC
 ret

tunggu:
 ldi  R16,0x02
 out  ADMUX,R16
 rcall start
 in  R16,ADCL
 in  R17,ADCH
comhigh:
 cpi  R17,refatas
 BREQ comlow
 BRSH kamar
 rjmp tunggu
comlow:
 cpi  R16,refbawah
 BRSH kamar
exit:
 rjmp tunggu

kamar:
 ldi  R16,0x00
 out  SREG,R16

 ldi  R16,henti
 out  PORTC,R16
 ldi  R17,0
 ldi  R18,0
 rcall pwm
 sbi  PORTB,0

kamar2:
 rjmp kamar2

Iklan

Komentar»

1. fisika02 - Maret 12, 2007

hahoh, nek nulis listing assembly jo ndek blog, go_blog.ndek AVR studio ae. AVR dudu Arianti Vb Roti

2. fisika02 - Maret 13, 2007

iyo, sing dah pinter.
pke bhs planet mn tuh..?!?
klo aq tetep pke bhs Indonesia, sekali Indonesia tetap Indonesia.
no comment..!?!

3. rahasia - Maret 14, 2007

weleh.. weleh 🙂

4. fisika02 - Maret 14, 2007

Wah, kayaknya lebih bagus lagi, kalo di hapus aja.
ngabiskan halaman aja.

5. fisika02 - Maret 14, 2007

gw kaga’ ngarti apa loe kata ?!?!?!?!?!?!
maksudnyaaaaaaaaaaaaaaaa ??????????????
Sapa yaaaaaaaaaaaaaaaaaa ?????????????


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: