{"id":11593,"date":"2014-05-12T21:46:57","date_gmt":"2014-05-12T19:46:57","guid":{"rendered":"http:\/\/www.michael-floessel.de\/mfblog\/?p=11593"},"modified":"2019-11-09T10:37:31","modified_gmt":"2019-11-09T09:37:31","slug":"der-pic-12f675-teil-2-status-register","status":"publish","type":"post","link":"https:\/\/www.michael-floessel.de\/mfblog\/der-pic-12f675-teil-2-status-register\/","title":{"rendered":"Der PIC 12F675 Teil 2 \u2013 STATUS Register"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-423\" src=\"http:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2012\/07\/pic_12f675-293x300.jpg\" alt=\"PIC \u00a9 12F675 \" width=\"293\" height=\"300\" srcset=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2012\/07\/pic_12f675-293x300.jpg 293w, https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2012\/07\/pic_12f675.jpg 320w\" sizes=\"auto, (max-width: 293px) 100vw, 293px\" \/>Eines der gr\u00f6\u00dften Probleme beim Programmieren von PIC&#8217;s ist der Umstand, dass man die Funktionen des Innenlebens zumindest grob kennen muss. Immer \u00f6fter bekomme ich Anfragen zu Problemen, die urs\u00e4chlich nicht aus dem eigentlichen Programm, sondern der Einstellung des Controllers an sich kommen. Bei genauerer \u00dcberlegung logisch, wie soll z. B. der A\/D Wandler arbeiten, wenn er gar nicht aktiviert wurde? Ich versuche in diesem (<a title=\"Der PIC 12F675 Teil 1 \u2013 Grunds\u00e4tzliches\" href=\"http:\/\/www.michael-floessel.de\/mfblog\/der-pic-12f675-teil-1-grundsatzliches\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>und dem ersten Teil<\/strong><\/a> und <del>vielleicht<\/del> folgenden) Beitrag mal, das Ganze anhand des 12F675 ein wenig zu entwirren. Vorweg sei gesagt, dass man um das Datenblatt trotzdem nicht herumkommt, zu vieles ist sehr tief verschachtelt oder setzt weitere Kenntnisse voraus, die ich in einem Beitrag hier einfach nicht komplett erfassen kann. Oftmals muss man aber so tief gar nicht graben, vielleicht fehlte beim letzten Versuchsaufbau ja nur ein einziges Bit, damit das Programm l\u00e4uft oder eben der PIC einfach macht, was er soll.<\/p>\n<p>Ich nehme als Beispiel den 12F675, er ist g\u00fcnstig und f\u00fcr die allermeisten Kleinprojekte ausreichend. Dar\u00fcber hinaus, kann man die Kenntnisse auf sehr viele weitere Controller anwenden, Unterschiede liegen hier eher in den Details -&gt; Datenblatt! <img src=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/plugins\/classic-smilies\/img\/icon_wink.gif\" alt=\";-)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Ich werde in diesem Teil die wichtigsten Register ein wenig beschreiben, mal sehen, wie umfangreich dieser und die wahrscheinlich folgenden Beitr\u00e4ge werden. Bestimmte Parameter kann man nicht wirklich gut erkl\u00e4ren, wenn der Leser die elektronischen Funktionen nicht kennt, welche dahinter stehen. Oft hilft einfach experimentieren Gl\u00fccklicherweise sind diese M\u00f6glichkeiten des Mikrocontrollers f\u00fcr die meisten Funktionen nicht unbedingt notwendig, in Standardschaltungen jedenfalls. Auf solch spezielle Funktionen werde ich also nur eingehen, wenn es unumg\u00e4nglich ist. Will sagen: wenn jemand diese Funktionen ben\u00f6tigt, dann wei\u00df er mesit auch, um was es geht <img src=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/plugins\/classic-smilies\/img\/icon_mrgreen.gif\" alt=\":mrgreen:\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Nebenbei wird es sicher wieder Mails geben, in denen typische Dinge wie &#8218;Es geht aber auch anders&#8230;&#8216; und &#8218;&#8230; ganz korrekt w\u00e4re aber&#8230;&#8216; stehen, das ist sicher alles richtig, kenne ich aber so nicht, habe ich noch nicht getestet oder erscheint mir aus irgendeinem Grund f\u00fcr den Artikel unpassend, akzeptiert das bitte. Meine Beitr\u00e4ge sind keine Doktorarbeiten, sie sollen dem Interessierten bei einem kleinen Schritt auf einem langen Weg einfach etwas helfen, schreib ich andauernd, ist mir klar <img src=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/plugins\/classic-smilies\/img\/icon_wink.gif\" alt=\";-)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p><a title=\"Der PIC 12F675 Teil 1 \u2013 Grunds\u00e4tzliches\" href=\"http:\/\/www.michael-floessel.de\/mfblog\/der-pic-12f675-teil-1-grundsatzliches\/\" target=\"_blank\" rel=\"noopener noreferrer\"><em><strong>Link: -&gt; 12F675 Teil 1<\/strong><\/em><\/a><\/p>\n<p>Ich starte in den n\u00e4chsten Beitr\u00e4gen mit den Registern in der Reihenfolge, in der sie auch im Datenblatt aufgef\u00fchrt sind.<\/p>\n<p><strong>Sei noch darauf hingewiesen, dass es i. d. R. 8 Bit pro Register gibt, welche von RECHTS NACH LINKS beginnend mit &#8218;0&#8216; bezeichnet sind!\u00a0<\/strong><\/p>\n<p>Geschrieben sieht dies also so aus:<\/p>\n<p><em>Bit 7 &#8211; Bit 6 &#8211; Bit 5 &#8211; Bit 4 &#8211; Bit 3 &#8211; Bit 2 &#8211; Bit 0<\/em><\/p>\n<p>M\u00f6chte man z. B. das erste Bit in einem Register bearbeiten, dann ist dies im Assembler Bit &#8218;0&#8216;. Mit<\/p>\n<p><em>bsf ADCON,0<\/em><\/p>\n<p>w\u00fcrde zum Beispiel das 1. Bit im Register ADCON auf &#8218;1&#8216; oder &#8218;HIGH&#8216; setzen,<\/p>\n<p><em>00000001<\/em><\/p>\n<p>w\u00e4re also der Inhalt, wenn alle anderen Bits vorher auf &#8218;0&#8216; standen.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p><strong>STATUS\u00a0<\/strong><\/p>\n<p>Im STATUS Register des Controllers kann man haupts\u00e4chlich feststellen, was der PIC gerade erledigt hat bzw. welches Ereignis gerade eingetreten ist. STATUS befindet sich in Bank 0 und Bank 1!<\/p>\n<p><strong>\u00a0Bit 7<\/strong><\/p>\n<p>In diesem PIC nicht relevant<\/p>\n<p><strong>Bit 6<\/strong><\/p>\n<p>In diesem PIC nicht relevant<\/p>\n<p><strong>Bit 5<\/strong><\/p>\n<p>Bankauswahl, dazu kommt noch ein eigener Artikel. Dient dazu, Register in Bank 0 oder Bank 1 auszuw\u00e4hlen. In welcher Bank welches Register zu finden ist, steht im Datenblatt. Beim 12F675 gibt es Bank 0 und 1, in anderen PIC&#8217;s noch weitere. Setzen von Bit 5 (bsf STATUS,5) schaltet in Bank 1. Befindet man sich im Programm in der falschen Bank, kann man auf Register die eben in der anderen liegen nicht zugreifen.<\/p>\n<p><strong>Bit 4<\/strong><\/p>\n<p>Feststellen oder beeinflussen des SLEEP Modus bzw. des Watchdog, muss ich auch in einem eigenen Beitrag bearbeiten.<\/p>\n<p><strong>Bit 3<\/strong><\/p>\n<p>Siehe Bit 4 <img src=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/plugins\/classic-smilies\/img\/icon_smile.gif\" alt=\":-)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p><strong>Bit 2<\/strong><\/p>\n<p>Zeigt an, ob das Ergebnis der letzten Operation &#8218;0&#8216; war. Hat der Controller also z. B. 10 &#8211; 10 = 0 gerechnet, wird dieses Bit \u00a0auf &#8218;1&#8216; gesetzt.<\/p>\n<p><strong>Bit 1<\/strong><\/p>\n<p>Wird &#8218;1&#8216;, wenn ein \u00dcberlauf der unteren 4 Bit der letzten Operation stattgefunden hat. Ich wei\u00df, das klingt jetzt v\u00f6llig Ballaballa, ich dr\u00f6sel&#8217;s sp\u00e4ter noch auf <img src=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/plugins\/classic-smilies\/img\/icon_wink.gif\" alt=\";-)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p><strong>Bit 0<\/strong><\/p>\n<p>Wird ebenfalls &#8218;1&#8216;, wenn ein \u00dcberlauf stattgefunden hat, hier aber auf die kompletten 8 Bit bezogen. Durch seine 8 Bit, kann der 12F675 von 0-255 z\u00e4hlen. Addiert man nun zu 255 +1, ergibt das nicht 256, der Z\u00e4hler &#8222;springt um&#8220;, er steht auf &#8218;0&#8216;, mehr als 255 gehen eben nicht. Um festzustellen, ob dies geschehen ist, kann man STATUS,0 abfragen. Das gleiche gilt f\u00fcr oben genanntes Bit 1, nur eben auf die unteren 4 Bit bezogen. In der Praxis kann man beispielsweise ein Register immer um +1 erh\u00f6hen, wenn eine Ereignis eingetreten ist und abfragen, ob es einen \u00dcberlauf gab. Dieser \u00dcberlauf k\u00f6nnte dann eine Signal-LED einschalten oder einen anderen Programmteil starten. L\u00e4dt man dieses Register schon vorher mit einem bestimmten Wert, k\u00f6nnen auch weniger als 255 Schritte gew\u00e4hlt werden, der \u00dcberlauf erfolgt dann eben eher. Alternativ oder erg\u00e4nzend rechnet man nicht +1 sondern +2 oder +11 oder was auch immer, die M\u00f6glichkeiten sind zahlreich.<\/p>\n<p>Etwas un\u00fcbersichtlicher wird es bei Subtraktionen, da verl\u00e4uft das Spiel umgekehrt. Wird also beim Minusrechnen die 0 unterschritten (Beispiel:1-2 dann = 255), ist das Bit NICHT gesetzt, in allen anderen F\u00e4llen ja.<\/p>\n<p>Vereinfacht betrachtet ist dies der Sinn bzw. die Aufgabe des STATUS-Registers mit den Funktionen, die f\u00fcr einfachere Anwendungen ben\u00f6tigt werden.<\/p>\n<p><em>Tipp zu ersten Programmier\u00fcbungen:<\/em><\/p>\n<p>4 LEDs an GP 0 &#8211; 3 des PIC anschlie\u00dfen und die unteren 4 Bit des STATUS-Registers nach Operationen in GPIO kopieren und (mit Pause) anzeigen lassen. So kann man gut pr\u00fcfen, was wirklich im Register erschienen ist. F\u00fcr reine &#8222;Trocken\u00fcbungen&#8220; eignet sich hier auch der MPLAB eigene Simulator gut.<\/p>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n<!-- relpost-thumb-wrapper --><div class=\"relpost-thumb-wrapper\"><!-- filter-class --><div class=\"relpost-thumb-container\"><style>.relpost-block-single-image, .relpost-post-image { margin-bottom: 10px; }<\/style><h3>Related posts:<\/h3><div style=\"clear: both\"><\/div><div style=\"clear: both\"><\/div><!-- relpost-block-container --><div class=\"relpost-block-container relpost-block-column-layout\" style=\"--relposth-columns: 4;--relposth-columns_t: 3; --relposth-columns_m: 2\"><a href=\"https:\/\/www.michael-floessel.de\/mfblog\/projekt-kfz-werkstatt-in-187\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><div class=\"relpost-block-single-image rpt-lazyload\" aria-label=\"KFZ-Wekstatt www.michael-floessel.de\" role=\"img\" data-bg=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2012\/08\/lichteffekt_werkstatt_1_87_mechaniker_led_an-1000x288.jpg\" style=\"background: transparent no-repeat scroll 0% 0%; width: 1000px; height: 288px; aspect-ratio: 16\/9;\"><\/div><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: rgb(237,201,23);\"><h4 class=\"relpost_card_title\">Projekt KFZ Werkstatt in 1:87<\/h4><\/div><\/div><\/a><a href=\"https:\/\/www.michael-floessel.de\/mfblog\/der-3-phototranistor\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><div class=\"relpost-block-single-image rpt-lazyload\" aria-hidden=\"true\" role=\"img\" data-bg=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2026\/04\/the-joker-pic-4-michael-floessel.de_.jpg\" style=\"background: transparent no-repeat scroll 0% 0%; width: 1000px; height: 288px; aspect-ratio: 16\/9;\"><\/div><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: rgb(237,201,23);\"><h4 class=\"relpost_card_title\">Der 3. Phototransistor<\/h4><\/div><\/div><\/a><a href=\"https:\/\/www.michael-floessel.de\/mfblog\/von-festplatten-mbr-gpt-ntfs-und-partitionen-groesser-2-gigabyte\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><div class=\"relpost-block-single-image rpt-lazyload\" aria-label=\"USB HDD 3.5\" role=\"img\" data-bg=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2020\/05\/usb-30-hdd-titel-1000x288.jpg\" style=\"background: transparent no-repeat scroll 0% 0%; width: 1000px; height: 288px; aspect-ratio: 16\/9;\"><\/div><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: rgb(237,201,23);\"><h4 class=\"relpost_card_title\">Von Festplatten, MBR, GPT, NTFS und Partitionen gr\u00f6\u00dfer 2 Gigabyte<\/h4><\/div><\/div><\/a><a href=\"https:\/\/www.michael-floessel.de\/mfblog\/ledblinker-benachrichtigungen-androidmag-de\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><div class=\"relpost-block-single-image rpt-lazyload\" aria-hidden=\"true\" role=\"img\" data-bg=\"https:\/\/www.michael-floessel.de\/mfblog\/wp-content\/uploads\/2013\/08\/Xperia\u2122_Screenshot-1000x288.jpg\" style=\"background: transparent no-repeat scroll 0% 0%; width: 1000px; height: 288px; aspect-ratio: 16\/9;\"><\/div><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: rgb(237,201,23);\"><h4 class=\"relpost_card_title\">LEDBlinker Benachrichtigungen | Androidmag.de<\/h4><\/div><\/div><\/a><\/div><!-- close relpost-block-container --><div style=\"clear: both\"><\/div><\/div><!-- close filter class --><\/div><!-- close relpost-thumb-wrapper -->","protected":false},"excerpt":{"rendered":"<p>Eines der gr\u00f6\u00dften Probleme beim Programmieren von PIC&#8217;s ist der Umstand, dass man die Funktionen des Innenlebens zumindest grob kennen muss. Immer \u00f6fter bekomme ich Anfragen zu Problemen, die urs\u00e4chlich nicht aus dem eigentlichen Programm, sondern der Einstellung des Controllers &hellip; <a href=\"https:\/\/www.michael-floessel.de\/mfblog\/der-pic-12f675-teil-2-status-register\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":11600,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4,2269,18,19],"tags":[29,1588,2262,1762,1763,203,2261,2260,2259,389,2263],"class_list":["post-11593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elektronik","category-pic-12f675","category-programmierung","category-tipps-tricks","tag-12f675","tag-bit","tag-carry","tag-datasheet","tag-datenblatt","tag-funktionen","tag-gpio","tag-port","tag-register","tag-status","tag-zero"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/posts\/11593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/comments?post=11593"}],"version-history":[{"count":0,"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/posts\/11593\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/media\/11600"}],"wp:attachment":[{"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/media?parent=11593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/categories?post=11593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.michael-floessel.de\/mfblog\/wp-json\/wp\/v2\/tags?post=11593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}