MENÜ English Ukrainian Russisch Startseite

Kostenlose technische Bibliothek für Bastler und Profis Kostenlose technische Bibliothek


ENZYKLOPÄDIE DER FUNKELEKTRONIK UND ELEKTROTECHNIK
Kostenlose Bibliothek / Schemata von radioelektronischen und elektrischen Geräten

Anfänger-Programmierer von PIC-Mikrocontrollern. Enzyklopädie der Funkelektronik und Elektrotechnik

Kostenlose technische Bibliothek

Lexikon der Funkelektronik und Elektrotechnik / Anfänger Funkamateur

Kommentare zum Artikel Kommentare zum Artikel

[Bei der Verarbeitung dieser Anweisung ist ein Fehler aufgetreten.]

Basierend auf meinen eigenen Erfahrungen mit dem Studium der Mikrocontroller-Programmierung werde ich versuchen, einige praktische Ratschläge zum Schreiben von Programmen in Assembler zu geben. Alle unten aufgeführten Programmierbeispiele beziehen sich auf Pic-Controller der Mittelklasse-Microchip-Familie, die aufgrund ihrer relativ einfachen Architektur und des unkomplizierten Assembler-Befehlssystems am besten für den Einstieg in die Beherrschung geeignet sind.

Die vorgeschlagenen Programme können in Form von vorgefertigten Makros (vollständigen Unterprogrammen) verwendet werden. Sie sind nicht an eine bestimmte Steuerung gebunden, daher sollten Sie bei der Anwendung die Daten aus den Datenblättern berücksichtigen.

1.Verwendung von TMR0-Timer-Überlauf-Interrupts (RTCC)

Nehmen wir die Taktfrequenz – Fclock. = 4,096 MHz (Standardquarz). Dann beträgt die Zykluszeit tc = 1 / Ftact. * 4 = 0,97656 µs

INI_TMR ; Initialisierung des Interrupt-Modus von RTCC
bsf STATUS,RP0 ; Wählen Sie Bank 1
movlw b'00000100'
movwf OPTION; Vorteiler für RTCC 1:32
bcf STATUS,RP0 ; Bank 0
movlw b'10100000'
movwf INTCON ; RTCC-Interrupt aktiviert
movlw.96; Laden Sie die vorläufige Nummer 96 in RTCC
movwf TMR0

Holen Sie sich die Unterbrechungszeit:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5 µs = 000 ms

Wenn Sie nun in Ihr beliebiges Programm eine Endlosschleife einführen (die sogenannte Interrupt-Warteschleife) und das Ende des Programms in diese Schleife überführen, erhalten wir einen Zeitbezug von 5 ms. Und nach der Unterbrechung das Programm kehrt zu der durch den Interrupt-Vektor angegebenen Adresse zurück (normalerweise 04h). Wofür dies verwendet werden kann – schauen Sie weiter.

Also:

;
Org 0
START ; Beginn der Programmausführung danach
; einschalten
org 04h; und dies ist die Adresse des Interrupt-Vektors, bei dem
hauptsächlich ; Das Hauptprogramm wird ausgeführt
;
START ; Hier erfolgt üblicherweise die obligatorische Initialisierung.
INI_TMR ; Zentralisierung von Ports, Modi, Registern usw.
INI_PORTS
Schleife
gehe zur Schleife; und das ist ein endloser Kreislauf
;------------------------------------------------- -

Haupt-
; Als nächstes kommt der Hauptteil des Hauptprogramms,
; in dem es notwendig ist, ein Interrupt-Service-Programm von RTCC zu erstellen,
; aufgerufen durch den CALL-Befehl:

