Software PWM mit Assembler

Gast #1656676
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******************************
Gast #1656693
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.
Gast #1656699
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
Gast #1656733
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
Gast #1656741
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren