"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

keil c167

Netsaint 27.10.2002 - 00:35 1940 16
Posts

Netsaint

Threadstopper
Registered: Aug 2002
Location: WIEN
Posts: 840
hallo,

kennt sich jemand damit aus ?

hätt ein paar fragen :(

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
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 ;)

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ahh.. usb controller - ich suche eine quelle dafür - zb. den ft8u232am

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
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 :)

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ahh.. jetzt begreife ich - der hat die cpu schon drin - der ft8u232 ist ja nur eine bridge / protocol ic.

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
tja deswegen sag i ja derivat :) is a abwandlung vom original chip mit zusatzfunktionen wie der usb controller eben ;)

Netsaint

Threadstopper
Registered: Aug 2002
Location: WIEN
Posts: 840
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 ?

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
wo liegts problem?
uhrentakt vom quarztakt ableiten, speichern und aufs display ausgeben (wahrscheinlich gemultiplexte 7segmentanzeige, ansteuerroutine is ned recht schwer zu erstellen)
Bearbeitet von Indigo am 13.11.2002, 19:16

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
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 :D

Netsaint

Threadstopper
Registered: Aug 2002
Location: WIEN
Posts: 840
hmm kanntest du vielleicht den code posten ?
die displayansteuerung kann man ja auch ändern :)

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
Zitat von Netsaint
hmm kanntest du vielleicht den code posten ?
die displayansteuerung kann man ja auch ändern :)

was hastn für a anzeige zur verfügung? gemultiplext? lcd-7seg, led-7seg?
fragen über fragen...

ansteuerroutine kanni da schon geben, allerdings für 8051 geschrieben (musst hald modden :D )

wir ham damals a feuchtemessung gmacht mit dem ding...

HaBa

Legend
Dr. Funkenstein
Avatar
Registered: Mar 2001
Location: St. Speidl / Gle..
Posts: 19729
EKG-Messungs-0wner am 8051 :D

Ohne Display-Typ wirds schwer imho.

Wir hatten ein 2x20 LCD, aber ich hab keine Ahnung wo ich die Sourcen von damals abgelegt habe :D

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
i habs scho no, nur für PIC war in assembler :p:)

ownage ;)

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
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

hac, was hab ich assembler coden geliebt ;)

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
ich liebe es noch imma, aber Keil mit C++ is doch komfortabler :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz