Проверить ограничения применяемой версии симулятора относительно возможностей работы с данной микросхемой.
Подгруппа ATtiny10-20-40 весьма специфична. Так что вчычитываем хелп симулятора...
Поставте паузу и поглядите значение регистров таймера 0. Вы все увидите, что настроили. Увидите что нет флага сравнения, а сам таймер ничего не насчитал.
Вы не задали источник тактирования таймера.
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
rjmp RESET_VECT ; Reset Handler Vector at: 0x00
reti ; Vector at: 0x01
reti ; Vector at: 0x02
reti ; Vector at: 0x03
reti ; Vector at: 0x04
rjmp TIM0_COMPA_VECT ; Timer0 Compare A Handler 0x05
reti ; Vector at: 0x06
reti ; Vector at: 0x07
reti ; Vector at: 0x08
reti ; Vector at: 0x09
rjmp ADC_VECT ; ADC Conversion Handler
;End vector header
;----------
;----------
;----------
; Timer 0 output compare A interrupt service routine
;----------
;----------
TIM0_COMPA_VECT:
in tmp, SREG
LED1_ON
LED2_OFF
com flag
out SREG,tmp
reti
;----------
;----------
ADC_VECT:
in tmp, SREG
in tADCL, ADCL
ldi tTCNT0L,K
;-------------------------------------------------------------------------------------;
rcall mul08u ;
;-------------------------------------------------------------------------------------;
; Result:var1[1:0] = 16bit result of var10 * var20
subi var10,LOW(-DL1)
sbci var11,HIGH(-DL1)
out OCR0AH,var11
out OCR0AL,var10
out SREG,tmp
reti;
;------------------------------------------------------------------------------------;
;------------------------------------------------------------------------------------;
WDT_off: ;
wdr ;
; Clear WDRF in RSTFLR ;
in r16, RSTFLR ;
andi r16, ~(1<<WDRF) ;
out RSTFLR, r16 ;
; Write signature for change enable of protected I/O register ;
ldi r16, 0xD8 ;
out CCP, r16 ;
; Within four instruction cycles, turn off WDT ;
ldi r16, (0<<WDE) ;
out WDTCSR, r16 ;
ret ;
;------------------------------------------------------------------------------------;
RESET_VECT: ; Reset Handler
;Set Stack Pointer
; ldi r16, high(RAMEND); Main program start
; out SPH,r16 ; Set Stack Pointer
; ldi r16, low(RAMEND) ; to top of RAM
; out SPL,r16
;------------------------------------------------------------------------------------;
MOV16 SP,RAMEND
rcall WDT_off
clr flag
ldi tADCL, 0x00
ldi tADCH, 0x00
; out TCNT0L,tADCL
; out TCNT0H,tADCL
subi tADCL,LOW(-DL1)
sbci tADCH,HIGH(-DL1)
lsl tADCL
rol tADCH
lsl tADCL
rol tADCH
out OCR0AH,tADCH
out OCR0AL,tADCL
; External Interrupt Mask Register
ldi tmp,0x00
out EIMSK,tmp
; Pin Change Mask Register
ldi tmp,0x00
out PCMSK,tmp
; Pin Change Interrupt Control Register
ldi tmp,0x00
out PCICR,tmp
;Set Stack Pointer
; ldi r16, high(RAMEND); Main program start
; out SPH,r16 ; Set Stack Pointer
; ldi r16, low(RAMEND) ; to top of RAM
; out SPL,r16
;----------------------------------------------------------------------------------- ;
; Port directional ;
ldi tmp,0x06 ;
out DDRB,tmp ;
; Port pull up
ldi tmp,0x00
out PUEB,tmp
; Port out
ldi tmp,0x00
out PORTB,tmp; Write signature for change enable of protected I/O register
;---------------------------------------------------------------------------------;
ldi tmp,0xD8;
out CCP,tmp;
;---------------------------------------------------------------------------------;
; Clock Main Settings Register
ldi tmp,0x00
out CLKMSR,tmp; Write signature for change enable of protected I/O register
;---------------------------------------------------------------------------------;
ldi tmp,0xD8;
out CCP,tmp;
;----------------------------------------------------------------------------------
; Clock prescaler
; Set CPU speed by setting clock prescalar:
; CCP register must first be written with the correct signature - 0xD8
ldi tmp,0x03 ; fosc/8 =1Mhz
out CLKPSR,tmp
;----------------------------------------------------------------------------------
; ADC Multiplexer Selection Register
ldi tmp,0x00
out ADMUX,tmp ; ADC0
;----------------------------------------------------------------------------------
; ADC Control and Status Register A
ldi tmp,0xEF
out ADCSRA,tmp
;----------------------------------------------------------------------------------
; ADC Control and Status Register B
ldi tmp,0x00
out ADCSRB,tmp
;----------------------------------------------------------------------------------
; Digital Input disable
ldi tmp,0x01
out DIDR0,tmp
;----------------------------------------------------------------------------------
; Timer/Counter0 Control Register A
ldi tmp,0
out TCCR0A,tmp
;----------------------------------------------------------------------------------
; Timer/Counter0 Control Register B 0,001024 Cek 1 TIK
ldi tmp,0x05|(1<<WGM02) ; режим счета импульсов (OCR0A) (сброс при совпадении)
out TCCR0B,tmp
;----------------------------------------------------------------------------------
; Timer/Counter0 Control Register C
; ldi tmp,0
; out TCCR0C,tmp
;----------------------------------------------------------------------------------
; Timer/Counter Interrupt Mask Register 0
ldi tmp, (1<<OCIE0A) ;OCIE0A
out TIMSK0,tmp
;
brlo loop ; если TCNT0 < 1800 - переход к обработчику ошибки
;cpi T0,Ch1 ; сравниваем T0 и Ch1
; brlo OpE ; если T0 < Ch1 - переход к обработчику ошибки
; cpi T0,(Chk+1) ; сравниваем T0 и Chk+1
; brsh OpE ; если T0 > или = Chk+1 - переход к обработчику ошибки