Forum: Mikrocontroller und Digitale Elektronik Software PWM mit Assembler


von Andy11 (Gast)


Lesenswert?

ich habe hier einen Timer der hoch und runter zählt, jedoch weis ich 
nicht, mit welchem Befehl ich bsplsweise während er zählt er auf größer 
überprüft und ein bit schaltet
1
;**********************************Header**************************************
2
;Projektname:
3
;Name des Erstellers:
4
;Zuletzt aktualisiert:
5
;
6
;*****************************Initialisierungen********************************
7
.include "m16def.inc" ;Definitionsdatei des Mega16
8
9
;Stack init***********
10
  ldi r16, High(Ramend)
11
  out SPH, r16
12
13
  ldi r16, Low(Ramend)
14
  out SPL, r16
15
16
;*****************Deklarierete Funktionen und Subroutinen**********************
17
18
;*************************Variablendeklarationen*******************************
19
20
;*****************************Ein-Ausgänge*************************************
21
  ldi r16, 255
22
  out DDRB, r16 ;Portb als Ausgabeport
23
24
  ldi r16, 0
25
  out DDRA, r16 ;Porta als Eingabeport
26
  ldi r16, 255
27
  out PORTA, r16 ;Pullups für Eingagsport A aktivieren
28
29
;*****************************Hauptprogramm************************************
30
31
Hauptprogramm:
32
  inc r16
33
  cpi r16, 255
34
  brne Hauptprogramm
35
Zwei:  
36
  dec r16
37
  cpi r16, 0
38
  brne Zwei
39
40
jmp Hauptprogramm
41
42
;***********************Unterprogramme/Funktionen******************************

von Gast 11 (Gast)


Lesenswert?

Soll ich dir jetzt die Assembler-Befehle erklärern???
Die zu kennen ist doch wohl die Voraussetzung fürs Programmieren-
oder verstehe ich da was falsch?????

Wer lesen kann ist im Vorteil.

Erklärung der Assembler-Befehle ist zu finden:

-In der Hilfe vom AVR-Studio,
-Im Assembler-Tutorial
-In verkürzter Form sogar im Datenblatt vom Baustein.

von Andy11 (Gast)


Lesenswert?

>Soll ich dir jetzt die Assembler-Befehle erklärern???
>Die zu kennen ist doch wohl die Voraussetzung fürs Programmieren-
>oder verstehe ich da was falsch?????

ich weiß wo die Hilfe ist und ich bin schon einige Befehle 
durchgegangen, jedoch finde ich keinen Befehl, bei dem man einfach eine 
Zahl vergeleicht ohne ein Breq oder brne und auch ein Bit setzen

von spess53 (Gast)


Lesenswert?

Hi

>ich weiß wo die Hilfe ist und ich bin schon einige Befehle
>durchgegangen, jedoch finde ich keinen Befehl, bei dem man einfach eine
>Zahl vergeleicht ohne ein Breq oder brne und auch ein Bit setzen

AVRs sind Controller mit RISC Architecture (Reduced instruction set). Da 
sind solche Befehle unüblich.

MfG Spess

von Andy11 (Gast)


Lesenswert?

ich weiß wie ich eine bestimmte Zahl abfrage, jdeoch nicht wie ich auf 
>= komme, geht das überhaupt mit andi?
1
;**********************************Header**************************************
2
;Projektname:
3
;Name des Erstellers:
4
;Zuletzt aktualisiert:
5
;
6
;*****************************Initialisierungen********************************
7
.include "m16def.inc" ;Definitionsdatei des Mega16
8
9
;Stack init***********
10
  ldi r16, High(Ramend)
11
  out SPH, r16
12
13
  ldi r16, Low(Ramend)
14
  out SPL, r16
15
16
;*****************Deklarierete Funktionen und Subroutinen**********************
17
18
;*************************Variablendeklarationen*******************************
19
20
;*****************************Ein-Ausgänge*************************************
21
  ldi r16, 255
22
  out DDRB, r16 ;Portb als Ausgabeport
23
24
  ldi r16, 0
25
  out DDRA, r16 ;Porta als Eingabeport
26
  ldi r16, 255
27
  out PORTA, r16 ;Pullups für Eingagsport A aktivieren
28
29
;*****************************Hauptprogramm************************************
30
31
Hauptprogramm:
32
  inc r16
33
  mov r17, r16      ;koppiere r16 in r17
34
  andi r17, 0b10000000  ;wenn r17 = 128 dann r17neu = 128
35
  out PORTB, r17       ;Portb = 128
36
  cpi r16, 255
37
  brne Hauptprogramm
38
Zwei:  
39
  dec r16
40
  mov r17, r16
41
  andi r17, 0b10000000
42
  out PORTB, r17 
43
  cpi r16, 0
44
  brne Zwei
45
46
jmp Hauptprogramm

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.