Таймер 1 Режим съемки проблема

G

Guest

Guest
Привет друзья
Я написал эту программу для таймера 1 режима съемки (mega32), я хочу видеть ICR1 старший байт на Порта, а младший байт на PORTB, но когда я запускаю эту программу ISEE младший байт на Порта, а highbyte на PORTB!
Whats Wrong в моей программе ??!!!
----------------------------------------------
# INCLUDE "m32def.inc"
. ORG $ 0
RJMP SETUP
. ORG $ C
RJMP TIMER_CAP
. ORG $ 14
SETUP:
LDI R16, HIGH (RAMEND)
OUT SPH, R16
LDI R16, LOW (RAMEND)
OUT SPL, R16
LDI R16, $ FF
OUT DDRA, R16
OUT DDRB, R16
CBI ДРРР, 6
ВОО PORTD, 6
LDI R16, $ 0
OUT TCNT1H, R16
OUT TCNT1L, R16
LDI R16, 0B00000101
OUT TCCR1B, R16
LDI R16, 0B00100000
OUT TIMSK, R16
SEI
LOOP: RJMP LOOP
TIMER_CAP:
В R17, ICR1H
В R18, ICR1L
OUT PORTA, R17
OUT PORTB, R18
RETI
--------------------------------------------
С уважением

 
Привет,
Если у вас есть байтов настройка Вашего компилятора, установите его в "маленький" Endian, чтобы получить высокий байта в адрес высоких и низких байт низким адрес.

Привет,
Laktronics

 
Привет и спасибо
I Dont использовать любой компилятор, я написал эту программу на ассемблере и тогда я собрал его с avrstudio.

 
Доступ к 16-разрядный регистр

"Для этого 16-битной записи, старшего байта должны быть написаны до байта Низкий. Для 16-битных
Читайте, байт Низкий должна быть прочитана до байта высоки ".

Попробуйте программу после замены первой и второй линии TIMER_CAP

TIMER_CAP:
В R18, ICR1L
В R17, ICR1H
OUT PORTA, R17
OUT PORTB, R18
RETI

 
Благодаря svicent
Я написал код, как ваш код первый раз, и оно же проблема гудок Тогда я изменил его на эту программу, которую вы видите здесь, но он тоже был неправ, я хочу сказать, если я прочитал старший байт первый и показать на порту, это показывает высокий байт порта, и если б я читал младший байт первый и показать порта показывает младший байт в порт B снова!

 

Welcome to EDABoard.com

Sponsor

Back
Top