Вот сам собственно код:
Спойлер
Код: Выделить всё
.device Attiny2313
.include "2313def.inc"
.def temp = r16
.def Count_time = r17
.def Counter = r18
.def Flag = r19
rjmp RESET ; Reset Handler
rjmp INT0 ; External Interrupt0 Handler
;rjmp INT1 ; External errupt1 Handler
;rjmp TIM1_CAPT ; Timer1 Capture Handler
;rjmp TIM1_COMPA ; Timer1 CompareA Handler
;rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
;rjmp USART0_RXC ; USART0 RX Complete Handler
;rjmp USART0_DRE ; USART0,UDR Empty Handler
;rjmp USART0_TXC ; USART0 TX Complete Handler
;rjmp ANA_COMP ; Analog Comparator Handler
;rjmp PCINT ; Pin Change Interrupt
;rjmp TIMER1_COMPB ; Timer1 Compare B Handler
;rjmp TIMER0_COMPA ; Timer0 Compare A Handler
;rjmp TIMER0_COMPB ; Timer0 Compare B Handler
;rjmp USI_START ; USI Start Handler
;rjmp USI_OVERFLOW ; USI Overflow Handler
;rjmp EE_READY ; EEPROM Ready Handler
;rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
INT0:
clr temp
out GIMSK, temp
ldi temp, $FF
out GIFR, temp
sbrs Flag, 0
rjmp Push_pin
cbr Flag, 1
inc Counter
out PORTB, Counter
ldi Count_time, 50
rjmp ent_int
Push_pin:
sbr Flag, 1
ldi Count_time, 128
ent_int:
ldi temp, 0b00000011
out TCCR0, temp
reti
TIM0_OVF:
dec Count_time
breq end_timer
reti
end_timer:
clr temp
out TCCR0, temp
sbrc Flag, 0
rjmp Push_tim
ldi temp, (1<<ISC01)
out MCUCR, temp
rjmp end_tim
Push_tim:
ldi temp, (1<<ISC01|1<<ISC11)
out MCUCR, temp
end_tim:
ldi temp, (1<<INT0)
out GIMSK, temp
reti
RESET:
ldi temp, low(RAMEND)
out SPL, temp
ldi temp, 0b00000100
out PORTD, temp
ldi temp, 0b11111111
out DDRB, temp
clr Counter
clr Flag
ldi temp, (1<<TOIE0)
out TIMSK, temp
ldi temp, (1<<ISC01)
out MCUCR, temp
ldi temp, (1<<INT0)
out GIMSK, temp
sei
Gcykle:
rjmp Gcykle
asm v1
error : Duplicate label
error : Internal - label changed between passes - conditoonal on forward reference?
asm v2
error: Illegal attempt to re-use 'INT0' as label
C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\2313def.inc(197): info: previous definition of 'INT0'
забегу вперед, данная прога работает на atmega16 как то через жопу некорректно: счет идет после второго нажатия, а иногда бывает и одно нажатие считает, в чем траблы??


