From 2d18dcd014d9b07e61dfa30b4dc7b67a40017c45 Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Sat, 25 Sep 2021 00:24:49 +0300 Subject: [PATCH] refactor: blink --- firmware.asm | 28 +++++++++++++++++++++++----- firmware.hex | 8 +++++--- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/firmware.asm b/firmware.asm index 9606777..38c42a8 100644 --- a/firmware.asm +++ b/firmware.asm @@ -20,8 +20,7 @@ .equ LED_PORT = PORTA ; LED Port .equ LED_PIN = PINA0 ; LED Pin -.equ oVal = 70 -.equ iVal = 1000 +.equ iVal = 65000 .org 0x00 ; Start program at 0x00 .cseg ; Code segment @@ -29,9 +28,7 @@ main: ; Start up program init_stack_p r16, RAMEND rcall init_ports ; Initialize MCU ports - ldi r18, oVal - ldi r24, low(iVal) - ldi r25, high(iVal) + rcall delay_loop_reset loop: ; Program loop cbi LED_PORT, LED_PIN @@ -48,7 +45,28 @@ init_ports: ; Init MCU ports out LED_PORT, r17 ret +delay_loop_reset: ; Load value to registar pair again + ldi r24, low(iVal) + ldi r25, high(iVal) +ret + delay_loop: sbiw r24, 1 brne delay_loop + nop + rcall delay_loop_reset + rcall delay_loop_2 +ret + +delay_loop_2: + sbiw r24, 1 + brne delay_loop_2 + rcall delay_loop_reset + rcall delay_loop_3 +ret + +delay_loop_3: + sbiw r24, 1 + brne delay_loop_3 + rcall delay_loop_reset ret \ No newline at end of file diff --git a/firmware.hex b/firmware.hex index c6b96a1..30f1af6 100644 --- a/firmware.hex +++ b/firmware.hex @@ -1,5 +1,7 @@ :020000020000FC -:100000000FED0DBF08D026E488EE93E0D89809D014 -:10001000D89A07D0FBCF01E010E000000ABB1BBB61 -:0800200008950197F1F708951E +:100000000FED0DBF06D00BD0D8980CD0D89A0AD0DF +:10001000FBCF01E010E000000ABB1BBB089588EE97 +:100020009DEF08950197F1F70000F9DF01D00895E1 +:100030000197F1F7F4DF01D008950197F1F7EFDFB1 +:02004000089521 :00000001FF