Timer 1 capture mode probleem

N

Navid T

Guest
Hi vrienden
Ik schreef dit programma voor timer 1 opnamefunctie (mega32), i wanna see ICR1 hoge byte van Porta en lage byte van PORTB, maar toen ik dit programma uitvoeren iSee lage byte van Porta en highbyte op PORTB!
Whats wrong in mijn programma ??!!!
----------------------------------------------
# include "m32def.inc"
. ORG 0 dollar
RJMP SETUP
. ORG $ C
RJMP TIMER_CAP
. ORG 14 dollar
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 DDRD, 6
SBI 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:
IN R17, ICR1H
IN R18, ICR1L
OUT PORTA, R17
OUT PORTB, R18
RETI
--------------------------------------------
Met vriendelijke groet

 
Hoi,
Als u een Endianness instelling in uw compiler hebt, stel deze in op 'kleine' endian aan de hoge byte te hoog op te pakken en lage byte te lage adres.

Groeten,
Laktronics

 
Hi en bedankt
I dont gebruiken compiler, schreef ik dit programma in de assemblage en dan heb ik samengevoegd met avrstudio.

 
Toegang tot 16-bit register

"Om een 16-bits te schrijven, de Hoge byte moet worden geschreven voordat de Lage byte. Voor een 16-bits
lezen, moet de Lage byte te lezen voor de High byte. "

Probeer het programma na het uitwisselen van de eerste en tweede lijn van TIMER_CAP

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

 
thanks svicent
Ik schreef een code als je code eerste keer en het heeft hetzelfde probleem toot dan ben ik veranderd om dit programma dat u hier ziet, maar het was ook verkeerd, ik bedoel als ik lees high byte eerste en de show op een poort, toont het hoge byte op poort b en als ik lees lage byte eerste en de haven een show op het toont lage byte in de haven b weer!

 

Welcome to EDABoard.com

Sponsor

Back
Top