ServTMR
btfsc INTCON,RTIF ; Überprüfen Sie das Interrupt-Flag von RTCC und
Aufruf SET_TMR ; Wenn „Ja“, dann initialisieren Sie TMR0 erneut
zurückkehren ; Wenn „nein“ – kehren Sie zu der Stelle zurück, an der ServTMR aufgerufen wurde
; Hauptprogramm
;
SET_TMR movlw .96
movwf TMR0 ; Laden Sie die Nummer 96 erneut
bcf INTCON,RTIF ; Setzen Sie das Trigger-Flag zurück
retfie ; Rückkehr mit Interrupt-Aktivierung in ServTMR und
; dann ins Hauptprogramm

Ein Beispiel für die Verwendung eines Interrupts von RTCC zum Empfang eines zweiten Impulses an einem der Ausgänge, beispielsweise Port B – RB0: Wir verwenden das Rsec-Register, das zuvor im Adressfeld der Arbeitsregister deklariert werden muss.

Somit ändert sich am Ausgang des Ports RB0 der Signalpegel jede Sekunde von „0“ auf „1“.

In Controller-Registern liegen Informationen normalerweise in binärer Form (im Binärcode) vor. Allerdings ist es oft notwendig, Informationen in binärer Dezimalform (BCD-Code) zu erhalten, beispielsweise um einen Sieben-Segment-Indikator zu steuern.

Schauen wir uns Beispiele für die Konvertierung des Binärcodes b2 in den binären Dezimalcode BCD und umgekehrt an.

In ein 8-Bit-Register können Sie eine Zahl von 0 bis 255 (von b'00000000' bis b'11111111') im Binärcode schreiben. Lassen Sie uns die Binärzahl in drei Ziffern des binären Dezimalcodes umwandeln – „Hunderter“, „Zehner“ und „Einer“. Dazu nutzen wir folgende Register, die vorab im Adressfeld der Arbeitsregister deklariert werden müssen:

Rbin - Register zum Speichern einer Zahl im Binärcode b2
Rhan – Hunderterregister des BCD-Codes
Rdec - Register "Zehner" des BCD-Codes
Rsim – BCD-Code „eins“ Register

Wir führen Transformationen durch, indem wir die Zahlen 100 und dann 10 subtrahieren und dabei die Anzahl der positiven Subtraktionen zählen.

FORM_1S ; in jedem Zyklus und dauert aufgrund des RTCC-Interrupts an
incf Rsec,w ; 5 MS, erhöhen Sie das Rsec-Register um 1 auf die Zahl 200
xorlw .200 ; (5 ms * 200 = 1 Sek.)
btfsc STATUS,z
gehe zu OUT_PORT ; bei Rsec = 200 Flag z = '1' und Übergang zur Steuerung
; RB0-Pin von Port B
zurückkehren ; Rückkehr zum Hauptprogramm
;
OUT_PORT btfss PORTB,0 ; Überprüfen Sie den Status von Pin RB0
gehe zu OUT_ON ; wenn RB0 ='0', dann auf '1' setzen
bcf PORTB,0 ; andernfalls auf „0“ setzen
gehe zur Hauptseite; Rückkehr zum Hauptprogramm
;
OUT_ON bsf PORTB,0 ; setze RB0 = '1'
Gehe zur Hauptseite

CON_100 movlw .100 ; Subtrahiere 100 von Rbin und überprüfe das
subwf Rbin,w ; Das Ergebnis ist nicht negativ. Flag 'c' = 1, wenn
btfss STATUS,c ; Ergebnis > oder = 0 und 'c' = 0, wenn < 0
Gehe zu CON_10
incf Rhan,f ; Zählen der Zahl „Hunderter“
movwf Rbin ; Das Ergebnis der Subtraktion wird zunächst in einem Register gespeichert
gehe zu CON_100 ;battery und kehre erst dann zu Rbin zurück
; um den Rest nicht zu verlieren, wenn er negativ ist
; Ergebnis der Subtraktion.
CON_10 movlw .10 ; Wir definieren „Zehner“ auf die gleiche Weise
subwf Rbin,w
btfss STATUS,c
gehe zu end_con
incf Rdec,f
movwf Rbin
gehe zu CON_10;
end_con
movf Rbin,w
movwf Rsim ; Geben Sie nach den Subtraktionen den Rest in „Einheiten“ ein.
;Programmausführung fortsetzen

