.include "../include/m128def.inc"
; defines
-.def tmp = r16
-.def uart_rxtx = r17
-.def tmp_motor = r18
+.def tmp1 = r16
+.def tmp2 = r17
+.def uart_rxtx = r18
; interrupts
jmp RESET
RESET:
INIT:
- ; uart init
- rcall UART_INIT
-
; motor init
rcall MOTOR_INIT
+ ; uart init
+ rcall UART_INIT
+
; uart interrupt enable
rcall UART_INT_RX_INIT
; set stackpointer
- ldi tmp,high(RAMEND)
- out SPH,r16
- ldi tmp,low(RAMEND)
- out SPL,r16
+ ldi tmp1,high(RAMEND)
+ out SPH,tmp1
+ ldi tmp1,low(RAMEND)
+ out SPL,tmp1
; global interrupt enable
- sei
+ ;sei
- ; debug output
+ ; signal ready output
ldi uart_rxtx,0x23
rcall UART_TX
; loop back the received byte
rcall UART_TX
+ ;
; drive the motor
+ ;
+
+ ; stop it first
rcall MOTOR_STOP
+
+ ; fwd
cpi uart_rxtx,CTRL_FWD
brne CTRL1
rcall MOTOR_FWD
rjmp CTRL4
+
+ ; bwd
CTRL1:
cpi uart_rxtx,CTRL_BWD
brne CTRL2
rcall MOTOR_BWD
rjmp CTRL4
+
+ ; right
CTRL2:
cpi uart_rxtx,CTRL_RIGHT
brne CTRL3
rcall MOTOR_RIGHT
rjmp CTRL4
+
+ ; left
CTRL3:
cpi uart_rxtx,CTRL_LEFT
brne CTRL4
rcall MOTOR_LEFT
CTRL4:
+ ; return
reti
USART0_DRE: