;********************************************************************
; 8,0 ???
;********************************************************************
.include   "m8def.inc"

.equ TIMER_c=7.8125                  ;((fclk/. .)/ )/2= (timer_c)

.def      temp=r16               ; ?????????
.def      temp_1=r17               ; ????????
.def	wreg		=R18
.def	duration	=R19
.def	wreg2		=R20
;********************************************************************
;  
;********************************************************************
.org       0x0000                 ;  

         rjmp   reset            ; 
         reti    ;rjmp EXT_INT0     ; IRQ0 Handler                     
         reti    ;rjmp EXT_INT1     ; IRQ1 Handler   
		 reti    ;rjmp TIM2_COMP     ; Timer2 Compare Handler           
         reti    ;rjmp TIM2_OVF     ; Timer2 Overflow Handler                        
         reti    ;rjmp TIM1_CAPT     ; Timer1 Capture Handler           
         rjmp    TIM1_COMPAB          ; Timer1 CompareA Handler   
		       
;********************************************************************
reset:
;********************************************************************
;  
;********************************************************************
         ldi    temp, low(RAMEND)
         out    SPL, Temp
         ldi    temp, high(RAMEND)
         out    SPH, Temp
;********************************************************************
; 
;********************************************************************
         ldi      temp, 0xFF         ;   PB
         out      DDRB, temp         ;  
;********************************************************************
;  
;********************************************************************
         ldi      temp, 0            ;
         out      TCNT1H, temp      ;
         out      TCNT1L, temp      ;
         out      TCCR1A, temp      ;
         ldi      temp, (1<<WGM12)|(1<<CS12)|(0<<CS11)|(0<<CS10); clk/256,
         out      TCCR1B, temp      ;  CTC
         ldi    temp, high(TIMER_c)   ; 
         out    OCR1AH, temp        ;  ..
         ldi    temp, low(TIMER_c)    ;  
         out    OCR1AL, temp       ;  .
         ldi    temp, (1<<OCIE1A)   ;  
          out    TIMSK, temp        ;  
         ldi      temp_1, 0         ;  temp_1
		 cli							;  
    	
;********************************************************************
; 
;********************************************************************
         sei                        ;  
loop:      rjmp    loop            ;  
;********************************************************************
; ????????? ??????????
;********************************************************************
TIM1_COMPAB: in       temp, SREG         ; ????????
         push    temp             ; SREG
         com      temp_1            ;
         andi   temp_1, 0b11111111   ;  0- 
         out      PORTB, temp_1      ;   
         out      SREG, temp         ; 
         pop      temp            ; SREG
         reti                    ;   
;********************************************************************
