Hallo Forengänger !
Eigendlich benutze ich ja ATmegas und ATTinys..
Aber...Ich habe noch einige 8051 Chips bzw. deren Derivate zu liegen. Da
wollte ich ein paar kleine Anwendungen mit machen..eine LCD Uhr solte
bei herrauskommen und vielleicht noch ein paar andere nützliche(?)
Dinge.
Sollte sich hier unter uns wer befinden, der auch damit arbeitet,
experimentiert,programmiert etc. würde ich über eine kleine Hilfe sehr
freuen...
Ich kann die Programme in C, ASM schreiben, kompilieren und auch auf den
Chip flashen, nur habe ich keinen Erfolg das praktisch was dabei zu
sehen ist, eine einfache Blinkschaltung ZBsp.
Code:
// ------------- READS51 generated header --------------
// module : C:\µC8051\ledblink2\led.c
// created : 21:38:21, Thursday, March 20, 2014
// -----------------------------------------------------
#include <sfr51.h>
#ifndef F_CPU
#define F_CPU 12000000UF
#endif
//delay function
void msdelay(unsigned int value){
unsigned int x,y;
for(x=0;x<value;x++);
for(y=0;y<1275;y++);
}
void main(){
int i=0;
P2=0x00; //all pin of PORT2 declared as output
//infinite loop
while(i <= 1000)
{
P2=0xFF; //all pinPORT 2 high LED >> +5V OFF
msdelay(55); //delay
P2=0x00; //all pinPORT 2 low LED >> +5V ON
msdelay(50); //delay
i=i+1;
}
}
Dieses beispeil habe ich verwendet aber nix geht. Benutzen tue ich von
Rigel Reads51 als Programmier-IDE
Ich habe ein handelsübliches DeveloperBoard für ATMEL und normale 8051.
Was mache ich falsch ???? :(
Danke & Gruss
Gerhard
edit:
Das Stk500 dient als Bustreiber zu den LEDs(STK500)
Fotos :
http://robot.oderlachs.de/8051/images/8051blink.jpghttp://robot.oderlachs.de/8051/images/8051devboard.jpg
Funktioniert das Board denn ansich ? Will sagen, siehst du mit einem
Scope ob die Ausgänge abwechselnd 1 und 0 sind.
Dein Programm solltest du dir auch noch mal ansehen.
1
while(i<=1000)
Dein Kommentar hierzu "infinite loop" stimmt das ?
Gerhard Hinze schrieb:> Ich habe ein handelsübliches DeveloperBoard für ATMEL und normale 8051.
Beim 8051 mußt Du Reset auf Low ziehen, damit er losrennt.
Setze einfach mal nur den Port auf 0xA5, ob die LEDs funktionieren.
Habt alle erst recht vielen Dank !
Ich bin wirklich blutiger Einsteiger bei 8051. Das DevBoard habe ich bei
Ebay erstanden und keinerlei Beschreibung dazu habe.
Ich habe eine Auswahl AVR oder 51 per Jumper.
es kann schon sein, das die Hardware-Perepherie nicht stimmt. Zumindest
kann ich über ein STK200 Clon über LPT >> ISP den ChipCode
indentifizieren...
Ich werde mich weiter mit befassen, die Hardware zu bestimmen vom Board.
Der ResetPin ist auf LOW, habe ich gemessen, ob er nun konkret auf GND
liegt oder per Widerstand auf LOW gezogen weiss ich noch nicht.
Ich habe leider keinen Osszi damit ich die pegelverläufe an den Ports
besser sehen könnte..
Nochmals Danke für erste Hinweise, war schon was wert...
Gruss Gerhard
Edit Hier die ungefähre Schaltung, nur das bei mir die Taster und LEDs
fehlen
http://i.ebayimg.com/t/C51-AVR-MCU-development-board-DIY-learning-board-kit-Parts-and-components-/00/s/NzQ4WDEyNjE=/$(KGrHqR,!pgFBYBm!81vBQjjcIQl9w~~60_57.JPG
Gerhard Hinze schrieb:> Ich habe leider keinen Osszi damit ich die pegelverläufe an den Ports> besser sehen könnte.
Eine LED mit Vorwiderstand z.B. 470 Ohm reicht für einen Blinktest. Man
muß sie aber zwischen Pin und VCC betreiben, nicht an GND.
Der Reset-Pin ist zu hochohmig für eine LED.
Ein alter Kopfhörer ist auch ein sehr gutes Prüfgerät zur Fehlersuche im
NF-Bereich bis runter zu Gleichspannung. Man hört Knacken oder Töne laut
oder leise, Rauschen und Knirschen in schlechten Verbindungen, sowas war
bei der Fehlersuche in Telefonanlagen üblich. Man braucht sich mit dem
Auge auch nicht auf eine LED oder Instrument zu konzentrieren, sondern
rein nur auf die Schaltung. Bei der Fehlersuche war man da viel
schneller als mit dem Multimeter. Evtl. Kondensator und Vorwiderstand am
Kopfhörer einbauen (Hochpaß und galvanische Trennung), evtl. Schutz fürs
Ohr gegen Überlautstärken, an eine Leitung eine Krokoklemme, an die
andere eine Meßspitze, wenn man sowas vor hat.
Mit dem "Prüfgerät 1A" der Post (das ist ein halber Kopfhörer mit nur
einer Hörmuschel) durfte man sogar an der Netzspannung 230V hören (dann
allerdings vom Ohr abgenommen), und andererseits hört man damit noch
Millivolt. Es hatte zwei umschaltbare Impedanzen, 600 Ohm und 10k Ohm.
Nun habe ich den Quarz gewechselt , weil aus der seriellen Schnittstelle
nur "Mischmasch" rauskam...Org. 12 MHz gegen 11,5902 getauscht...
Nun bekomme ich an der ser. Schnittstelle die ganzen ASCII Zeichen
ausgegeben. Eigendlich sollte "Hello World" rauskommen..aber wenigstens
etwas.
Na mal sehen wie es weiter geht..das Blinken geht noch nicht...
Meine LEDs sind gegen +5V über eine Transistorstufe geschaltet(STK500)
sie sind bei LOW dann ON, also LOW aktiv.
Ich werde weiter die Tips hier probieren....fällt ja kein Meister
schnell vom Himmel...
Gerhard
Gerhard Hinze schrieb:> 12 MHz gegen 11,5902 getauscht...
Das wäre doch nicht nötig gewesen! Mit 12MHz bekommt man auch 9600BAUD
eingestellt, und Timer sind mit den 12MHz auch besser einstellbar als
mit dem Baudratenquarz. Aber jeder so, wie er möchte.
Außerdem ist der MAX232 auch nur bis 20000BAUD spezifiziert.
Hallo Wilhelm,
ja das weiss ich von anderen Projekten. Trotzdem Danke für den Hinweis !
Es ist nur so, das ich vorgefertigte Examples erst mal nutze. Da diese
für einen 115902 Q geschrieben war, habe ich einfach mal nen anderen Q
raufgesteckt.
Edit: Ich muss mich auch erst in die Baudeinstellung (Code) hierbei
einarbeiten, hatte bislang nur AVR's ...
Heute habe ich nun von Keil mir eine DemoIDE installiert , nun geht es
wenigstens schon mit den I/O Programmen, die LEDs blinken und leuchten
wie sie sollen....
Ich möchte mit den 8051er auch nicht mein weiteres Leben in Sachen
Programmierung verbringen, da nun mal die Entwicklungsumgebung(Boad und
Chips) vorhanden ist, möchte ich es mal Probieren, wie andere vielleicht
mal Kreuzworträtsel lösen o.ä.
Auf dem Dev.Board ist gleich eine Steckleiste für ein LCD , daraus wird
dann später ne LCD Uhr werden...für die 2..3 anderen Chips werde ich mir
ein PCB einfallen lassen und auch noch was daraus basteln , so war die
einmalige Geldausgabe für das Dev-Board + Chips nicht unnütz....
Na ja vieleicht kann ich bei der Verwendung der 8051er auch meinne
grösseren Vorrat an LCDs abbauen und was Nützliches daraus machen..
Somit mit besten Dank und Grüssen
Gerhard
Nachtrag:
habe mich noch mals mit dem Hello World-Quellcode befasst..und..
Nach Änderung der Terminaleinstellungen geht es jetzt:
http://robot.oderlachs.de/8051/images/serial_ok.jpg
Hallo Gerhard,
bei den Controllern von Intel - solltest du esrt mal genau angeben
welchen Typ und "wie" Du ihn benutzt.
-Benutzt du einen vom Typ, z.B. 8751 (mit internem Eprom) oder einen
(mit externem Eprom 80C51, 80C52) dann wirst du einen Pin (PGME?) auf
GND legen müssen, damit der Adressbus nach aussen geschaltet wird.
Um ein Bord zu testen ob es hardwaremässig überhaupt funktioniert ist es
sehr hilfreich in einem solchen Fall ein Eprom zu schissen das gesammt
"nur NOP-Befehle enthält". Damit erreicht man, dass beim Start "an allen
Adresspins" die Adressen von "000 bis FFF" ausgegeben werden und mit
einem Odzilloskop kann an den Adresspins das Signal beobachtet werden,
genau wie an einem binären Zähler, z.B. einem 4040.
An den Höheren Adresspins sollte sogar mit einer "LED" das Blinken
beobachtet weden können.
Bei den Typen mit internem Eprom z.B. (87Cxx) ist es schwerer die
Funktion zu prüfen.
Wolfgang
umsteiger schrieb:> bei den Controllern von Intel - solltest du esrt mal genau angeben> welchen Typ
Im Eröffnungsbeitrag ist ein Link zu einem Foto angegeben, auf dem man
ihn sieht.
Danke, ja ich muss trotzdem dem Umsteiger etwas Recht geben, genau
gesagt arbeite ich zur Zeit mit dem ATMEL Chip AT89S51.
Da habe ich schon was zum "laufen" gebracht, ein Hello World und eine 8
Led BlinkZeile... :(
Weiter habe ich noch STC 89C51RC und den Temic oder Phillips 80C52.
Temic darum weil ein grosses T auf dem Chip ist so denke ich das so..
Das diese wohl alle den 8051 "nachahmen" aber jeder ein bischen doch
"anders" ist habe ich schon gemerkt...
Ich sagte ja ich blin "blutjunger Einsteiger" bei dieser Chipserie...
Ich habe auch ein "dickes Buch" <Das grosse 51er Anwender Buch> aber da
werde ich nicht so ganz schlau, ist ganz in Assembler geschrieben. Ich
verstehe das zwar, aber doch möchte ich bei "C" bleiben.
Auch hatte ich Probleme mit dem Dev. Board, weil keine
Beschreibung..wenn ich den ISP Stecker abgezogen hatte lief das Prog
nicht mehr, erst als ich den Jumper für die Reset-Umschaltung
(AVR-8051)entfernte lief das Prog dann weiter.
Wie gsesagt ich lerne mich da so ein wenig erst mal ein...und das ein
Programm, nicht wie ein ein selbes nur auf ner anderen IDE- oder
Programmierumgebung ist, habe ich auch schon gemerkt.. ich dachte
bislang C ist C und 8051er ist 8051er... ;)
Aber es wird habe so einige Fallstricke schon gefunden und entfernt ;)
Gerhard Hinze schrieb:> ATMEL Chip AT89S51
Das ist anscheinend ein Flash-µC,
Gerhard Hinze schrieb:> Phillips 80C52
und dieser ein maskenprogrammierter µC, der braucht externes EPROM.
Man wird sie deswegen nicht einfach so untereinander tauschen können.
Danke für die Ausführungen !
Ich möchte auch sortieren, die Guten ins Kästchen und die anderen in den
Elektroschrott...
Ich möchte da nicht grosse Sachen aufbauen...nein das habe ich nicht
vor.
Die AT89S51 werde ich wohl verwenden können , vielleicht auch noch den
STC-89C51RC ...
Das Probieren wars mir aber wert, nicht das ich gleich alles als nutzlos
entsorge..
Gruss Gerhard
Gerhard Hinze schrieb:> Die AT89S51 werde ich wohl verwenden können , vielleicht auch noch den> STC-89C51RC ...> Das Probieren wars mir aber wert, nicht das ich gleich alles als nutzlos> entsorge..
Das Foto oben sieht so aus, als ob da kein externes EPROM für einen
normalen 8051 oder 8052 drauf ist. 8051 und 8052 sind Maskenversionen
eines 8031 oder 8032, man kann sie gelegentlich als Sonderposten Abfall
mal kaufen, oder findet sie in Altgeräten. Mit dem Pin EA auf Low ist
das Masken-ROM abgeschaltet, und ein gebrauchter 8051 oder 8052 läßt
sich dann vollwertig wie ein ROM-loser neuer 8031 oder 8032 betreiben.
Ich habe die mal irgendwo von irgendwelchen Boards verschidener
Steuerungen abgenommen eher die in den Müll kamen....
Will gerade eine LCD Uhr aufbauen, muss aber erst nen Anschlussadaper
löten..
Meine LCD haben etwas geänderte Anschlüsse, als wie sonst 1...16 in
einer Reihe. Ein solcher LCD Anschluss ist auf dem Dev.Board vorhanden..
Na mal sehen ob das mit der Uhr was wird...
Gerhard
Gerhard Hinze schrieb:> Will gerade eine LCD Uhr aufbauen, muss aber erst nen Anschlussadaper> löten..
Das verlinkte Foto mit dem Board sieht ja grundsätzlich brauchbar aus.
Auch um ein LCD anzuklemmen, es sind ja wie ich sehe alle Ports an
Stiftleisten.
Gerhard Hinze schrieb:> Ich muss mich auch erst in die Baudeinstellung (Code) hierbei> einarbeiten, hatte bislang nur AVR's ...
Es gibt auch 8051 mit internem Oszillator (kein Quarz nötig) und
Bootloader, damit geht es einfacher als beim AVR z.B. LPC922 im DIP-20
lässt sich mit dem kostenlosen FlashMagic flashen:
http://www.flashmagictool.com/
Hätte außerdem noch den Vorteil dass die ARM-Nachfolger hier z.B. LPC812
dieselbe Peripherie und Bootloader haben, damit wäre ein späterer
Umstieg problemlos.
Hier eine annähernde Schaltung, es ist die Weiterentwicklung. bei meinem
Board sind keine Taster und LEDs an den IO Ports schaltbar, d.h. sie
sind gar nicht auf dem Board.
http://robot.oderlachs.de/8051/images/boardschaltung.jpg
Die LCD-Beispile aus dem Web , gehen nicht so richtig. Bin gerade dabei
meinen eigenen Code dafür zu schreiben, um erst mal ein paar Zeichen auf
dem LCD zu sehen...
Wenn soweit ist sag ich hier Bescheid mit Foto.. ;)
Gerhard