Assembly: simple delay

;********************************************** 
;3/13/2019
;Blink LED 
;********************************************** 
.include "ATxmega128A1Udef.inc"
.equ BIT0 = 0x01
.org 0x0
rjmp MAIN
MAIN:
ldi R16, BIT0
sts PORTC_DIRSET, R16
sts PORTA_DIRCLR, R16
sts PORTC_OUT, R16
POLLING:
lds R16, PORTA_IN
andi r16, BIT0
cpi r16, BIT0
brne POLLING
ldi r19, 0x01
rcall DELAY_X_10MS
sts PORTC_OUTTGL, R16
rjmp POLLING
;****************************************** 
;Delays by x10 ms 
;******************************************
DELAY_X_10MS: 
cpi r19, 0 ;5 passed in from LOOP 
brne LOOP3 ;if not 0, go again 
ret 
LOOP3: 
rcall DELAY_10MS 
dec r19 
brne LOOP3 
ret 
;****************************************** 
;delays by 10 ms 
;****************************************** 
DELAY_10MS: 
ldi r17, 0x16 ;outer loop @ 1B
LOOP1: 
dec r17 
brne START_COUNT 
ret
START_COUNT: 
;ldi r18, 0xFF ;inner loop @ FF 
ldi r18, 0x02
LOOP2: 
dec r18 
brne LOOP2 
rjmp LOOP1

Comments

Popular posts from this blog

MATLAB: signal processing chorus with sample