roboforum.ruТехнический форум по робототехнике. |
|
|
.dseg ;
.eseg ;
.cseg ;
.equ but =pd0
.equ led =pb0
.equ led1 =pb1
reset:
ldi tempH,$04 ;neobhodimaia
out SPH,tempH ;ustanovka
ldi tempL,$5F ;dlia
out SPL,tempL ;vseh MEG
ldi temp, 0b00000011 ;pin0,pin1 vihodi
out ddrb,temp ;zapis v reg
ldi temp,0b00000001 ; podt na pin0, led vkl
out portb,temp ;vivod na portb
ldi temp,0b00000001 ;pin0 vhod
out ddrd,temp ;
ldi temp,0b00000001 ; podt.na pin0
out portd,temp ;vivod na portd
start:
cbi portb,led1 ;vikl led2
sbic pind, but ;propustit sled kom, esli kn nazata
rjmp start ; vozvrat
m_1:
sbis pind, but ; prop sled kom, esli kn otp
rjmp m_1 ; ozidanie
m_2:
cbi portb,led ;vikl led1
sbi portb,led1 ;vkl led2
sbic pind, but ;propustit sled kom, esli kn nazata
rjmp m_2 ;vozvrat k metke
m_3:
sbis pind, but ; prop sled kom, esli kn otp
rjmp m_3 ;
m_4:
rjmp reset ;vozvrat k nachalu prog
.def temp =r16
.def temp =r17
.def temp =r18
.dseg
.eseg
.cseg
.equ bortL = pb5 ;
.equ bortR = pb4 ;
.equ left_up = pb2 ;
.equ rith_up =pb1 ;
.equ left_doun =pb0 ;
.equ rith_doun =pb3 ;
reset:
ldi tempH,$04 ;neobhodimaia
out SPH,tempH ;ustanovka
ldi tempL,$5F ;dlia
out SPL,tempL ;vseh MEG
;nastr pinov porta
ldi temp, 0b00001111 ;pini 0-3 vihod
out ddrb, temp ;zapis v reg
ldi temp, 0b00110110 ;podn na pin 1,2,dvig vpered i datchiki
out portb, temp ; vivod portab
start:
sbic pinb, bortL ; esli net signala propustit sled komandu
rjmp start ; ozidanie
m_1:
sbic pinb, bortR ;esli net signala propustit sled komandu
rjmp m_1 ;ozidanie
ldi tempH,$04 ;neobhodimaia
out SPH,tempH ;ustanovka
ldi tempL,$5F ;dlia
out SPL,tempL ;vseh MEG
ldi tempH,$04 ;neobhodimaia
out SPH,tempH ;ustanovka
ldi tempL,$5F ;dlia
out SPL,tempL ;vseh MEG
LDI R16, High(RAMEND)
OUT SPH, R16
LDI R16, Low(RAMEND)
OUT SPL, R16
;простейший бот на тини12
;задача-видим препятствие слева, то поворот вправо.
;препятствие справа - поворот влево.
.include "ATtiny12.inc" ;
.list ;
.def temp =r16
.dseg
.eseg
.cseg
.equ bortL = pb5 ;датчик левого борта
.equ bortR = pb4 ;датчик правого борта
.equ left_up = pb2 ;левый борт вперед
.equ rith_up =pb1 ;правый борт вперед
.equ left_down =pb0 ;левый борт назад
.equ rith_down =pb3 ;правый борт назад
reset:
;nastr pinov porta
ldi temp, 0b00001111 ;pini 0-3 vihod
out ddrb, temp ;zapis v reg
ldi temp, 0b00110110 ;podn na pin 1,2,dvig vpered i datchiki
out portb, temp ; vivod portab
start:
sbic pinb, bortL ;если датчик не сработал,
rjmp a ;пропустить эту команду.
sbic pinb, bortR ;если датчик не сработал,
rjmp b ;пропустить эту команду.
rjmp start ;возврат на старт
a:
cbi portb, rith_up ;выкл правый вперед
sbi portb, rith_down ;вкл правый назад
sbis pinb, bortL ;если датчик еще срабатывает,
rjmp a ;то пропустить эту команду.
rjmp start ;возврат на старт.
b:
cbi portb, left_up ;выкл левый вперед
sbi portb, left_down ;вкл левый назад
sbis pinb, bortR ;если датчик еще срабатывает,
rjmp b ;то пропустить эту команду.
rjmp start ;возврат на старт.
; :Yahoo!:
.devise tinny 12;
.no list ;
.list ;
reset:
;nastr pinov porta
init:
start:
sbic pinb, bortL ;
rjmp a ;
sbic pinb, bortR ;
rjmp b ;
rjmp init ;
.include "c : \ programm files \ atmel \ avr studio \ appnotes \ tinny12.inc" ;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9