hi,
ich versuche gerade einen Gleichstrommotor mit Hilfe einer herkömmlichen Multi-Fernbedienung, einem IR-Sensor (TSOP 1736, Datenblatt) und einem Microcontroller-Board (AT89S8253) zu realisieren. Die Fernbedienung hab ich auf den RC5-Code programmiert. Glaub ich zumindest, das Signal der Taste 1 entspricht laut Oszi auf jeden Fall dem des RC5-Codes. Den Empfänger hab entsprechend dem Datenblatt aufgebaut, allerdings hab ich den 10k-Widerstand durch einen 1k-Widerstand ersetzt, da es trotzdem noch zu Schwingungen beim Signal gekommen ist, wenn der Empfänger mit dem Microcontroller verbunden war. Den Empfängerausgang hab ich an einem beliebigen PIN angeschlossen. NUN zur Programmierung:
Das Programm ist äußerst schlecht kommentiert, ich weiß! Aber wer fragen hat kann diese ruhig stellen. Wenn ich das Programm auf den Microcontroller (Flashspeicher) spiel, passiert aber an den Ausgängen vom Motortreiber nichts, nada! Hardware-Fehler dürften es nicht mehr sein, darum Suche ich jetzt Fehler in der Software. Vllt kann mir ja einer von euch bei der Suche helfen. Ganz bin ich aus dem Programm auch nicht schlau geworden. Soll dieses Programm nur abändern, hab es nicht selbst geschrieben. Zu den einzelnen Stellen. Die Zeitverzögerungen sind klar, LEDAnzeige auch, Motorsteuerung und auslesen der 6 Kommandobits auch. Nur wie kommt der Autor des Programms auf z.B. diese Zuweisung:Code:CSEG AT 0 ; IR-Signal-Auswertung IRinput BIT P1.3 IRCode DATA 7fh IRempfadr DATA 7eh ; Zuweisung der Fernbedinung IRrechts EQU 00101110b IRlinks EQU 00101011b IRvor EQU 00101101b IRzurueck EQU 00101100b IRstopp EQU 00101111b ; Gleichstrom-Motor-Steuerung Motoren DATA P2 Mstopp EQU 00000000b Mvor EQU 11001100b Mzurueck EQU 10101010b Mrechts EQU 11001000b Mlinks EQU 10001100b LEDs DATA P0 start: MOV Motoren,#Mstopp ;RC5-Empfang ireinlesen: JB IrInput, ireinlesen CLR A LCALL Zeit34 MOV B, #7 loopAdr: MOV C, IrInput RLC A LCALL Zeit DJNZ B, loopAdr ANL A, #00111111b MOV IRempfadr, A CLR A MOV B, #6 loopDaten: MOV C, IrInput RLC A LCALL Zeit DJNZ B, loopDaten MOV IRcode, A CALL zeit CALL zeit ; Ende RC5-Empfang MOV A, IRempfadr ANL A, #11011111b JNZ IReinlesen ; Motorsteuerung MOV A, IRcode CJNE A, #IRrechts,m1 MOV motoren, #Mrechts SJMP anzeigen m1: CJNE A, #IRlinks,m2 MOV motoren, #Mlinks SJMP anzeigen m2: CJNE A, #IRvor,m3 MOV motoren, #Mvor SJMP anzeigen m3: CJNE A, IRzurueck,m4 MOV motoren, #Mzurueck SJMP anzeigen m4: CJNE A, IRstopp,anzeigen MOV motoren, #Mstopp SJMP anzeigen ;LED-Anzeige anzeigen: MOV LEDs, IRCode SJMP IReinlesen ;Zeitverzögerung 1768us Zeit: MOV R6, #5 loop1: MOV R7, #172 loop0: DJNZ R7, loop0 DJNZ R6, loop1 RET ;Zeitverzögerung 1328us Zeit34: MOV R6, #5 loop3: MOV R7, #131 loop2: DJNZ R7, loop2 DJNZ R6, loop3 RET END
Diese entspricht nach einer Überprüfung des Signals mit dem Oszi nicht den 6 Kommandobits. Bin für jede Hilfe dankbar.Code:IRrechts EQU 00101110b
so long, lg slimer







Zitieren

Lesezeichen