Re: Пожалуйста помогите найти ошибку в программе для avr.
Добавлено: Вт май 29, 2012 12:19:41
прежде, чем работать с симулятором, прочитайте его ограничения!!!
(сам попадался
)
(сам попадался
Здесь можно немножко помяукать :)
https://radiokot.ru:443/forum/

Спасибо.Engineer_Keen писал(а):Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code
Код: Выделить всё
.CSEG
RJMP VECT_END
.ORG $0034 ;Вектор прерывания таймера T при совпадении
RJMP SINOUT
.ORG $0036
RJMP SINOUT
.ORG $0038
RJMP SINOUT ;Адрес подпрограммы обработки прерывания
VECT_END:
;***** инициализация стека
ldi r19,0x04
out SPH,r19
ldi r19,0x5F
out SPL,r19
;***** инициализация таймера
LDI r20,0
OUT OCR3AH, r20 ;в регистр совпадений таймера T
LDI r21,0x3F
OUT OCR3AL, r21 ;в регистр совпадений таймера T
LDI r20,0
OUT OCR3BH, r20 ;в регистр совпадений таймера T
LDI r21,0x4F
OUT OCR3BL, r21 ;в регистр совпадений таймера T
LDI r20,0
OUT OCR3CH, r20 ;в регистр совпадений таймера T
LDI r21,0x5F
OUT OCR3CL, r21 ;в регистр совпадений таймера T
LDI R16,0b01010101
OUT TCCR3A,R16
LDI R17,0b00001001
OUT TCCR3B,R17
LDI R18, 0b00000000
OUT TIMSK,R18
LDI R25,0b00011010
OUT ETIMSK,R25
SEI
LOOP:
RJMP loop
SINOUT:
LDI R22,10
RETI
astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
А говорили не можете понять в чем проблема, я поэтому и спросил компилируется ли код. Как исправлять вам сказали.astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
Естественно те же, вы же их не исправляли, JMP/RJMP тут не при чем.astrgan писал(а):Поменял rjmp на jmp, теже ошибки.
Код: Выделить всё
.include "m128def.inc"
.CSEG
JMP VECT_END
MAS1: .DB 0x1A,0x2A,0x3A,0x4A
MAS2: .DB 0x1B,0x2B,0x3B,0x4B
MAS3: .DB 0x1C,0x2C,0x3C,0x4C
.ORG $0034 ;Вектор прерывания таймера T1 при совпадении
JMP SINOUTA
.ORG $0036
JMP SINOUTB
.ORG $0038
JMP SINOUTC ;Адрес подпрограммы обработки прерывания
VECT_END:
LDI ZL,LOW(MAS1*2)
LDI ZH,HIGH(MAS1*2)
LDI YL,LOW(MAS2*2)
LDI YH,HIGH(MAS2*2)
LDI XL,LOW(MAS3*2)
LDI XH,HIGH(MAS3*2)
;***** инициализация стека
ldi r19,0x04
out SPH,r19
ldi r19,0x5F
out SPL,r19
;***** инициализация таймера
LDI r20,0
STS OCR3AH, r20 ;в регистр совпадений таймера T1
LPM r21,Z+
STS OCR3AL, r21 ;в регистр совпадений таймера T1
LDI r20,0
STS OCR3BH, r20 ;в регистр совпадений таймера T1
LPM r23,Y+
STS OCR3BL, r23 ;в регистр совпадений таймера T1
LDI r20,0
STS OCR3CH, r20 ;в регистр совпадений таймера T1
LPM r25,X+
STS OCR3CL, r25 ;в регистр совпадений таймера T1
LDI R16,0b01010101
STS TCCR3A,R16
LDI R17,0b00001001
STS TCCR3B,R17
LDI R18, 0b00000000
STS TIMSK,R18
LDI R25,0b00011010
STS ETIMSK,R25
SEI
LOOP:
JMP loop
SINOUTA:
CLI
LDI R16,0b00000000
STS TCCR3A,R16
LDI R17,0b00000000
STS TCCR3B,R17
LDI r20,0
STS OCR3BH, r20 ;в регистр совпадений таймера T1
LPM r21,Y+
STS OCR3BL, r21 ;в регистр совпадений таймера T1
LDI R16,0b01010101
STS TCCR3A,R16
LDI R17,0b00001001
STS TCCR3B,R17
RETI
SINOUTB:
CLI
LDI R16,0b00000000
STS TCCR3A,R16
LDI R17,0b00000000
STS TCCR3B,R17
LDI r20,0
STS OCR3AH, r20 ;в регистр совпадений таймера T1
LPM r22,Z+
STS OCR3AL, r22 ;в регистр совпадений таймера T1
LDI R16,0b01010101
STS TCCR3A,R16
LDI R17,0b00001001
STS TCCR3B,R17
RETI
SINOUTC:
CLI
LDI R16,0b00000000
STS TCCR3A,R16
LDI R17,0b00000000
STS TCCR3B,R17
LDI r20,0
STS OCR3CH, r20 ;в регистр совпадений таймера T1
LPM r23,X+
STS OCR3CL, r23 ;в регистр совпадений таймера T1
LDI R16,0b01010101
STS TCCR3A,R16
LDI R17,0b00001001
STS TCCR3B,R17
RETIДа тут прозрачно всё, но не думаю , что надо давать прямой ответ на - почему? Ответ легко ищется в "шпаргалках ....." на этом форуме или в литературе или help STUDIO. Зато запомнится на всю жизнь.Gudd-Head писал(а): 2. Пометили бы место, на которое ругается компилятор.