URL: https://www.overclockers.at/coding-stuff/keil_c167_53008/page_1 - zur Vollversion wechseln!
hallo,
kennt sich jemand damit aus ?
hätt ein paar fragen 
jop
fang mal an 
hab ich in der schule glernt (HTL Mödling Elektronik)
derzeit fürs maturaprojekt verwend ma keil aber um a 8051 derivat mit usb controller zu programmiern 
ahh.. usb controller - ich suche eine quelle dafür - zb. den ft8u232am
hm wir ham den verwendet EZ USB AN2131
da gibts auf http://www.modul-bus.de a platine und a buch gibts auch, des gibts zb bei conrad und amazon.de, "messen, steuern und regeln mit usb"
das ham wir verwendet weil der lehrer des schon hatte weil es schon mal für ein maturaprojekt verwendet wurde
außerdem hatten wir schon die platine 
aber wennst di reinhängst dann findest genug über google 
ahh.. jetzt begreife ich - der hat die cpu schon drin - der ft8u232 ist ja nur eine bridge / protocol ic.
tja deswegen sag i ja derivat
is a abwandlung vom original chip mit zusatzfunktionen wie der usb controller eben 
hmm habts ihr vielleicht mal ein projekt machen müssen um mit dem ding ( und nem display z.b. dem ED1 zusatzplatinenkreibl ) eine uhr realisieren müssen ?
wo liegts problem?
uhrentakt vom quarztakt ableiten, speichern und aufs display ausgeben (wahrscheinlich gemultiplexte 7segmentanzeige, ansteuerroutine is ned recht schwer zu erstellen)
naja ham wir net nein, da ham ma nur simple sachen gschrieben, aber wir haben mit PIC16F84 a selbstgebaute anzeige mit 4 7-Segmentanzeigen ansteuern müssen mit schieberegistern.... und daraus a uhr gmacht 
des jahr mach ma biem projekt jetzt a serielle funkübertragung zwischen C167 und dem "USB-8051-Derivat" machen :/
des is a schass 
hmm kanntest du vielleicht den code posten ?
die displayansteuerung kann man ja auch ändern 
Zitat von Netsainthmm kanntest du vielleicht den code posten ?
die displayansteuerung kann man ja auch ändern
)EKG-Messungs-0wner am 8051 
Ohne Display-Typ wirds schwer imho.
Wir hatten ein 2x20 LCD, aber ich hab keine Ahnung wo ich die Sourcen von damals abgelegt habe 
i habs scho no, nur für PIC war in assembler 

