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.