Umgekehrte Konvertierung des BCD-Codes in b2. Wir verwenden die gleichen Register Rhan, Rdec, Rsim, in denen sich die Zahl im BCD-Code befindet, die Register RbinH – die höchstwertige Ziffer und RbinL – die niedrigstwertige Ziffer für Zahlen (> 255) im B2-Code und die Hilfsregister RM1 – „ Multiplikand“, RM2 – „Multiplikator“. Um BCD in b2 umzuwandeln, müssen Sie „Hunderter“ mit 100, „Zehner“ mit 10 multiplizieren und alles mit „Einern“ addieren und gegebenenfalls die Übertragung auf die höchstwertige Ziffer berücksichtigen . Zur Multiplikation verwenden wir die Additionsoperation.

B2X_100 movlw .99 ; „Hunderter“ umrechnen
movwf RM2 ; Multiplikator = Anzahl der Additionen (100) minus eins
movf Rhan,w
movwf RM1 ; Multiplikand = „Hunderter“
loopX100 addwf RM1,w btfsc STASTUS,c ; Überprüfung der Übertragung auf die höchstwertige Ziffer
incf RbinH,f ; wenn es eine Überweisung gibt
decfsz RM2,f ; Steuern Sie die Anzahl der Ergänzungen
Gehe zu SchleifeX100
movwf RbinL ; Das Ergebnis der Addition wird in das Register ml eingetragen. Kategorie
;
B2X_10 movlw .9 ; „Zehner“-Umrechnung
movwf RM2 ; Multiplikator = Anzahl der Additionen (10) minus eins
movf Rdec,w
movwf RM1 ; Multiplikand = „Zehner“
loopX10 addwf RM1,w ; hier kann die Übertragung nicht überprüft werden, da Ergebnis
decfsz RM2,f ; immer < 255
Gehe zu SchleifeX10
addwf RbinL,f ; Addiere das Ergebnis der „Zehner“-Umrechnung
btfsc STATUS,c ; unter Berücksichtigung der möglichen Verschleppung in den Einleitungen
inkl
RbinH,f
movf Rsim,w
addwf Rbin,f ; Hinzufügen von „Einheiten“ unter Berücksichtigung einer möglichen Übertragung
btfsc STATUS,c
incf RbinH,f

Ende der Transformationen und weitere Umsetzung des Programms. In den Registern RbinL und RbinH wurde im Code b16 eine 2-Bit-Zahl empfangen.

Um die arithmetische Divisionsoperation durchzuführen, wird analog zur oben diskutierten Multiplikation die Subtraktionsoperation verwendet. Nehmen wir an, wir müssen eine Zahl aus den Registern RHsum (hohe Ordnung) und RLsum (niedrige Ordnung) durch einen Teiler (nehmen wir einen Teiler, der nicht > 255 ist) im Rdel-Register dividieren.

Das Ergebnis geben wir in die Register RHrez und RLrez (hohe bzw. niedrige Ziffern) ein:

OP_DEL
movf Rdel,w
subwf Rlsum,w
btfss STATUS,c ; Lassen Sie uns prüfen, ob das Ergebnis negativ ist.
gehe zu DEF_carry ; wenn „ja“, dann führen wir ein Darlehen aus Art. aus. Kategorie
incf RLrez,f ; Zählen Sie die Anzahl der Subtraktionen unter Berücksichtigung
btfsc STATUS,c ; mögliche Versetzung in den höheren Dienstgrad
incf RHrez,f
movwf RLsum ; Wir stellen den Rest wieder her, um nicht zu verlieren
gehe zu OP_DEL ; wenn das Subtraktionsergebnis negativ ist
;
DEF_carry
movlw 0h
xorwf RHsum,w ; Sind alle vom Senior- zum Junior-Rang aufgestiegen?
btfsc STATUS,z ; wenn „ja“, d.h. RHdel = 0 und in OP_DEL neg-
gehe zu OUT_ DEL ; tsat. Ergebnis - Ende der Division und Ausgang
decf RHsum,f ; wenn „nein“ – ein Darlehen aus der Senior-Kategorie und Pro-
incf RLrez,f ; Lass uns weitermachen
btfsc STATUS,c ; Überprüfung der Notwendigkeit einer Übertragung auf die Standardziffer
incf RHrez,f
Gehe zu OP_DEL

