Hi an Alle Mikrocontroller Fans Ich bin Leider ein Anfänger Und brauche dringend eure HILFE!!! Ich such ein Programm wo ich diese Datei Assemblieren Kann. Danke MFG Martin
garnicht, ein Bit (auxiliary carry):
1 | MODE_PWM_UP: PUSH AC |
kann man nicht pushen ansonsten siehe Metalink 8051 Assembler Peter
Hallo Martin, hallo Peter, da ist ein Tip- oder Kopierfehler: MODE_PWM_UP: PUSH AC MOVE A,PWM CJNE A,#60H,PW1 SJMP PW2 PW1:INC PWM MOV A,PWM ADD A,#00 DA A MOV PWM,A PW2:MOV R4,A LCALL SCAN_WAIT LCALL WRITE_EEPROM POP ACC oben steht "AC" und unten "ACC" Gruss Otto
Hi Otto Kannst du mir vielleicht die datei reparieren? Und Assemblieren !? Danke MFG Martin
Und mir ein Bier holen, öffnen und vo den Fernseher bringen. Wenn du gerade da bist, den Sender bitte wechseln! Haben wir hier wunschkonzert, HÄ???
Ich krieg auch immer das Kotzen, wenn der Vollidiot von dem man abschreiben will, wieder zu blöd war ne ordentliche Arbeit abzuliefern. Aber selber denken? Ohne mich.
@Maritn Habe deine Fehler im Quelltext korrigiert! Prüfe bitte nach ob das so stimmt. Im Anhang das entsprechende Hexfile. ; ;******************************************************* ; DC Motor Cotrol : MCS-51 ; WWW.Guidecircuit.com ; MCU : AT89C1051 ;******************************************************* $INCLUDE 89C1051.mc COM1 BIT P3.7 COM2 BIT P1.0 SDA BIT P3.4 SCL BIT P3.3 LED_PWM BIT P3.5 SW_PWM_DOWN BIT P3.1 SW_PWM_UP BIT P3.0 SW_LR BIT P3.4 PWM EQU 09 I2C_DATA EQU 10 BUF_SEG1 EQU 11 BUF_SEG2 EQU 12 DELAY_SEG EQU 13 SS200US EQU 14 OUTPUT_PWM EQU 15 EEPROM_CODE1 EQU 10100000B ;******************************************************* ; MAIN PROGRAM ;******************************************************* ORG 0000h MOV SP,#07H MOV P1,#11111111B MOV P3,#11111111B LCALL DELAY_100MS LCALL READ_EEPROM START: MOV R4,PWM Z1: LCALL CONVERT LCALL DISPLAY LCALL PWM_MODE Z2: JB PWM_DOWN,Z3 LCALL MODE_PWM_DOWN Z3: JB PWM_UP,Z1 LCALL MODE_PWM_UP Z4: JB SW_LR,Z1 SJMP START ;******************************************************** ; PWM MODE ;******************************************************** MODE_PWM_UP: PUSH ACC MOV A,PWM CJNE A,#60H,PW1 SJMP PW2 PW1: INC PWM MOV A,PWM ADD A,#00 DA A MOV PWM,A PW2: MOV R4,A LCALL SCAN_WAIT LCALL WRITE_EEPROM POP ACC RET MODE_PWM_DOWN: PUSH ACC MOV A,PWM CJNE A,#00H,PW3 SJMP PW6 PW3: DEC PWM MOV A,PWM ANL A,#0FH CJNE A,#0FH,PW4 PW4: MOV A,PWM JC PW5 ADD A,#10H SUBB A,#10H PW5: MOV PWM,A PW6: MOV R4,A LCALL SCAN-WAIT LCALL WRITE_EEPROM POP ACC RET MODE_LR: CLR LED_PWM LCALL DELAY_1S CPL P3.2 LCALL DELAY_1S RET SCAN_WAIT: ; Fehler es wurde SCAN_WAOT geschrieben MOV R3,#90 LCALL CONVERT QW: LCALL DISPLAY ;DIAPLAY LCALL PWM_MODE DJNZ R3,QW RET TABLE_SEGMENT: DB 01111111B ;0 DB 00001101B ;1 DB 10110111B ;2 DB 10011111B ;3 DB 11001101B ;4 DB 11011011B ;5 DB 11111011B ;6 DB 00001111B ;7 DB 11111111B ;8 DB 11011111B ;9 CONVERT: PUSH ACC MOV A,R4 SWAP A ANL A,#0FH MOV DPTR,#TABLE_SEGMENT MOVC A,@A+DPTR MOV BUF_SEG2,A MOV A,R4 ANL A,#0FH MOV DPTR,#TABLE_SEGMENT MOVC A,@A+DPTR MOV BUF_SEG2,A POP ACC RET DISPLAY: MOV P1,BUF_SEG1 CLR COM1 LCALL DELAY_SEGMENT SETB COM1 MOV P1,BUF_SEG2 CLR COM2 LCALL DELAY_SEGMENT SETB COM2 RET DELAY_SEGMENT: ;Fehler DELAY_SEGENT MOV DELAY_SEG,#00H DJNZ DELAY_SEG,$ RET WRITE_EEPROM: LCALL I2C_START MOV I2C_DATA,#EEPROM_CODE1 LCALL I2C_WR MOV I2C_DATA,#00H LCALL I2C_WR MOV I2C_DATA,PWM LCALL I2C_WR LCALL I2C_STOP RET READ_EEPROM: LCALL I2C_START MOV I2C_DATA,#EEPROM_CODE1 LCALL I2C_WR MOV I2C_DATA,#00H LCALL I2C_WR LCALL EEPROM_RD1 MOV PWM,I2C_DATA RET I2C_WR: PUSH ACC MOV A,I2C_DATA MOV R5,#08 I2C_WR_1: RLC A MOV SDA,C LCALL I2C_DELAY DJNZ R5,I2C_WR_1 SETB SDA LCALL I2C_DELAY SETB SCL LCALL I2C_DELAY JB SDA,I2C_WR_2 I2C_WR_2: CLR SCL POP ACC RET I2C_RD: PUSH ACC CLR A MOV R5,#08 I2C_RD_1: ACALL I2C_DELAY SETB SCL ACALL I2C_DELAY MOV C,SDA RLC A CLR SCL DJNZ R5,I2C_RD_1 MOV I2C_DATA,A POP ACC RET EEPROM_RD1: LCALL I2C_START MOV I2C_DATA,#EEPROM_CODE1+1 LCALL I2C_WR LCALL I2C_RD LCALL I2C_STOP RET I2C_NACK: SETB SDA LCALL I2C_CLK RET I2C_START: SETB SDA SETB SDA LCALL I2C_DELAY CLR SDA LCALL I2C_DELAY CLR SCL RET I2C_STOP: CLR SDA LCALL I2C_DELAY SETB SCL LCALL I2C_DELAY SETB SDA RET I2C_CLK: LCALL I2C_DELAY SETB SCL LCALL I2C_DELAY CLR SCL RET I2C_DELAY: MOV R6,#03 I2C_DELAY_1: NOP NOP DJNZ R6,I2C_DELAY_1 RET ;********************************************** ; Delay ;********************************************** DELAY_10MS: MOV R7,#10 DELAY_10MS_1: MOV R6,#0E6H DELAY_10MS_2: NOP NOP DJNZ R6,DELAY_10MS_2 DJNZ R7,DELAY_10MS_1 RET DELAY_100MS: MOV R7,#100 DELAY_100MS_1: MOV R6,#0E6H DELAY_100MS_2: NOP NOP DJNZ R6,DELAY_10MS_2 DJNZ R7,DELAY_10MS_1 RET DELAY_1S: MOV R5,#100 DELAY_1S_1: ACALL DELAY_10MS DJNZ R5,DELAY_1S_1 RET PWM_MODE: PUSH ACC PUSH 00H MOV TMOD,#10H MOV TL0,#0B0H ; Fehler TL0 null wurde mit O geschrieben MOV TH0,#0B0H SETB LED_PWM MOV SS200US,#00 MOV OUTPUT_PWM,#00 ;Fehler OUTPUT_PWM nicht deklariert SETB TR0 ;Fehler TR0 wurde mit O geschrieben CLR A DEL0: CJNE A,PWM,DEL1 CLR LED_PWM DEL1: JNB TCON.0,DEL1 INC SS200US MOV R0,SS200US CJNE R0,#05h,DEL1 ;GMDEL1 ???? MOV SS200US,#00 INC OUTPUT_PWM MOV A,OUTPUT_PWM ADD A,#00 DA A MOV OUTPUT_PWM,A CJNE A,#70H,DEL0 CLR TR0 ;Fehler TR0 wurde mit O geschrieben POP 00H POP ACC RET
Hi norad Vielen dank kann ich auch die hex file feur AT89c2051 Benutzen. Ich ich muss erst mal die plattine Ätzen damit ich die software testen kann Hasst du mir deine email falz die software nicht geht. MFG Martin
@Martin Hab Prog mal durch den Debugger laufen lassen und weitere Fehler aufgespürt. Im DELAY_SEGMENT gibt es folgende Anweisung DJNZ DELAY_SEG,$ ; Was ist das? Endlos oder wartet auf ereignis??? Ab hier läuft mein Debugger in einer Endlos - Schleife ------------------------------------------------------------------------ - ; ;******************************************************* ; DC Motor Cotrol : MCS-51 ; WWW.Guidecircuit.com ; MCU : AT89C1051 ;******************************************************* $INCLUDE 89C1051.mc COM1 BIT P3.7 COM2 BIT P1.0 SDA BIT P3.4 SCL BIT P3.3 LED_PWM BIT P3.5 SW_PWM_DOWN BIT P3.1 SW_PWM_UP BIT P3.0 SW_LR BIT P3.4 PWM EQU 09 I2C_DATA EQU 10 BUF_SEG1 EQU 11 BUF_SEG2 EQU 12 DELAY_SEG EQU 13 SS200US EQU 14 OUTPUT_PWM EQU 15 ; Ursprünglich OUTPUT EEPROM_CODE1 EQU 10100000B ; Ursprünglich EEPROM_CODE ;******************************************************* ; MAIN PROGRAM ;******************************************************* ORG 0000h MOV SP,#040H MOV P1,#11111111B MOV P3,#11111111B LCALL DELAY_100MS LCALL READ_EEPROM START: MOV R4,PWM Z1: LCALL CONVERT LCALL DISPLAY LCALL PWM_MODE Z2: JB PWM_DOWN,Z3 LCALL MODE_PWM_DOWN Z3: JB PWM_UP,Z1 LCALL MODE_PWM_UP Z4: JB SW_LR,Z1 SJMP START ; START hat gefehlt weiss aber nicht ob so richtig ist ;******************************************************** ; PWM MODE ;******************************************************** MODE_PWM_UP: PUSH ACC MOV A,PWM CJNE A,#60H,PW1 SJMP PW2 PW1: INC PWM MOV A,PWM ADD A,#00 DA A MOV PWM,A PW2: MOV R4,A LCALL SCAN_WAIT LCALL WRITE_EEPROM POP ACC RET MODE_PWM_DOWN: PUSH ACC MOV A,PWM CJNE A,#00H,PW3 SJMP PW6 PW3: DEC PWM MOV A,PWM ANL A,#0FH CJNE A,#0FH,PW4 PW4: MOV A,PWM JC PW5 ADD A,#10H SUBB A,#10H PW5: MOV PWM,A PW6: MOV R4,A LCALL SCAN-WAIT LCALL WRITE_EEPROM POP ACC RET MODE_LR: CLR LED_PWM LCALL DELAY_1S CPL P3.2 LCALL DELAY_1S RET SCAN_WAIT: ; Fehler es wurde SCAN_WAOT geschrieben MOV R3,#90 LCALL CONVERT QW: LCALL DISPLAY ;DIAPLAY LCALL PWM_MODE DJNZ R3,QW RET TABLE_SEGMENT: DB 01111111B ;0 DB 00001101B ;1 DB 10110111B ;2 DB 10011111B ;3 DB 11001101B ;4 DB 11011011B ;5 DB 11111011B ;6 DB 00001111B ;7 DB 11111111B ;8 DB 11011111B ;9 CONVERT: PUSH ACC MOV A,R4 SWAP A ANL A,#0FH MOV DPTR,#TABLE_SEGMENT MOVC A,@A+DPTR MOV BUF_SEG2,A MOV A,R4 ANL A,#0FH MOV DPTR,#TABLE_SEGMENT MOVC A,@A+DPTR MOV BUF_SEG2,A POP ACC RET DISPLAY: MOV P1,BUF_SEG1 CLR COM1 LCALL DELAY_SEGMENT SETB COM1 MOV P1,BUF_SEG2 CLR COM2 LCALL DELAY_SEGMENT SETB COM2 RET DELAY_SEGMENT: ;Fehler DELAY_SEGENT MOV DELAY_SEG,#00H DJNZ DELAY_SEG,$ ; Was ist das? Endlos oder wartet auf ereignis??? RET WRITE_EEPROM: LCALL I2C_START MOV I2C_DATA,#EEPROM_CODE1 LCALL I2C_WR MOV I2C_DATA,#00H LCALL I2C_WR MOV I2C_DATA,PWM LCALL I2C_WR LCALL I2C_STOP RET READ_EEPROM: LCALL I2C_START MOV I2C_DATA,#EEPROM_CODE1 LCALL I2C_WR MOV I2C_DATA,#00H LCALL I2C_WR LCALL EEPROM_RD1 MOV PWM,I2C_DATA RET I2C_WR: PUSH ACC MOV A,I2C_DATA MOV R5,#08 I2C_WR_1: RLC A MOV SDA,C LCALL I2C_DELAY DJNZ R5,I2C_WR_1 SETB SDA LCALL I2C_DELAY SETB SCL LCALL I2C_DELAY JB SDA,I2C_WR_2 I2C_WR_2: CLR SCL POP ACC RET I2C_RD: PUSH ACC CLR A MOV R5,#08 I2C_RD_1: ACALL I2C_DELAY SETB SCL ACALL I2C_DELAY MOV C,SDA RLC A CLR SCL DJNZ R5,I2C_RD_1 MOV I2C_DATA,A POP ACC RET EEPROM_RD1: LCALL I2C_START MOV I2C_DATA,#EEPROM_CODE1+1 LCALL I2C_WR LCALL I2C_RD LCALL I2C_STOP RET I2C_NACK: SETB SDA LCALL I2C_CLK RET I2C_START: SETB SDA SETB SCL ;SCL statt SDA LCALL I2C_DELAY CLR SDA LCALL I2C_DELAY CLR SCL RET I2C_STOP: CLR SDA LCALL I2C_DELAY SETB SCL LCALL I2C_DELAY SETB SDA RET I2C_CLK: LCALL I2C_DELAY SETB SCL LCALL I2C_DELAY CLR SCL RET I2C_DELAY: MOV R6,#03 I2C_DELAY_1: NOP NOP DJNZ R6,I2C_DELAY_1 RET ;********************************************** ; Delay ;********************************************** DELAY_10MS: MOV R7,#10 DELAY_10MS_1: MOV R6,#0E6H DELAY_10MS_2: NOP NOP DJNZ R6,DELAY_10MS_2 DJNZ R7,DELAY_10MS_1 RET DELAY_100MS: MOV R7,#100 DELAY_100MS_1: MOV R6,#0E6H DELAY_100MS_2: NOP NOP DJNZ R6,DELAY_100MS_2 ;Fehler! Ursprünglich DELAY_10MS_2 ??? DJNZ R7,DELAY_100MS_1 ;Fehler! Ursprünglich DELAY_10MS_1 ??? RET DELAY_1S: MOV R5,#100 DELAY_1S_1: ACALL DELAY_10MS DJNZ R5,DELAY_1S_1 RET PWM_MODE: PUSH ACC PUSH 00H MOV TMOD,#10H MOV TL0,#0B0H ; Fehler TL0 null wurde mit O geschrieben MOV TH0,#0B0H SETB LED_PWM MOV SS200US,#00 MOV OUTPUT_PWM,#00 ;Fehler OUTPUT_PWM nicht deklariert SETB TR0 ;Fehler TR0 wurde mit O geschrieben CLR A DEL0: CJNE A,PWM,DEL1 CLR LED_PWM DEL1: JNB TCON.0,DEL1 INC SS200US MOV R0,SS200US CJNE R0,#05h,DEL1 ;GMDEL1 ???? MOV SS200US,#00 INC OUTPUT_PWM MOV A,OUTPUT_PWM ADD A,#00 DA A MOV OUTPUT_PWM,A CJNE A,#70H,DEL0 CLR TR0 ;Fehler TR0 wurde mit O geschrieben POP 00H POP ACC RET ; End
@Martin!
>kann ich auch die hex file für AT89c2051 Benutzen?
NEIN! Aber im Anhang ist das Hexfile für den AT89c2051.
Leider unterstüzt Flip die µC nicht damit Du es übertragen kannst.
Aber ich denke Du wirst schon eine Tool dafür haben.
Gruß norad
HI norad Was meinst du mit Flip Aber ich kann schon der 89c2051 normal programmieren mit der der hex von dir. Gruss martin
@Martin Flip ist von Atmel siehe Anhang! Hast Du den Quellcode kontrolliert ob es so stimmt??
> Hast Du den Quellcode kontrolliert ob es so stimmt?? was erwartest Du?? den versteht er doch sowiso nicht. muss er auch nicht. er hat doch die gabe, andere leute für sich arbeiten zu lassen. siehe auch den 30euro-thread. Beitrag "Hallo wer möchte sich 30 Euro verdienen!?" mfg
Auf Solche Kommentare kann ich gerne Scheißen!!!!!!!!! Gruss Martin
Anfänger: Jemand der lernen will, wie etwas funktioniert und deshalb die Hilfe anderer braucht. Ausbeuter: Jemand, der andere sucht, die ihm kostenlos die Arbeit machen, um selber von dem Ergebnis zu profitieren. Wo würdest du dich einordnen?
Martin Rischmann wrote: > Auf Solche Kommentare kann ich gerne Scheißen!!!!!!!!! > Gruss Martin Du hast 'ne nette Ausdrucksweise. Darauf wartet die Welt. ...
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.