X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fatmel.git;a=blobdiff_plain;f=beginners%2Frgb_moritz.asm;fp=beginners%2Frgb_moritz.asm;h=c3b398488c77b4d5b3d93a7122da89d6fb9b39cf;hp=bc3a72a2b43b5e1267f3ff7e56bc2cb3a5f7bda5;hb=fbd9a8977b877a8186c74869c4e197f9baca3de8;hpb=6552af2f6025fc1fd8b9ee6af76ad663d0ec430b diff --git a/beginners/rgb_moritz.asm b/beginners/rgb_moritz.asm index bc3a72a..c3b3984 100644 --- a/beginners/rgb_moritz.asm +++ b/beginners/rgb_moritz.asm @@ -21,6 +21,9 @@ .def rgb_level = r21 .def rgb_dir = r22 .def rgb_upd_cnt = r23 +.def r_map = r24 +.def g_map = r25 +.def b_map = r26 .equ pin_red = 0x01 .equ pin_green = 0x02 .equ pin_blue = 0x04 @@ -107,6 +110,23 @@ mov green,tmp ldi tmp,mid mov blue,tmp +; initial mapping intensities of intensities +ldi ZL,low(INTENSITIES*2) +ldi ZH,high(INTENSITIES*2) +add ZL,red +adc ZH,zero +lpm r_map,Z +ldi ZL,low(INTENSITIES*2) +ldi ZH,high(INTENSITIES*2) +add ZL,green +adc ZH,zero +lpm g_map,Z +ldi ZL,low(INTENSITIES*2) +ldi ZH,high(INTENSITIES*2) +add ZL,blue +adc ZH,zero +lpm b_map,Z + ; rgb propagation init ldi rgb_dir,0x04 @@ -180,6 +200,23 @@ sbrc rgb_dir,2 sub blue,two add blue,one +; update mapping +ldi ZL,low(INTENSITIES*2) +ldi ZH,high(INTENSITIES*2) +add ZL,red +adc ZH,zero +lpm r_map,Z +ldi ZL,low(INTENSITIES*2) +ldi ZH,high(INTENSITIES*2) +add ZL,green +adc ZH,zero +lpm g_map,Z +ldi ZL,low(INTENSITIES*2) +ldi ZH,high(INTENSITIES*2) +add ZL,blue +adc ZH,zero +lpm b_map,Z + ; power on the leds POWER_LEDS: mov rgb_level,zero @@ -189,19 +226,19 @@ add rgb_upd_cnt,one CHECK_RED: -cp count,red +cp count,r_map brne CHECK_GREEN ori rgb_level,pin_red CHECK_GREEN: -cp count,green +cp count,g_map brne CHECK_BLUE ori rgb_level,pin_green CHECK_BLUE: -cp count,blue +cp count,b_map brne SET_PORTS ori rgb_level,pin_blue @@ -214,3 +251,7 @@ add count,one reti +; intensities +INTENSITIES: +.include "rgb_moritz_intensities.asm" +