Код: Выделить всё
.include "tn2313def.inc"
;.equ T1_Interval = 65536-10
;.equ T1_Interval = 65536-15625 ; budet sobitie po perepolneniu timera
.def temp = r16
.def Reg1 = r17
.org 0x0000
rjmp RESET
.org OVF1addr ; Overflow1 Interrupt Vector Address
rjmp TMR1_OVF
.org OVF0addr ;Overflow0 Interrupt
rjmp TMR0_OVF
.org PCIaddr
reti
.org INT0addr ;External Interrupt0
reti
.org INT1addr ;External Interrupt1
reti
.org ICP1addr ;Input capture interrupt 1
reti
.org OC1Aaddr ;Timer/Counter1 Compare Match A
reti
.org URXC0addr ;USART0 RX Complete Interrupt
reti
.org UDRE0addr ;USART0 Data Register Empty Interrupt
reti
.org UTXC0addr ;USART0 TX Complete Interrupt
reti
.org ACIaddr ;Analog Comparator Interrupt
reti
.org OC1Baddr ;Timer/Counter1 Compare Match B
reti
.org OC0Aaddr ;Timer/Counter0 Compare Match A
reti
.org OC0Baddr ;Timer/Counter0 Compare Match B
reti
.org USI_STARTaddr ;USI start interrupt
reti
.org USI_OVFaddr ;USI overflow interrupt
reti
.org ERDYaddr ;EEPROM write complete
reti
.org WDTaddr ;Watchdog Timer Interrupt
reti
.cseg
.MACRO outi
LDI R16,@1
OUT @0,R16
.ENDM
TMR0_OVF:
outi PORTB, 0xff
reti
TMR1_OVF:
cli
; kasaemo taimera
; outi TCNT1H, High(T1_Interval)
; outi TCNT1L, Low(T1_Interval) ; initializiruem nacialinie znaceniya
;inc Reg1
ror Reg1
out PORTD, Reg1
sei
reti
RESET:
; zapreshaem prerivaniya
cli
; initializatsiya steka
ldi temp, LOW(RAMEND)
out SPL, temp
; nastraivaem pini
; pini kotorie ne ispolzuiutsia kajetsia toje nastraivaiutsia na vivod
outi DDRB, (1<<DDB0)|(1<<DDB1)|(1<<DDB2)|(1<<DDB3)|(1<<DDB4)|(0<<DDB5)|(0<<DDB6)|(0<<DDB7)
ser temp
out DDRD, temp
; kasaemo taimera
; outi TCNT1H, High(T1_Interval)
; outi TCNT1L, Low(T1_Interval) ; initializiruem nacialinie znaceniya
; etih registrov ne bilo, no uje testa radi reshil dobaviti
outi CLKPR, (1<<CLKPCE)
outi GTCCR, (1<<PSR10)
; prescaler
outi TCCR1B,(1<<CS11)|(1<<CS10)
outi TIMSK, (1<<TOIE1) ; razreshaem prerivanie po perepolneniu
outi TCCR0B,(1<<CS01)
outi TIMSK, (1<<TOIE0) ; vkliuciaem timer0
ldi Reg1, 5
out PORTD, Reg1
; razreshaem prerivaniya
sei
rjmp MAIN
MAIN:
sei ;etoi erundi tut toje ne doljno biti, no na vsiakii sluciai dlia testa postavil
rjmp MAIN
В этом коде я вообще убрал начальное значение таймера1 и включил таймер0 так же без начального значения.
На всякий случай описание схемы (хотя она тут примитивная).
Подключен внешний кварц ( пробовал с внутренним RC генератором - таже хрень). PORTD - полностью настроен на вывод. PIND0-PIND5 через резисторы подключены светодиоды. PINB0-PINB3 так же подключены светодиоды. PINB4 -весит в воздухе, PINB5-PINB7 - кнопки, которые с другой стороны подключены на GND. Два кондера на 18пк на лапах кварца и 2 кондера на питании. В принципе все. Если в RESET записывать в portb и portd значение 0xff, то все диоды (как и положено) загораются.
Я так понимаю, что если бы я перегрел контроллер при пайке - мало вероятно что у него могли бы проснуться подобные глюки