led7seg.s
changeset 4 b45780fbd7e8
parent 3 0584de343264
child 6 88c930373d62
equal deleted inserted replaced
3:0584de343264 4:b45780fbd7e8
   171         rcall        SPI_Send
   171         rcall        SPI_Send
   172     
   172     
   173     ; Done
   173     ; Done
   174         ret
   174         ret
   175 
   175 
       
   176 ;; Delay for approx. 1s
       
   177 Delay_1s:
       
   178         ; 20 * 255 * 255 = 1.3M cycles
       
   179         ldi         r20, 40
       
   180         ldi         r21, 255
       
   181         ldi         r22, 255
       
   182 
       
   183 delay:
       
   184         dec         r22
       
   185         brne        delay
       
   186         dec         r21
       
   187         brne        delay
       
   188         dec         r20
       
   189         brne        delay
       
   190 
       
   191         ret
       
   192 
       
   193 
       
   194 Main:
   176 init:
   195 init:
   177     ; Stack
   196     ; Stack
   178         ldi         r16, high(RAMEND)
   197         ldi         r16, high(RAMEND)
   179         ldi         r17, low(RAMEND)
   198         ldi         r17, low(RAMEND)
   180         out         SPH, r16
   199         out         SPH, r16
   187         rcall       SPI_Init
   206         rcall       SPI_Init
   188     
   207     
   189     ; LCD (requires interrupts)
   208     ; LCD (requires interrupts)
   190         rcall       LCD_Init    
   209         rcall       LCD_Init    
   191 
   210 
   192 main:
   211 ;; Count down from 9
   193     ; Output something
   212 count:
   194         ldi         r16, LCD_4
   213         ; init from 9
       
   214         ldi         r24, LCD_9
       
   215 
       
   216 loop:
       
   217         ; display
       
   218         mov         r16, r24
   195         rcall       LCD_Show
   219         rcall       LCD_Show
   196 
   220 
   197 loop:
   221         ; exit if zero
       
   222         tst         r24
       
   223         breq        blink
       
   224 
       
   225         ; count down
       
   226         dec         r24
       
   227 
       
   228         ; wait...
       
   229         rcall        Delay_1s
       
   230 
       
   231         ; next
   198         rjmp        loop
   232         rjmp        loop
   199 
   233    
       
   234 ;; Blink between dot and empty
       
   235 blink:
       
   236         rcall       Delay_1s
       
   237         
       
   238         ; dot
       
   239         ldi         r16, LCD_DOT
       
   240         rcall       LCD_Show
       
   241 
       
   242         ; wait...
       
   243         rcall       Delay_1s
       
   244         
       
   245         ; empty
       
   246         ldi         r16, LCD_EMPTY
       
   247         rcall       LCD_Show
       
   248         
       
   249         ; loop
       
   250         rjmp        blink
       
   251 
       
   252 end:
       
   253         rjmp        end
       
   254