Gast
#3660496
Hallo zusammen, ich beschäftige mich seit kurzem mit PIC-Mikrocontrollern, hauptsächlich mit dem PIC16F88. Als Programmiersoftware nutze ich den CCS-C-Compiler und gebrannt wird mit dem ICD-U64 von CCS. Mein bisheriger Wissensstand beschränkt sich weitgehend auf das Ansteuern von LEDs und das Erfassen von Tastersignalen. Nun möchte ich gerne den nächsten kleinen Schritt machen und eine 7-Segment-Anzeige per Schieberegister (SN74HC165) ansteuern. Mein Schaltplan (im Anhang) sollte soweit richtig sein, allerdings habe ich Probleme mit der Programmierung. Dem Datenblatt des Schieberegisters (Auszug im Anhang) entnehme ich, dass der auf SER anliegende Wert (high oder low bzw. 1 oder 0) auf den Platz A übernommen wird (und der Wert von A auf B weitergereicht wird etc.), wenn SH/LD high ist, CLK INH low ist und ein positiver Impuls auf CLK erfolgt. Um die gespeicherten Werte dann auf die jeweiligen Ausgänge des Registers zu legen, muss scheinbar SH/LD auf low geschaltet werden. Sehe ich das soweit richtig? Nun zu meinem Code: Auf die Resultate meiner Programmierversuche möchte ich erstmal nur ungerne genauer eingehen, da dies hier vielleicht zu weit führen würde. Grundsätzlich habe ich den Code so realisiert: //Ausgangszustände festlegen output_high(pin_a1); //SH/LD high output_low(pin_b5); //CLK low output_high(pin_b4); //SER erstmal high, damit was angezeigt wird output_low(pin_a3); //CLK INH low //Die ersten beiden Register mit 1 füllen //B output_high(pin_b5); delay_ms(1); output_low(pin_b5); delay_ms(1); //A output_high(pin_b5); delay_ms(1); output_low(pin_b5); delay_ms(1); //Werte auf Ausgänge legen output_low(pin_a1); //SH/LD low Resultat dieses Codes ist gar keine Anzeige. Da in dem Schaltbild im Datenblatt der Eingang SH/LD negiert ist (oder nicht?), habe ich SH/LD auch mal umgekehrt betrieben, also am Anfang auf low, später auf high. Dann leuchtet die Anzeige d. Nach endlosen Selbstversuchen brauche ich jetzt dringend Hilfe, da ich einfach nicht weiterkommen. Ist meine Art, einen positiven Impuls auf CLK zu erzeugen überhaupt richtig(low auf high - eine Wartezeit - high auf low)? Vielen Dank im Voraus!

