Hallo zusammen, ich benötige ein Assembler-Programm für einen PIC16f76 oder ähnlich/größer, wenn es Euch besser passt. Es soll eine einfache Steuerfunktion mit mehreren Tasten und mehreren Ausgängen realisiert werden. Würde gern selbst machen, bin dennoch nicht so gut darin, das in kurzer Zeit zu schaffen, leider... Ich müsste noch einiges dazu lernen. Stehe momentan selbst unter Zeitdruck, brauche aber die Steuerung dringend. Bin mir sicher, dass es für experten eine Kleinigkeit ist. Nähere Informationen kann ich gern an seriöse Interessenten per Email geben. Danke!
Warum in Assembler ? Dürfte dir doch egal sein in welcher Sprache das Programm ist.
:
Bearbeitet durch User
Andreas schrieb: > Nähere Informationen kann ich gern an seriöse Interessenten per Email > geben. Wieso nicht hier, dass man den Aufwand abschätzen kann bevor man sich darauf einlässt?
ich versuche es in der Regel selbst mit MPLAB zu lösen. Als Anfänger ist es schwer sich mit noch anderen Programmiersprachen zu beschäftigen. Es braucht sehr lange um sich da durch zu finden. Ich versuche mich in PIC-Assembler zurecht zu finden, und es wäre für mich zu schwer noch eine andere Sprache zu erlernen. Es sei den, dass programmieren damit einfacher wird???
Andreas schrieb: > Es sei den, dass > programmieren damit einfacher wird??? In 'C' ist es mMn einfacher. Hardwarenahe Dinge wie Timer, ADC,... konfigurieren bist auf die Befehle um Register zu setzten gleich, während Berechnungen, Schleifen und if-Abfragen einfacher werden. Von Mikrochip gibt's kostenlose den XC8 C-Compiler und hier ein PIC-C-Tutorial: http://pic-projekte.de/wordpress/?p=133
:
Bearbeitet durch User
Andreas schrieb: > Nähere Informationen kann ich gern an seriöse Interessenten per Email > geben. Na so dringend kann es nicht sein. Eine Email-Adresse hast du nicht angegeben und angemeldet bist du auch nicht. Die Vorgaben klingen für mich sehr nach Hausaufgaben... mach sie allein, nur so lernst du was.
Woher kommt denn der Zeitdruck? Naht der Abgabetermin für ein Studien- / Ausbildungsprojekt? In diesem Fall wäre die mehr mit Hilfe zur Selbsthilfe geholfen, also erzähl doch mal etwas mehr. Was hast du schon? Zeig mal einen Schaltplan, damit man weiß was da alles dran hängt. Sicher gibt es auch ein Board dazu, wenn man das jetzt mal schnell auf einem Evalboard zusammen strickt passt der resultierende Code sicherlich nicht zu dem Board auf dem es dann später mal laufen soll. Ein paar Port-Pins abfragen und abhängig davon einige Ausgänge schalten ist jetzt aber nicht soo kompliziert. Das sollte auch für einen Anfänger an einem langen Samstag Nachmittag machbar sein. Stöber mal auf der Seite von Microchip, da gibt es sicher einiges an Beispielcode und natürlich auch die Datenblätter für deinen Controller, um die Registernamen zum Lesen/Schreiben von Ports heraus zu bekommen. Vermutlich hat MPLAB auch noch einen Simulator, dann kannst du gleich direkt in der IDE probieren was dein Code so tut. Und bei Detailproblemen hilft dir hier sicher gerne jemand weiter. Im realen Leben später musst du übrigens dann da selber durch. Und wenn man es neu-deutsch out-sourcen möchte, verursacht folgende Aussage einen Preisanstieg um 400%: > Stehe momentan selbst unter Zeitdruck, brauche aber die Steuerung > dringend. Bin mir sicher, dass es für experten eine Kleinigkeit ist. 1. Zeitdruck -> Express ist i.d.R. teurer 2. Dringend -> Abgabetermin droht, damit Erpressungspotential vorhanden 3. Kleinigkeit für Experten -> Keine Ahnung, dem kann man was vom Mond erzählen ;)
Andreas schrieb: > Würde gern selbst machen, bin dennoch nicht so gut darin, das in kurzer > Zeit zu schaffen, leider... Ich müsste noch einiges dazu lernen. Cloud-Working - einer stellt die Aufgabe in die Cloud, die anderen tun die Arbeit. Find ich klasse, die Idee.
...scheinbar gehören Sie nicht zu denen, die was dazu verdienen möchten? :-)
Keine Hausaufgaben, keine Anschlussarbeit. Dazu bin ich zu alt. Es ist eine Idee, die evtl. marktfähig wäre??? Das weiss ich aber auch noch nicht mal selbst. Würde aber gern ausprobieren, und das ist mir was Wert...
Der PIC16f76 liegt selbst in Stückzahlen über 10k noch über 3€, wenn man nur ein paar Ein- und Ausgänge verbinden will ist das eine teure Lösung, zumal das Ding 14k Flash und 384 Bytes Ram hat. Und das Zeitargument "damit kenn ich mich halt schon aus" zieht hier auch nicht,sonst hättest du das in den letzten zwei Stunden schon gelöst... Übrigens bekommt man für ca. 50 Cent auch M0 basierte Controller die man bequem in C programmieren kann und hat deutlich mehr Leistung...
Andreas schrieb: > Würde aber gern ausprobieren, und das ist mir was > Wert... Schau dich mal bei odesk.com oder aehnlichen Portalen um... da kannst du sehr einfach kleine Auftragsarbeiten vergeben. Gegen geringes entgelt natuerlich.
Hallo Andreas, gib uns doch mal Deine eMail Adresse. Dann können Dich alle, die wirklich Interesse haben auch anschreiben. Gruß TK
Hallo Andreas, versuch es doch einfach selbst zu realisieren! Im Datenblatt ist das recht eindeutig beschrieben. Nachstehend, am Beispiel des PIC16F876 ist zu sehen wie einfach der ADC zu verwenden ist. Die "enhanced" PIC wie z.B. der 16F182x, 16F193x und andere, verfuegen ueber eine interne Referenspannung, gestuft 1024, 2048, 4096 mV. Ueberhaupt ist die Konfiguration des ADC deutlich einfacher wie die meist noch zusaetzlich erforderlichen Berechnungsroutien z.B. Umrechnung Binaerwert zu Dezimal/Volt, LCD-Ausgabe usw. mfG GroberKlotz ADC-Initialisierung des PIC 16F876 Die externe Referenzspannung ist an Pin RA3/AN3/VREF anzuschliessen, dies Konfiguration wird in Register ADCON1,PCFG2:PCFG0 festgelegt. Die Seitenangaben beziehen sich auf das Datenblatt des 16F876 ;********************************************************************* Init ;--PORTA is ADC_PORT BANKSEL ADC_PORT clrf ADC_PORT ;clear output latches BANKSEL ADC_TRIS movlw b'00100000' ;Configure RA5 as ADC-Input movwf ADC_TRIS ; BANKSEL ADCON1 ;S.130 See below "ADC-Configuration" ; movlw b'00000110' ;Set RA7:RA0 as digital IO ; movwf ADCON1 ;--ADC-CONFIGURATION BANKSEL ADCON0 ;bank0 S.129 clrf ADCON0 ;b7:0=00000000 ; ADCON0,ADCS1 ;b7:6=01 AD convers.clock = Fosc/8 bsf ADCON0,ADCS0 ;->ADCON1,ADCS2 bsf ADCON0,CHS2 ;b5:3=100 AD channel is AN4 (RA5) ; ADCON0,CHS1 ; ADCON0,CHS0 ; ADCON0,ADON ;b0=0 ADC is off (See sub "ADC") ;movlw b'01100000' ;movwf ADCON0 ; BANKSEL ADCON1 ;bank1 S.130 clrf ADCON1 bsf ADCON1,ADFM ;b7=1 ADC result = right justified ; ADCON1,ADCS2 ;b6=0 convers.clock Fosc/8 ; ADCON1,PCFG3 ;b3:0=0010 ; ADCON1,PCFG2 ;RA4:0 are analog, Vdd=Vref+, Vss=Vref- bsf ADCON1,PCFG1 ; ADCON1,PCFG0 ;movlw b'10000010' ;movwf ADCON1 BANKSEL 0 ;********************************************************************* ;********************************************************************* Analog to Digital Conversion Routine ;********************************************************************* ; ADC ; To do an A/D Conversion, follow these steps: ; 1. Configure the A/D module: ; • Configure analog pins/voltage reference and digital I/O (ADCON1) ; • Select A/D input channel (ADCON0) ; • Select A/D conversion clock (ADCON0) ; • Turn on A/D module (ADCON0) ; 2. Configure A/D interrupt (if desired): ; • Clear ADIF bit ; • Set ADIE bit ; • Set PEIE bit ; • Set GIE bit ; 3. Wait the required acquisition time. ; 4. Start conversion: ; • Set GO/DONE bit (ADCON0,GO_NOT_DONE) ; 5. Wait for A/D conversion ,to complete by either: ; • Polling for the GO/DONE bit to be cleared (interrupts disabled) ; OR ; • Waiting for the A/D interrupt ; 6. Read A/D Result ADRESH:ADRESL, clear bit ADIF if required. ; 7. For the next conversion, go to step 1 or step 2 as required. ; The A/D conversion time per bit is defined as TAD. ADC bsf ADCON0,ADON ;b0=1 Enable AD conversion bank0 bsf ADCON0,GO ;b2=1 Start AD conversion movlw .8 * FOSC_MULT ;wait the required aquisition time movwf tmp0 ;(TAD) = 25µs/cycles (Fosc=4MHz) ADC_AquisLoop: decfsz tmp0,f GOTO ADC_AquisLoop ADC_Loop: btfsc ADCON0,GO ;b2=0? ADC conversion done? GOTO ADC_Loop ;NO, try it again ; #IFDEF __DEBUG ;Testergebnisse im DEBUG-Modus movlw b'00000001' ;ADRESH:L=b'0000 0001 1110 0000'=480 movwf ADRESH ; #ENDIF ; movf ADRESH,w ;YES movwf ACb1 ;MSB handover to BIN16_2DEZ BANKSEL ADRESL ;bank1 ; #IFDEF __DEBUG ;Testergebnisse im DEBUG-Modus movlw b'11100000' movwf ADRESL ;ADRESH:L=b'0000 0001 1110 0000'=480 #ENDIF ; movf ADRESL,w BANKSEL 0 movwf ACb0 ;LSB handover to BIN16_2DEZ RETURN ;*********************************************************************
Phan Tom schrieb: > Andreas schrieb: >> Würde gern selbst machen, bin dennoch nicht so gut darin, das in kurzer >> Zeit zu schaffen, leider... Ich müsste noch einiges dazu lernen. > > Cloud-Working - einer stellt die Aufgabe in die Cloud, die anderen tun > die Arbeit. Find ich klasse, die Idee. Amazon Mechanical Turk, kennt ihr noch nicht? Das ist genau das. Fleissaufgaben in der Cloud für den Nebenverdienst Zuhause.
So wird das nichts - rede mit einem fachkundigen Freund, zu dem du Vertrauen hast und lass den mal einschätzen, ob und wie das sinnvoll wird. Du schränkst dich von vorneherein unnötig ein, indem du PIC und Assembler vorgeben willst, ohne dafür richtige Gründe zu haben.
Hallo Andreas, melde dich bitte im Forum an, hinterlege deine E-Mail Adresse damit man dich auch erreichen kann. Ich werde hier sicherlich nicht meine E-Mail Adresse Posten! Wenn du hilfe benötigst, gerne. PP
warum sind alle so agressiv und misstrauisch hier??? :-( Ich bin ein Anfänger, habe keine Programmierer-Ausbildung und versuche die Kunst des Programmierens zu erlernen. Habe den Eindruck, dass ich etwas generelles nicht verstanden habe. Einfache Vorgänge sind verständlich, aber wenn es etwas komplizierter wird weiss ich nicht mehr wo ich anfangen soll. Muss man Mathematiker sein um zu Programmieren??? Oder kriegt man mit der Übeung auch etwas hin?
Andreas Kran schrieb: > Habe den Eindruck, dass ich etwas generelles nicht verstanden habe. > Einfache Vorgänge sind verständlich, aber wenn es etwas komplizierter > wird weiss ich nicht mehr wo ich anfangen soll. Dann würde es dir aber 100 mal mehr bringen wenn du erst einfache Beispiele programmierst und beim konkreten Problem deinen Code hier postest mit der Bitte dir einen Denkanstoss zu geben. Aber du kommst wie 100 andere und sagst du willst programmieren lernen, möchtest dazu aber ein fertiges Programm. Wir können programmieren und wir wissen: So lernt man es NICHT! Das ist als wenn du in ein Schreinerforum gehst und sagst du willst selber Möbel bauen lernen, es soll dir jemand einen Tisch bauen, dass du von Anschauen des Tischs lernst wie man den baut.
Hallo Andreas, ich habe Interesse an der Sache: bit-schubser(ät)web.de
Assembler und PIC lernen, da ist www.sprut.de die erste Anlaufstelle. Dort findest du auch jede Menge Beispielprojekte mit Code, Schaltung und guter Beschreibung. So kannst du Schritt für Schritt in die Materie eintauchen. So hatte ich das auch vor Jahren gelernt. Mehrere Wochen Zeit solltest du aber einplanen. Und es hilft, wenn man schon mal in Assembler programmiert hat, egal auf welcher CPU, einfach um ein Gefühl für die Assemblerdenkweise zu bekommen.
Andreas schrieb: > Nähere Informationen kann ich gern an seriöse Interessenten per Email > geben. Ja so richtig wichtig war es wohl doch nicht, der Typ hat sich nicht gemeldet.
Also dass du ein Programm haben willst finde ich ja noch ok, wäre schön mit einer eigenen Idee dahinter Du sagtest bei Interesse sollen wir mit dir schreiben... Das hört sich an als ob du was verkaufen willst Wenn du was grundlegendes nicht verstanden hast, dann würde ich dir Assembler nicht als Einstieg empfehlen Probier es mit Pascal, die Compiler sind da sehr gut und du bekommst Fehlermeldung, die dir auch helfen besser zu werden C ist dagegen nicht so optimal, da sollte man schon mehr Erfahrung haben Zu Pascal und C findest du auch viele Bücher bei Asm musst du dich früher oder später für einen entscheiden, ich persönlich empfehle dir AVR Asm von Atmel, die Prozessorstruktur ist da wesentlich leichter zu handhaben als die PICs
Also ASM auf dem PIC ist doch blanker Masochismus. Das letzte Mal als ich einen Blick in diese Richtung geworfen habe war das ein einziges Fest aus Bank-Switching und Co. Wenn du wirklich ASM willst, dann doch bitte auf einem "braven" System. Für den Einstieg würde ich entweder 8051 (weil der als Akkumulator-Konstrukt sehr geradlinig arbeitet) oder AVR (weil ich (persöhnlich) den Befehlssatz recht intuitiv finde, könnte an der C-Ähnlichkeit liegen). Wenngleich x86 ASM zwar erstmal logisch erscheint so ist man dann doch erstmal etwas erschlagen von der schieren Menge an Verknüpfungen und Verknotungen (so ging es mir). Da ich ohnehin aus der C-Ecke auf den µC gekommen bin war bei mir der AVR eigtl. der "natürlichste". Die Instruktionen sind von der Denkstruktur nämlich ziemlich C-ähnlich. Ausserdem finde ich hat Atmel einen guten Mittelweg gefunden mit ihrem Kern. Der Fakt, dass man sich auf 32 Registern (mit ein paar Regeln) austoben kann erspart einige Lade und Speicher Befehle im Vergleich zum 8051. Eines kann ich dir aber jetzt schon sagen: Wenn du mehr als ein paar blinkende LEDs hast, dann wünschst du dir C (und auf dem AVR kriegst du das via gcc prompt geliefert ^^).
Max D. schrieb: > Das letzte Mal als ich einen Blick in diese Richtung geworfen habe war > das ein einziges Fest aus Bank-Switching und Co. Wenn du ein Problem mit Banking hast, hast du dir eindeutig den falschen PIC ausgesucht. Wie wär's mit einem PIC24?
Max H. schrieb: > Wenn du ein Problem mit Banking hast, hast du dir eindeutig den falschen > PIC ausgesucht. Wie wär's mit einem PIC24? 1. Der TO wollte explizit PIC16f76 und Assembler nutzen 2. Gibt es für PIC24 keine richtige freie Entwicklungslösung. MPLABx kommt mit irgendwie kastriertem gcc daher (da geht dann nach einer gewissen Zeit die Optimierung aus oder so). Zeig mir wie ich mit ähnlichem Komfort wie bei AVRs für den PIC optimierten C Code programmieren kann und ich geb ihnen nochmal eine Chance (weil reizen würde mich die Power in nem DIP schon).
Max D. schrieb: > Max H. schrieb: >> Wenn du ein Problem mit Banking hast, hast du dir eindeutig den falschen >> PIC ausgesucht. Wie wär's mit einem PIC24? > > 1. Der TO wollte explizit PIC16f76 und Assembler nutzen > DU hast ja anscheinend ein Problem mit Banking. Dem TO wäre es vermutlich egal ;-) > 2. Gibt es für PIC24 keine richtige freie Entwicklungslösung. MPLABx > kommt mit irgendwie kastriertem gcc daher (da geht dann nach einer > gewissen Zeit die Optimierung aus oder so). Korrekt. Der Freeware-Compiler disabled die höchste Optimierungsstufe bzgl. Size Optimisation, soweit icht weiss. Und? Breaking News: Manche Sachen kosten Geld. Oder arbeitest DU umsonst ? Und wenn man sich die Umsatzzahlen von Atmel & Microchip ansieht, dann haben da anscheinend wenig Kunden ein Problem damit. > > Zeig mir wie ich mit ähnlichem Komfort wie bei AVRs für den PIC > optimierten C Code programmieren kann und ich geb ihnen nochmal eine > Chance (weil reizen würde mich die Power in nem DIP schon). Du meinst sowas wie PROGMEM hust ? Ist zwar langsam komplett OT, aber wenn Du mal etwas mehr Power im DIP brauchst, dann schau Dir doch mal die LPC800 Familie von NXP an. Cortex0+, 30MHz im DIL8. /regards Andreas
Flammi schrieb: > Nein, kein Flamewar Thread AVR PIC C ASM.... > > Der Threadersteller will PIC und ASM, fertig. Mea Culpa. Du hast völlig recht :-D /regards Andreas
Andreas K. schrieb: > warum sind alle so agressiv und misstrauisch hier??? :-( Das geht nicht gegen dich, bloß PIC16-Assembler ist die absolute Härte, das möchte ich nichtmal mit der Kneifzange anfassen. Ist ja nicht nur der arg beschränkte Befehlssatz, das ständige Banking und der lückenhafte SRAM. Auch der Flash ist unterteilt in 256 Word Pages. Da muß man bei jedem Call, Goto, Retlw erstmal umständlich das PCLATH berechnen. Oder man fällt rein, wenn eine andere 256 Word Page angesprungen wird. Da reicht es, irgendwo einen Befehl einzufügen und alles geht gegen den Baum. In C würde einem die ganze Mühsal wenigstens der Compiler abnehmen. Bzw. andere Assembler (8051, AVR) haben einen lückenlosen und direkt adressierbaren Adreßraum bis 64k.
Flammi schrieb: > Nein, kein Flamewar Thread AVR PIC C ASM.... > Der Threadersteller will PIC und ASM, fertig. Ja. Gleichzeitig charakterisiert er sich selber als Andreas K. schrieb: > Ich bin ein Anfänger, habe keine Programmierer-Ausbildung und versuche > die Kunst des Programmierens zu erlernen. Aber wenn er Anfänger ist, was sollen dann diese konkreten Vorgaben? Warum muß es Assembler sein? Warum PIC? Warum dann ausgerechnet PIC16? Es ist genau diese Diskrepanz, die bei den Leuten die Alarmglocken angehen läßt. Der Frager kann ja nur entweder ein fauler Schüler sein (Hausaufgabe) oder er ist ein Volldepp.
Axel Schwenke schrieb: > Der Frager kann ja nur entweder ein fauler Schüler sein > (Hausaufgabe) oder er ist ein Volldepp. Das muss sich nicht ausschliessen :-D Möglich wäre auch, dass ihm der uP, bzw. die Familie, vorgegeben ist, z.B. durch die Schule. Ist doch aber auch egal, oder ? /regards Andreas
Andreas H. schrieb: > Ist doch aber auch egal, oder ? Eben nicht. Je mehr Leute hier erfolgreich ihre Hausaufgaben abladen und sie erledigt zurückkriegen umso mehr Leute kommen dann eben mit ihren Hausaufgaben hierher. Das hier ist ein Bastlerforum und keine Hausaufgaben-Sklavenbude.
Max D. schrieb: > Eben nicht. Je mehr Leute hier erfolgreich ihre Hausaufgaben abladen und > sie erledigt zurückkriegen umso mehr Leute kommen dann eben mit ihren > Hausaufgaben hierher. Man soll die Aufgabe i.A. auch nicht lösen. Sondern Hilfe zur Selbsthilfe geben :-) Grüße Andreas
Andreas H. schrieb: > Man soll die Aufgabe i.A. auch nicht lösen. Sondern Hilfe zur > Selbsthilfe geben :-) Lies dir den Titel vom Thread durch und sag das nochmal.
Max D. schrieb: > Andreas H. schrieb: >> Man soll die Aufgabe i.A. auch nicht lösen. Sondern Hilfe zur >> Selbsthilfe geben :-) > > Lies dir den Titel vom Thread durch und sag das nochmal. Darum schrieb ich ja auch i.A.^^
Axel Schwenke schrieb: > Flammi schrieb: > Aber wenn er Anfänger ist, was sollen dann diese konkreten Vorgaben? > Warum muß es Assembler sein? Warum PIC? Warum dann ausgerechnet PIC16? Na, weils halt vom Lehrer so vorgegeben ist ;-) Irgenwer hat mir mal erzählt, dass die Uraltgurke 16F76 beim Leerkörper sehr beliebt sein soll. Ich versteh allerdings nicht so ganz, warum man die Kinderchen immer noch mit den alten Dingern quält. OT: Was für einen Sinn haben eigentlich PIC16? Weil Stromsparen und Preis kann es ja nicht sein. Auch nicht die Bastlerkompatiblität - Ein STM32F03... ist billiger. - Ein PIC24 braucht genauso wenig Strom - Ein PIC32MX250 ist genaus Bastlerkompatibel. Also, warum sucht man sich ausgerechnet einen PIC16 aus?
Andreas K. schrieb: > warum sind alle so agressiv und misstrauisch hier??? :-( Weil einige hier nun mal Nerds sind. Die sehen nur ihre kleine Technikwelt und könne sich überhaupt nicht vorstellen das es Menschen gibt die so etwas weder können noch wollen. Das Sie dann nichts Verleumder sind und sich auf das Niveau von Ars..... begeben die mit Unterstellungen arbeiten werden Sie nie begreifen, sonst hätten Sie es längst gelernt. Meiner Meinung nach (und wohl auch mein Lieblingsthema) alles Konsumenten der Verdummungsmedien wie Behörden- und Konzernfernsehen. Da herrscht ein ähnlich stinkender Dreckston. Max D. schrieb: > Je mehr Leute hier erfolgreich ihre Hausaufgaben abladen und > sie erledigt zurückkriegen umso mehr Leute kommen dann eben mit ihren > Hausaufgaben hierher. Welcher Pädagoge beginnt seine Übungen mit einem 4GL Generator in den der Schüler oder Student Assembler Code einbinden muss den er nicht gelernt hat? Wenn dem so sei (gibt ja auch grottige Pädagogen) ist der Fragesteller zu recht hier und man sollte ihm alle Unterstützung zukommen lassen.
Achtung, Trollgefahr.... Warum glaubt Ihr, hat er seine Mail Adresse nicht angegeben?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.