Autor: Vladimir D., degvv@mail.ru; Veröffentlichung: cxem.net

Siehe andere Artikel Abschnitt Anfänger Funkamateur.

Lesen und Schreiben nützlich Kommentare zu diesem Artikel.

<< Zurück

Neueste Nachrichten aus Wissenschaft und Technik, neue Elektronik:

Kunstleder zur Touch-Emulation 15.04.2024

In einer modernen Technologiewelt, in der Distanz immer alltäglicher wird, ist es wichtig, die Verbindung und das Gefühl der Nähe aufrechtzuerhalten. Jüngste Entwicklungen bei künstlicher Haut durch deutsche Wissenschaftler der Universität des Saarlandes läuten eine neue Ära der virtuellen Interaktionen ein. Deutsche Forscher der Universität des Saarlandes haben ultradünne Folien entwickelt, die das Tastgefühl über eine Distanz übertragen können. Diese Spitzentechnologie bietet neue Möglichkeiten der virtuellen Kommunikation, insbesondere für diejenigen, die weit von ihren Lieben entfernt sind. Die von den Forschern entwickelten ultradünnen, nur 50 Mikrometer dicken Folien lassen sich in Textilien integrieren und wie eine zweite Haut tragen. Diese Folien fungieren als Sensoren, die taktile Signale von Mama oder Papa erkennen, und als Aktoren, die diese Bewegungen an das Baby weiterleiten. Durch die Berührung des Stoffes durch die Eltern werden Sensoren aktiviert, die auf Druck reagieren und den ultradünnen Film verformen. Das ... >>

Petgugu Global Katzenstreu 15.04.2024

Die Pflege von Haustieren kann oft eine Herausforderung sein, insbesondere wenn es darum geht, Ihr Zuhause sauber zu halten. Das Startup Petgugu Global hat eine neue interessante Lösung vorgestellt, die Katzenbesitzern das Leben erleichtert und ihnen hilft, ihr Zuhause perfekt sauber und ordentlich zu halten. Das Startup Petgugu Global hat eine einzigartige Katzentoilette vorgestellt, die den Kot automatisch ausspülen kann und so Ihr Zuhause sauber und frisch hält. Dieses innovative Gerät ist mit verschiedenen intelligenten Sensoren ausgestattet, die die Toilettenaktivität Ihres Haustieres überwachen und nach dem Gebrauch eine automatische Reinigung aktivieren. Das Gerät wird an die Kanalisation angeschlossen und sorgt für eine effiziente Abfallentsorgung, ohne dass der Eigentümer eingreifen muss. Darüber hinaus verfügt die Toilette über einen großen spülbaren Stauraum, was sie ideal für Haushalte mit mehreren Katzen macht. Die Petgugu-Katzentoilettenschüssel ist für die Verwendung mit wasserlöslicher Streu konzipiert und bietet eine Reihe zusätzlicher ... >>

Die Attraktivität fürsorglicher Männer 14.04.2024