ownage 
0wnage proggie von mir damals 
Code:;****************************************************************************** ;* Verfasser: Martin Floimayr * ;* Letzte Änderung: 26.02.2002 * ;* Klasse: 5BHE 2002 * ;* * ;* Feuchtemessung mit Multiplex Anzeigetreiber * ;* =========================================== * ;* * ;* Das Programm soll mittels Timer1 im Counterbetrieb von einer externen * ;* Messelektronik mit NE555+Feuchtesensor die eingelesene Frequenz einer * ;* bestimmten relativen Feuchte zuordnen und auf der 3stelligen Multiplex- * ;* anzeige ausgeben * ;* * ;* Verwendete Register und Baugruppen: * ;* =================================== * ;* Port 3.2 - 3.4 multiplexleitungen * ;* Port 1 Datenausgabe an die Anzeige * ;* R5 - R7 Einer-, Zehner- und Hunderterstelle der Ausgabe * ;* R0 Zeitrastererzeugung * ;* R3, R4 Multiplexverzögerungsvariablen * ;* * ;* Grundsätzliche Funktion: * ;* ======================== * ;* * ;* Timer NE555 erzeugt aus Kapazität des Feuchtesensors HC200 eine Frequenz * ;* 70kHz - 50kHz (entspricht 0 - 100% rH), also einen Frequenzhub von 20kHz. * ;* Das Abfragezeitraster ist 10ms, d.h. betragen die Zählwerte 700-500 Im- * ;* pulse. Die Formel (700-Zählwert)/2 führt letzendlich zur Relativen Feuchte * ;* * ;****************************************************************************** $INCLUDE (reg52.inc) initial segment code takt segment code prog segment code ausg segment code delay segment code tab segment code ORG 8000h call INIT ; TIMER0 initialisieren jmp PROGRAMM ; sprung ins Hauptptogramm ORG 800bh jmp RASTER ; Zeitrastererzeugung ;Tabelle aus Excel errechnet rseg tab tabelle: DB 100,100,98,97,95,94,93,91,90,89,87,86,85,84,82,81,80,79,77,76,75,74,73,71,70,69,68,67,66,64,63,62,61,60,59,58,57,56,55,54,53,51,50,49,48,47,46,45,44,43,42,41,40,39,39,38,37,36,35,34,33,32,31,30,29,28,27,27,26,25,24,23,22,21,21,20,19,18,17,16,16,15,14,13,12,12,11,10,9,8,8,7,6,5,5,4,3,2,2,1,0 rseg initial INIT: clr P3.2 ; Multiplexports auf 0 clr P3.3 clr P3.4 mov R0,#0 ; Taktregister auf 0 mov R5,#0 ; Einerstelle auf 0 mov R6,#0 ; Zehnerstelle auf 0 mov R7,#0 ; Hunderterstelle auf 0 ; Timer0 initialisieren mov TMOD,#00000001b ; Timer0 Modus einstellen (16bit Timer) mov TH0,#0ECh ; Timer HIByte mov TL0,#078h ; Timer LOWByte (zählraster 5ms) ; Timer1 initialisieren anl TMOD,#00001111b ; Timer 1 löschen orl TMOD,#01010000b ; Timer1 Modus einstellen (16bit Counter) mov TL1,#0 ; TL1 löschen mov TH1,#0 ; TH1 löschen setb TR0 ; Timer0 starten setb TR1 ; Timer1 starten setb ET0 ; Timer0 Interupt freigeben setb ET1 ; Timer1 Interupt freigeben setb EA ; Interupts enablen ret rseg takt RASTER: clr TR0 ; Timer stoppen MOV TH0,#0ECh ; Timer nachladen MOV TL0,#078h ; 2ms raster setb TR0 ; Timer starten AUS: inc R0 ; Zeitrastervariable erhöhen inc r1 call AUSGABE ; Werte ausgeben reti rseg prog PROGRAMM: cjne R0,#1,ENDE ; wenn taktzählregister == 1 == 5ms, dann Anzeige aktualisieren mov R0,#0 ; taktzählregister rücksetzen FREQ: clr TR1 ; Timer 1 stoppen mov A,TL1 mov TL1,#0 ; TL 1 löschen mov TH1,#0 ; TH 1 löschen setb TR1 ; Timer 1 starten cjne r1,#201,ENDE ; Werte im Sekundentakt aktualisieren (200*5ms) mov r1,#0 ; Taktregister rücksetzen mov b,#3 ; Wert korrigieren subb a,b mov DPTR,#tabelle ; DPTR auf Tabelle setzen movc a,@a+DPTR ; Tabelle auslesen mov B,#100 ; B mit 100 laden div AB ; A durch B mov R7,A ; Hunderterstelle in R4 schreiben mov A,B ; Rest in A schreiben mov B,#10 ; B mit 10 laden div AB ; A durch B mov R6,A ; Zehnerstelle in R6 schreiben mov R5,B ; Einerstelle in R5 schreiben ENDE: jmp programm ; sprung zum anfang rseg ausg AUSGABE: setb P3.2 ; Einer Anzeige ein mov P1,R5 ; Einer am Port ausgeben mov R3,#1 call WAIT ; 1ms warten clr P3.2 ; Einer Anzeige aus setb P3.3 ; Zehner Anzeige ein mov P1,R6 ; Zehner am Prot ausgeben mov R3,#1 call WAIT ; 1ms warten clr P3.3 ; Zehner Anzeige aus setb P3.4 ; Hunderter Anzeige ein mov P1,R7 ; Hunderter am Port ausgeben mov R3,#1 call WAIT ; 1ms warten clr P3.4 ; Hunderter Anzeige aus ret rseg delay WAIT: mov R4, #250 ; 250 * 4z 1msec (12MHz Takt = 1æs =1z L0: nop ; 1z + nop ; 1z + djnz R4,L0 ; 2z = 4z * 250 = 1 ms djnz R3,WAIT ; R3mal wiederholen ret END

ich liebe es noch imma, aber Keil mit C++ is doch komfortabler 
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026