Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Ultra_Sonic.asm
- *
- * Created: 26.11.2014 19:33:36
- * Chip: Atmega8515
- * Takt: 1mHz
- */
- .include "m8515def.inc"
- .def temp = r16
- .def solldist = r17
- .def dist = r19
- .def distInfo = r20
- .org 0x0000
- rjmp main ; Reset Handler
- main:
- ; Stackpointer initialisieren
- ldi temp, HIGH(RAMEND)
- out SPH, temp
- ldi temp, LOW(RAMEND)
- out SPL, temp
- ldi temp, 0xFF ; Port B auf Ausgang
- out DDRB, temp
- ldi temp, 0xFF //PortB auf HIGH
- out PORTB, temp
- ldi temp, 0xFF // Port A auf Eingang
- out DDRA, temp
- out PORTA, temp //Interne Pull UPs
- test:
- ldi temp, 0x00 //Fallende Flanke?
- out PORTB, temp
- nop//10µs delay geht auch kompakter aber sicherheitshalber habe ich es zum funktionstest mit nop´s gemacht.
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- ldi solldist, 0x05 //Soll distanz
- ldi distInfo, 0x26// Dec 38 für schleife
- ldi temp, 0xFF
- out PORTB, temp //13Ticks = 12µS
- warten: //Trigger wurde gesendet warte auf Antwort
- sbis PINA, 0
- rjmp warten
- signal: //Antwort kommt
- inc dist // 1 dist = 2 cm entfernung 1 Tick / 117
- loop:
- dec distInfo
- brne loop
- nop
- //3*38 Ticks = 114 ticks
- sbic PINA, 0 //115 ticks
- rjmp signal //116 ticks
- // Signal ist weg weiter zur Auswertung
- //INFO widersprüchliche Angaben in Datenblättern verwirren.
- //Im englischen wird gesagt 58µs Pro cm laufzeit
- //Im deustchen steht 117ms für 2cm?
- cp solldist, dist
- breq ledan
- rjmp ledaus
- ledan:
- ldi temp, 0xFF
- out PORTD, temp
- ldi dist, 0x00
- rjmp test
- ledaus:
- ldi temp, 0x00
- out PORTD, temp
- ldi dist, 0x00
- rjmp test
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement