led7seg.s
changeset 30 5226e512755c
parent 28 51344df466ca
child 32 7ceb76b5a104
equal deleted inserted replaced
29:453550e69e07 30:5226e512755c
     5 ;; Interrupt Vector
     5 ;; Interrupt Vector
     6 .org 0x00
     6 .org 0x00
     7         rjmp        init
     7         rjmp        init
     8 
     8 
     9 .org OC1Aaddr
     9 .org OC1Aaddr
    10 		; Timer/Counter1 Overflow
    10 		; Timer/Counter1 Compare Output A
    11 		rjmp		Timer_OC1A
    11 		rjmp		Timer_OC1A
       
    12 
       
    13 .org OC0Aaddr
       
    14         ; Timer/Counter0 Compare Output A
       
    15         rjmp        Timer_OC0A
    12 
    16 
    13 .org SPIaddr
    17 .org SPIaddr
    14         rjmp        SPI_Interrupt
    18         rjmp        SPI_Interrupt
    15 
    19 
    16 .org ADCCaddr
    20 .org ADCCaddr
    32 
    36 
    33 ;; ADC
    37 ;; ADC
    34 .include "adc.inc"
    38 .include "adc.inc"
    35 
    39 
    36 ;; Timer
    40 ;; Timer
       
    41 .set TIMER0_CB_A = SPI_Update
       
    42 
    37 .include "timer.inc"
    43 .include "timer.inc"
    38 
    44 
    39 ;; Utils
    45 ;; Utils
    40 .include "delay.inc"
    46 .include "delay.inc"
    41 .include "div.inc"
    47 .include "div.inc"
    42 
    48 
    43 Sleep_ADC:
    49 Sleep_ADC:
    44         ; delay
    50         ; delay
    45         rcall       ADC_Read8 
    51         ; rcall       ADC_Read8 
       
    52         rcall       DIP_Read8
    46         
    53         
    47         ; Sleep for 64 * var timer cycles
    54         ; Sleep for 64 * var timer cycles
    48         ldi         r17, 64
    55         ldi         r17, 64
    49         mul         r16, r17
    56         mul         r16, r17
    50         mov         XL, r0
    57         mov         XL, r0
    52 
    59 
    53         rjmp       Timer_Sleep
    60         rjmp       Timer_Sleep
    54 
    61 
    55 ;; Show value
    62 ;; Show value
    56 Main_ShowValue:
    63 Main_ShowValue:
       
    64     ; DEBUG
       
    65 		sbi			PIND, PORTD7
       
    66 
    57         ; load value to r16
    67         ; load value to r16
    58         rcall       DIP_Read8
    68         ; rcall       DIP_Read8
    59         ; rcall       ADC_Read8
    69         ; rcall       ADC_Read8
       
    70         rcall       Timer0_Read8
    60 
    71 
    61         ; display from r16
    72         ; display from r16
    62         rcall       LED7_ShowHex
    73         rcall       LED7_ShowHex
    63         
    74         
    64         ; *g*
    75         ; wait
    65         ldi         XL, 0
    76         rcall       Sleep_ADC
    66         ldi         XH, 16
    77 
    67         rcall       Timer_Sleep
    78         ; ldi         XL, 0
       
    79         ; ldi         XH, 16
       
    80         ; rcall       Timer_Sleep
       
    81         
       
    82         ; rcall       ADC_Read8
       
    83         ; mov         r20, r16
       
    84         ; rcall       VarDelay
    68 
    85 
    69         ; continue
    86         ; continue
    70         rjmp        Main_ShowValue
    87         rjmp        Main_ShowValue
    71 
    88 
    72 ;; Count down from F
    89 ;; Count down from F
   173 
   190 
   174         rjmp        _spin_next
   191         rjmp        _spin_next
   175 
   192 
   176 Main:
   193 Main:
   177 init:
   194 init:
   178 	; DEBUG
       
   179 		sbi			DDRD, PORTD7
       
   180 		sbi			PORTD, PORTD7
       
   181 
       
   182     ; Stack
   195     ; Stack
   183         ldi         r16, high(RAMEND)
   196         ldi         r16, high(RAMEND)
   184         ldi         r17, low(RAMEND)
   197         ldi         r17, low(RAMEND)
   185         out         SPH, r16
   198         out         SPH, r16
   186         out         SPL, r17
   199         out         SPL, r17
   198         rcall       SPI_Init
   211         rcall       SPI_Init
   199     
   212     
   200     ; LCD (requires interrupts, blocks)
   213     ; LCD (requires interrupts, blocks)
   201         rcall       LED7_Init    
   214         rcall       LED7_Init    
   202     
   215     
       
   216     ; DEBUG
       
   217         sbi         DDRD, PORTD7
       
   218         cbi         PORTD, PORTD7
       
   219 
   203     ; Run
   220     ; Run
   204         rcall       Main_ShowValue
   221         ; rcall       Main_ShowValue
   205         ; rcall       Main_Spin
   222         rcall       Main_Spin
   206         ; rcall       Main_Countup
   223         ; rcall       Main_Countup
   207         ; rcall       Main_Countdown
   224         ; rcall       Main_Countdown
   208         ; rcall       Main_Blink
   225         ; rcall       Main_Blink
   209 
   226 
   210 end:
   227 end: