led7seg.s
changeset 7 697ea917c901
parent 6 88c930373d62
child 8 449fee4187f6
equal deleted inserted replaced
6:88c930373d62 7:697ea917c901
   173         com         r16
   173         com         r16
   174 
   174 
   175     ; Display
   175     ; Display
   176         rjmp        SPI_Send
   176         rjmp        SPI_Send
   177 
   177 
   178 ;; Delay for approx. 1s
   178         
       
   179 
       
   180 ;; Delay for approx. one second
   179 Delay_1s:
   181 Delay_1s:
   180         ; 20 * 255 * 255 = 1.3M cycles
   182         ; 40 * 64k = 2.6M loops
   181         ldi         r20, 40
   183         ldi         r20, 40
       
   184 
       
   185 ;; Delay for r20 * 64k cycles
       
   186 VarDelay:
   182         ldi         r21, 255
   187         ldi         r21, 255
       
   188 
       
   189 ;; Delay for r20 * r21 * 255 cycles
       
   190 ShortDelay:
   183         ldi         r22, 255
   191         ldi         r22, 255
   184 
   192 
   185 delay:
   193 delay:
   186         dec         r22
   194         dec         r22
   187         brne        delay
   195         brne        delay
   189         brne        delay
   197         brne        delay
   190         dec         r20
   198         dec         r20
   191         brne        delay
   199         brne        delay
   192 
   200 
   193         ret
   201         ret
       
   202 
   194 
   203 
   195 ;; Count down from 9
   204 ;; Count down from 9
   196 ; Returns once we've hit zero
   205 ; Returns once we've hit zero
   197 Main_Countdown:
   206 Main_Countdown:
   198         ; init from 9
   207         ; init from 9
   244 _spin_next:
   253 _spin_next:
   245         ; display
   254         ; display
   246         mov         r16, r24
   255         mov         r16, r24
   247         rcall       LCD_ShowRaw
   256         rcall       LCD_ShowRaw
   248 
   257 
   249         ; wait
   258         ; short delay
   250         rcall       Delay_1s
   259         ldi         r20, 6
       
   260         ldi         r21, 255
       
   261         rcall       ShortDelay
   251 
   262 
   252         ; next segment
   263         ; next segment
   253         lsl         r24
   264         lsl         r24
   254         
   265         
   255         ; go back to A if we hit G
   266         ; go back to A if we hit G