ОО, а у меня все-равно не работает. Может я чего не понимаю? Вот, ничего не меняю:
Код: Выделить всё
.include "m8adef.inc"
.device ATmega8a
.equ K_div = 250
.def rK_div = r16
start:
rjmp Reset
;.org $006
;rjmp TIM0
.org $009
;.org $00C
TIM0:
;inc r17
;sbrs r17,0
;sbr r18,0b01000000
;sbrc r17,0
;cbr r18,0b01000000
;out PortD,r18
IN R18,PIND
EOR R18,R19
OUT PORTD,R18
out TCNT0,rK_div
reti
Reset:
ldi r18,low(RAMEND)
out SPL,r18
LDI R20,HIGH(RAMEND)
OUT SPH,R20
ldi r18,0b01000000
out DDRD,r18
clr r17
;clr r18
ldi r18,(1<<TOIE0)
out TIMSK,r18
ldi rK_div,K_div
neg rK_div
out TCNT0,rK_div
;ldi r18,0b00000010 ; длительность 1 и 0 по 500мкс при Fclk=4МГц
ldi r18,0b00000101 ; длительность 1 и 0 по 64мс при Fclk=4МГц
out TCCR0,r18
LDI R19,0b01000000
sei
cy:
rjmp cy
Отдаживаю: первый jump на Reset, затем проходит 17циклов по 17кмс (тактовая частота 1МГц). В итоге все замыкается на цикле cy. Все, больше ничего!:(
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru