led7seg.s
changeset 89 1b3cea759eff
parent 88 c923295ee520
child 90 13c2deb919d1
--- a/led7seg.s	Mon Jun 02 18:27:08 2014 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-.nolist
-.include "m168def.inc"      ; Same family as 328P
-.list
-
-
-;; Interrupt Vector
-.org 0x00
-        rjmp        init
-
-.org OC1Aaddr
-		; Timer/Counter1 Compare Output A
-		rjmp		Timer_OC1A
-
-.org OC0Aaddr
-        ; Timer/Counter0 Compare Output A
-        rjmp        Timer_OC0A
-
-.org SPIaddr
-        rjmp        SPI_Interrupt
-
-.org ADCCaddr
-        rjmp        ADC_Interrupt
-
-.org 0x40
-
-;; Syntax
-.include "macros.inc"
-
-;; SPI
-.include "spi.inc"
-
-;; LCD
-.include "led7seg.inc"
-
-;; DIPs
-.include "dip.inc"
-
-;; ADC
-
-; ADC Interrupt handler
-On_ADC:
-    ; DEBUG
-		sbi			PIND, PORTD7
-
-    ; Check timer, from r16
-        rcall       ADC_Read8
-
-        ldi         r17, 64
-        mul         r16, r17
-        mov         XL, r0
-        mov         XH, r1 
-
-        rjmp       Timer_Update
-
-.set ADC_Handler = On_ADC
-
-.include "adc.inc"
-
-;; Timer
-.set TIMER0_CB_A = SPI_Update
-
-.include "timer.inc"
-
-;; Utils
-.include "delay.inc"
-.include "div.inc"
-
-Sleep_ADC:
-        ; delay
-        rcall       ADC_Read8 
-        ; rcall       DIP_Read8
-        
-        ; Sleep for 64 * var timer cycles
-        ldi         r17, 64
-        mul         r16, r17
-        mov         XL, r0
-        mov         XH, r1 
-
-        rjmp       Timer_Sleep
-
-;; Show value
-Main_ShowValue:
-        ; load value to r16
-        ; rcall       DIP_Read8
-        rcall       ADC_Read8
-        ; rcall       Timer0_Read8
-
-        ; display from r16
-        rcall       LED7_ShowHex
-        
-        ; wait
-        rcall       Sleep_ADC
-
-        ; ldi         XL, 0
-        ; ldi         XH, 16
-        ; rcall       Timer_Sleep
-        
-        ; rcall       ADC_Read8
-        ; mov         r20, r16
-        ; rcall       VarDelay
-
-        ; continue
-        rjmp        Main_ShowValue
-
-;; Count down from F
-; Returns once we've hit zero
-Main_Countdown:
-        ; init from F
-        ldi         r24, LED7_F
-
-_count_loop:
-        ; display
-        mov         r16, r24
-        mov         r16, r24
-        rcall       LED7_Show
-
-        ; exit if zero
-        tst         r24
-        breq        _count_end
-
-        ; count down
-        dec         r24
-
-        ; wait...
-        rcall       Sleep_ADC
-
-        ; next
-        rjmp        _count_loop
-
-_count_end:
-        ; done
-        ret
-
-;; Count up from 00 -> 255
-; Returns once done
-Main_CountUp:
-        ; init from 0
-        ldi         r24, 0
-
-_countup_loop:
-        ; display
-        mov         r16, r24
-        rcall       LED7_ShowDec
-
-        ; wait...
-        rcall       Sleep_ADC
-
-        ; exit if zero
-        cpi         r24, 255
-        breq        _countup_end
-
-        ; count up
-        inc         r24
-
-        ; continue
-        rjmp        _countup_loop
-
-_countup_end:
-        ; done
-        ret
-
-;; Blink between dot and empty
-Main_Blink:
-_blink_loop:
-        ; dot
-        ldi         r16, LED7_DOT
-        ldi         r17, LED7_EMPTY
-        rcall       LED7_Show
-
-        ; wait...
-        rcall       Sleep_ADC
-        
-        ; empty
-        ldi         r16, LED7_EMPTY
-        ldi         r17, LED7_DOT
-        rcall       LED7_Show
-        
-        ; wait... 
-        rcall       Sleep_ADC
-        
-        ; loop
-        rjmp        _blink_loop
- 
-;; Chase segments
-Main_Spin:
-_spin_init:
-        ; init from top
-        ldi         r24, 0b00000001 
-
-_spin_next:
-        ; display
-        mov         r16, r24
-        mov         r17, r24
-        com         r17
-        andi        r17, 0b00111111
-        rcall       LED7_ShowRaw
-
-        ; delay
-        rcall       Sleep_ADC
-        
-        ; next segment
-        lsl         r24
-        
-        ; go back to A if we hit G
-        sbrc        r24, 6
-        rjmp        _spin_init
-
-        rjmp        _spin_next
-
-Main:
-init:
-    ; Stack
-        ldi         r16, high(RAMEND)
-        ldi         r17, low(RAMEND)
-        out         SPH, r16
-        out         SPL, r17
-
-    ; Enable interrupts
-        sei
-
-    ; ADC (slowest to start up)
-        rcall       ADC_Init
-    
-    ; Timer
-        rcall       Timer_Init
-
-    ; SPI
-        rcall       SPI_Init
-    
-    ; LCD (requires interrupts, blocks)
-        rcall       LED7_Init    
-    
-    ; DEBUG
-        sbi         DDRD, PORTD7
-        cbi         PORTD, PORTD7
-
-    ; Run
-        rcall       Main_Countup
-        ; rcall       Main_Countdown
-        ; rcall       Main_ShowValue
-        ; rcall       Main_Spin
-        rcall       Main_Blink
-
-end:
-        rjmp        end
-