Das Klischee, dass Frauen „böse Jungs“ bevorzugen, ist schon lange weit verbreitet. Jüngste Untersuchungen britischer Wissenschaftler der Monash University bieten jedoch eine neue Perspektive zu diesem Thema. Sie untersuchten, wie Frauen auf die emotionale Verantwortung und Hilfsbereitschaft von Männern reagierten. Die Ergebnisse der Studie könnten unser Verständnis darüber verändern, was Männer für Frauen attraktiv macht. Eine von Wissenschaftlern der Monash University durchgeführte Studie führt zu neuen Erkenntnissen über die Attraktivität von Männern für Frauen. Im Experiment wurden Frauen Fotos von Männern mit kurzen Geschichten über deren Verhalten in verschiedenen Situationen gezeigt, darunter auch über ihre Reaktion auf eine Begegnung mit einem Obdachlosen. Einige der Männer ignorierten den Obdachlosen, während andere ihm halfen, indem sie ihm beispielsweise Essen kauften. Eine Studie ergab, dass Männer, die Empathie und Freundlichkeit zeigten, für Frauen attraktiver waren als Männer, die Empathie und Freundlichkeit zeigten. ... >>

Zufällige Neuigkeiten aus dem Archiv

GeForce GTX 1650 Low-Profile-Beschleuniger 23.08.2019

ASUS hat zwei neue Grafikbeschleuniger der GeForce GTX 1650-Serie angekündigt – die Lösungen GTX1650-O4G-LP-BRK und GTX1650-4G-LP-BRK.

Die Grafikkarten basieren auf der NVIDIA-Turing-Architektur. Die Hauptmerkmale der GeForce GTX 1650-Lösungen sind 896 CUDA-Kerne und 4 GB GDDR5-Speicher mit 128-Bit-Bus (effektive Frequenz - 8000 MHz). Die Basisfrequenz des Chipkerns beträgt 1485 MHz, die Boost-Frequenz 1665 MHz.

Beide ASUS-Neuheiten erhielten ein Low-Profile-Design: Die Höhe beträgt nur 41 mm. Dies ermöglicht den Einsatz von Beschleunigern in kompakten Computern, beispielsweise in Home-Multimedia-Centern.

Die Karten können im Gaming-Modus und im OC-Modus betrieben werden. Beim Modell GTX1650-4G-LP-BRK entsprechen Base- und Boosted-Core-Takt im ersten Fall den Referenzwerten, im zweiten steigen sie auf 1515 MHz und 1695 MHz an.

Die Modifikation GTX1650-O4G-LP-BRK arbeitet im Gaming-Modus mit Frequenzen von 1485/1710 MHz, im OC-Modus mit Frequenzen von 1515/1740 MHz.

Die Beschleuniger sind mit einem Dual-Slot-Kühler mit zwei Lüftern ausgestattet. Letztere sind nach dem IP5X-Standard vor Staub geschützt, was für eine erhöhte Zuverlässigkeit sorgt.

Zur Bildausgabe stehen je eine DVI-D-, HDMI 2.0b- und DisplayPort 1.4-Schnittstelle zur Verfügung. Kartenabmessungen - 182 x 69 x 41 mm.

Weitere interessante Neuigkeiten:

▪ Warum Männer nicht gerne zum Arzt gehen

▪ Wer ist schmackhafter für eine Mücke

▪ Kohlenstofftransistoren auf DNA-Strängen

▪ Der Anhänger schützt vor Kriminellen

▪ Der größte Chip der Welt

News-Feed von Wissenschaft und Technologie, neue Elektronik

 

Interessante Materialien der Freien Technischen Bibliothek:

▪ Abschnitt der Website Für diejenigen, die gerne reisen - Tipps für Touristen. Artikelauswahl

▪ Artikel von Konfuzius. Berühmte Aphorismen

▪ Artikel Welche Wirbellosen gelten als die intelligentesten? Ausführliche Antwort

▪ Gastgeberin Artikel. Jobbeschreibung

▪ Artikel Zelluloid-Flaschenlack. Einfache Rezepte und Tipps

▪ Artikel Zenerdiode als Vorschaltgerät. Enzyklopädie der Funkelektronik und Elektrotechnik

Hinterlasse deinen Kommentar zu diesem Artikel:

Name:


E-Mail optional):


Kommentar:





Alle Sprachen dieser Seite

Startseite | Bibliothek | Artikel | Sitemap | Site-Überprüfungen

www.diagramm.com.ua

www.diagramm.com.ua
2000-2024