Gefunden für adiw - Zum Elektronik Forum





1 - AVR-Assemblercode von Atmega88 auf -8 umstricken -- AVR-Assemblercode von Atmega88 auf -8 umstricken




Ersatzteile bestellen
  Ich wollte eigentlich den Code in einem Fenster posten, aber dann trollte mich das Forum mit nem komplett leeren Post...

Code : Draw:
push Zl
push Zh

Dr00:
lpm r2,Z+
lpm r3,Z+
lpm r21,Z+

mul r2,prSize
mov r2,r1
add r2,px
mul r3,prSize
mov r3,r1
add r3,py

MoveTo r2,r3
cpi r21,end
breq Dend
cpi r21,off
breq Loff

Laser on
rjmp Dr00
Loff:
Laser off
rjmp Dr00

D...
2 - Platinen für Selbstbau-Projekte -- Platinen für Selbstbau-Projekte
Hier die Assemblerfile und Schaltbild, sowie HEX.


Code :
.nolist
.include"tn26def.inc"
.list



.def ar0 = r16



init:
ldi ar0, RAMEND
out SP, ar0
ldi ar0, 0xFF
out DDRA, ar0

ldi ar0, 0x00
out DDRB, ar0

ldi ar0, 0xAA
out PORTA, ar0


loop:
ldi zh, high(AMPEL*2)
ldi zl, low(AMPEL*2)
in ar0, PINB
cpi ar0, 0b00000000
breq ledout

ldi zh, high(PAUSE*2)
ldi zl, low(PAUSE*2)
cpi ar0, 0b00000001
b...








3 - Rechteckgenerator mit ATmega8 \"verschluckt sich\" -- Rechteckgenerator mit ATmega8 \verschluckt sich\


Zitat : Das ist nicht grade resourcenschonend
Scheint zu stimmen.
Hab mal das Hex-File durch den Disassembler gejagt, raus kommt eine ganze Menge Code...


Zitat : Evtl. schaltet der Basic-Compiler für solche Teile, in der eben mit viel Aufwand gerechnet wird, die Interrupts global ab (cli).
+00000092: 94F8 CLI Global Interrupt Disable
Ob das jetzt der Fehler ist weiss ich nicht, dazu müsste man den Code mal genauer betrachten.

4 - delay mit C bei AVR-Programmierung -- delay mit C bei AVR-Programmierung
Der Compiler erzeugt mir aus dem Teil

for(i=0; i<=100; i++)
{}

das hier:
+0000006D: 91800100 LDS R24,0x0100 Load direct from data space
+0000006F: 91900101 LDS R25,0x0101 Load direct from data space
+00000071: 3685 CPI R24,0x65 Compare with immediate
+00000072: 0591 CPC R25,R1 Compare with carry
+00000073: F450 BRCC PC+0x0B Branch if carry cleared
+00000074: 91800100 LDS R24,0x0100 Load direct from data space
+00000076: 91900101 LDS R25,0x0101 Load direct from data space
+00000078: 9601 ADIW R24,0x01 Add immediate to word
+00000079: 93900101 STS 0x0101,R25 Store direct to data space
+0000007B: 93800100 STS 0x0100,R24 Store direct to data space
+0000007D: CFEF RJMP PC-0x0010 Relative jump

Du kannst also jetzt, wenn du Lust dazu hast genau rausfinden, wie lange die CPU diesen Teil wiederholt. Dann kannst du die Formel oben auch hier anwenden, um deine Variable i mit dem richtigen Wert zu laden.


PS: Sry, ich bin grad etwas neben mir, meine Formulierunge...
5 - Mein Lauflicht :) -- Mein Lauflicht :)

start:
ldi r17, 12
ldi r16, 0
.def lpm_reg = r0
Matrix:
.db 0b10000001
.db 0b01000010
.db 0b00100100
.db 0b00011000
.db 0b00100100
.db 0b01000010
.db 0b10000001

ldi r16, 0xFF ; Port B auf
out DDRB, r16 ; Ausgang setzen

ldi ZH,high(2*Matrix)
ldi ZL,low(2*Matrix)

weiter:
lpm
out PORTB, r0 ; auf Port ausgeben
adiw ZL,1
inc r16
cp r16,r17
brne weiter
ldi ZH,high(2*Matrix)
ldi ZL,low(2*Matrix)
ldi r16,0
rjmp weiter ; dann zum Hauptprogramm zurückspringen
...
6 - welcher Atmel für Torzähler? -- welcher Atmel für Torzähler?
ok so einfach ist das drucken an sich wohl doch nicht...
was fehlt diesem Code noch, damit der drucker druckt?
weil bisher macht er genau nix

Code : .include "4433def.inc"

.def temp = R16

ldi R16, RAMEND
out SPL, R16 ; Stackpointer initialisieren

sbi UCSRB,TXEN ; UART TX aktivieren
ldi temp,4000000/(9600*16)-1 ; Baudrate 9600 einstellen
out UBRR,temp

start:
ldi ZL, LOW(text*2) ; Adresse des ...
7 - ATmega8515 und Watchdog -- ATmega8515 und Watchdog
Ich habe eben noch einmal den Beispielcode von AVR-Beginners angepasst und ausprobiert.

..dasselbe Problem... (die LED bleibt an, anstatt zu blinken)

Code :
.include "C:\Programme\Atmel\AVR Tools\AvrAssembler\Appnotes\m8515def.inc"


.org 0x0000
rjmp reset

reset:
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high (RAMEND)
out SPH, r16

sbi DDRE, 1

ldi r16, 0b00001110
out WDTCR, r16

rcall delay_05
sbi PortE, 1
loop:
rjmp loop

delay_05:
ldi r16, 8
...
8 - Timer im Atmel - wie benutzen? -- Timer im Atmel - wie benutzen?

.include m8def.inc ;Pfad zur Include-Datei ggf. anpassen

.def temp = r16 ;braucht man immer

.org 0000

rjmp reset ;RESET
RETI ; External Interrupt0 Vector Address
RETI ; External Interrupt1 Vector Address
RETI ; Output Compare2 Interrupt Vector Address
RETI ; Overflow2 Interrupt Vector Address
RETI ; Input Capture1 Interrupt Vector Address
RETI ; Output Compare1A Interrupt Vector Address
RETI ; Output Compare1B Interrupt Vector Address
rjmp check ; Overflow1 Interrupt Vector Address
RETI ; Overflow0 Interrupt Vector Address
RETI ; SPI Interrupt Vector Address
RETI ; USART Receive Complete Interrupt Vector Address
RETI ; USART Data Register Empty Interrupt Vector Address
RETI ; USART Transmit Complete Interrupt Vector Address
RETI ; ADC Interrupt Vector Address
RETI ; EEPROM Interrupt Vector Address
RETI ; Analog Comparator Interrupt Vector Address
RETI ; Irq. vector address for Two-Wire Interface
RETI ; SPM complete Interrupt Vector Address
RETI ; SPM complete Interrupt Vector Address

reset:

;Stackpointer initialisieren
ldi temp,low(RAMEND)
out SPL, temp
ldi temp,high(RAMEND)
out S...

Nicht gefunden ? Eventuell gibt es im Elektroforum Transistornet.de für Adiw eine Antwort


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 7 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 192521220   Heute : 19939    Gestern : 10744    Online : 541        7.8.2026    22:32
26 Besucher in den letzten 60 Sekunden        alle 2.31 Sekunden ein neuer Besucher ---- logout ----su ---- logout ----
xcvb ycvb
0.0291287899017