Чт сен 21, 2006 18:19:56
Чт сен 21, 2006 19:32:07
Пт сен 22, 2006 09:27:12
Пт сен 22, 2006 19:06:27
Пн сен 25, 2006 10:00:57
Чт сен 28, 2006 12:50:58
rjmp TIMER1COMPBaddr
TIMER1COMPBaddr:
ldi Temp0,0 ;обнуление таймера
out TCNT1H,Temp0
out TCNT1L,Temp0
.equ TIMER1COMPBaddr = $01C
Пт сен 29, 2006 08:24:01
Пт сен 29, 2006 14:13:45
CyberMerlin писал(а):ага нифига чего-то не пашет
значит написано
- Код:
rjmp TIMER1COMPBaddr
TIMER1COMPBaddr:
ldi Temp0,0 ;обнуление таймера
out TCNT1H,Temp0
out TCNT1L,Temp0
и компилятор пишет
code.asm:108: Error : Label 'TIMER1COMPBaddr' already defined at line 665 in 'C:\avr\tavrasm\appnotes\m162def.inc'
вот что в этом файле на этой строке написано
- Код:
.equ TIMER1COMPBaddr = $01C
Пт сен 29, 2006 15:50:57
ldi Temp0,0 ;обнуление таймера
out TCNT1H,Temp0
out TCNT1L,Temp0
Пт сен 29, 2006 19:27:22
Пт сен 29, 2006 19:28:40
Пн окт 02, 2006 12:04:13
Пн окт 02, 2006 12:12:40
CyberMerlin писал(а):не работает сцылко
Пн окт 02, 2006 13:06:44
Пн окт 02, 2006 14:43:18
rjmp TIMER1COMPBaddr
TIMER1COMPBaddr:
ldi Temp0,0 ;обнуление таймера
out TCNT1H,Temp0
out TCNT1L,Temp0
code.asm:108: Error : Label 'TIMER1COMPBaddr' already defined at line 665 in 'C:\avr\tavrasm\appnotes\m162def.inc'
.equ TIMER1COMPBaddr = $01C
ldi Temp0,RamEnd ;инициализация стека for work in the RCALL
out SPL,Temp0
warning: Constant 0x4FF out of range (0x00-0xFF)
Пн окт 02, 2006 15:08:15
CyberMerlin писал(а):- в обучалке советовалось такое вписать в модуль
- Код:
ldi Temp0,RamEnd ;инициализация стека for work in the RCALL
out SPL,Temp0
Пн окт 02, 2006 15:12:46
CyberMerlin писал(а):полагаю Ваша рекомендация будет - УДАЛИ её из файла
Пн окт 02, 2006 15:48:35
Пн окт 02, 2006 16:14:55
Пн окт 02, 2006 17:27:18
если мы, скажем, хотим активизировать прерывание Timer1_comp1, то мы должны по адресу $004 поставить ссылку на подпрограмму - обработчик этого прерывания. А вообще, лучше расставить в начале программы ссылки на все прерывания. Давайте так и сделаем
.cseg
.org 0
rjmp Reset
rjmp INT_0
rjmp INT_1
rjmp Timer1_capt1
rjmp Timer1_comp1
В пятой строчке стоит безусловный переход на метку Timer1_comp1. Где-то ниже в программе, мы пишем обработчик этого прерывания и в его начале ставим эту метку.
Reset:
INT_0:
INT_1:
Timer1_capt1:
Timer1_comp1:
Timer1_comp1:
ldi Temp,0 ;обнуление таймера
out TCNT1H,Temp
out TCNT1L,Temp
Для того, чтобы команда rcall смогла работать, нам надо-таки инициализировать стек. То есть - поставить указатель стека.
ldi Temp,RamEnd ;инициализация стека
out SPL,Temp