CS data 20h THI data 40h TLW data 41h TDA data 42h Wert data 23h EWT bit 05h lc64 data 21h org 0x0000 ljmp STARTUP org 0x0003 NOP NOP NOP NOP NOP NOP Output: CLR P1.0 ;CS Ausgabe routine MOV A, CS ;CS MOVX @R0,A ;in s 374 schreiben SETB P1.0 RET Zeit1: CLR TF0 ;Timer überlauf waitz1: JNB TF0, waitz1 ;warten DJNZ R5, Zeit1 ;schleife wiederholen? RET T69bb: MOVX A,@R0 ;Busy Bit lesen ANL A, #02 ; CJNE A, #0x02, T69bb RET T69out: LCALL T69bb CLR 0x05 LCALL Output MOV A, THI MOVX @R0,A SETB 0x05 LCALL Output LCALL T69bb CLR 0x05 LCALL Output MOV A, TLW MOVX @R0,A SETB 0x05 LCALL Output LCALL T69bb MOV A, TDA MOVX @R0,A RET ASC69: PUSH CS ; CS reg retten ANL CS,#0xF0; High Nibble filtern SETB 0x02 ; CS display LCALL Output ;senden MOV A,Wert ; Gesicherter Wert holen SWAP A ; Nibbles vertauschen ANL A,#0x0F ;Wichtiger Wert filtern CLR C ;carry löschen für richtgen addiodion s wert CJNE A,#0x0A,ASC691 ASC691: JNC ASC692 ADD A,#0x10 ;addiere zum wert für asc t6369 SJMP ASC693 ASC692: ADD A,#0x17 ASC693: MOV TLW,A ;ergebnis vorbereiten MOV TDA,#0xC0 ;Befehl für display LCALL T69out MOV A,Wert ; Gesicherter Wert holen ANL A,#0x0F ;Wichtiger Wert filtern CLR C ;carry löschen für richtgen addiodion s wert CJNE A,#0x0A,ASC694 ;wert prüfen ASC694: JNC ASC695 ADD A,#0x10 ;add wert für 0-9 SJMP ASC696 ASC695: ADD A,#0x17 ; add wert für A-F ASC696: MOV TLW,A ;ergebnis vorbereiten MOV TDA,#0xC0 ;Befehl für display LCALL T69out POP CS LCALL Output RET lcwrite: CLR ACC.2 ; set EESK MOVX @R0,A SETb ACC.2 ; clear EESK MOVX @R0,A RET org 0x0200 STARTUP: clr p1.2 MOV SP,#0x70 ;Stack pointer lage ändern MOV TMOD, #0x01 ;Zeitverzögerung nach dem Reset MOV TH0, #0x00 ; MOV TL0, #0x00 ; SETB TR0 ;Start Zeitver. MOV CS, #0x73 ;select T6963 R20 reg vorbereiten für cs routine LCALL Output MOV a, #0xFF ;Reset vorbereitung MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 setb p1.2 MOV CS, #0x0F ;Reset t6963 LCALL Output ;Reset Ausgabe MOV R5, #0x05 LCALL Zeit1 MOV CS, #0x74 LCALL Output clr p1.2 MOV R5, #0x20 LCALL T69bb ;Ab hier beginnt die install des t6963 BusyBit sub r MOV A, #10010101b ; MOVX @R0,A ; LCALL T69bb MOV A, #0x80 ; MOVX @R0,A LCALL T69bb ; MOV A, #0xA7 ; MOVX @R0,A MOV THI, #0x00 ; MOV TLW, #0x00 ; MOV TDA, #0x21 ; LCALL T69out ; MOV THI, #0x00 ; MOV TLW, #0x00 ; MOV TDA, #0x22 ; LCALL T69out ; MOV THI, #0x00 ; MOV TLW, #0x00 ; MOV TDA, #0x24 ; LCALL T69out ; MOV THI, #0x00 ; MOV TLW, #0x00 ; MOV TDA, #0x40 ; LCALL T69out ; MOV THI, #0x14 ; MOV TLW, #0x00 ; MOV TDA, #0x41 ; LCALL T69out ; MOV THI, #0x00 ; MOV TLW, #0x02 ; MOV TDA, #0x42 ; LCALL T69out ; MOV R7, #0x7F ;Display Löschen PA: MOV TLW, #0x00 ; MOV THI, #0x00 ; MOV TDA, #0xC0 ; LCALL T69out ; DJNZ R7,PA MOV THI, #0x00 ;Display adresse 0 MOV TLW, #0x00 ; MOV TDA, #0x24 ; LCALL T69out ; MOV CS, #0x79 ; CS RTL LCALL Output MOV R0,#0x00 MOV A,#0x21 ; page 0 Stop RX TX MOVX @R0,A MOV R0,#0x0A MOV A,#0x00 ; counter low MOVX @R0,A MOV R0,#0x0B MOV A,#0x00 ; counter high MOVX @R0,A MOV R0,#0x0C MOV A,#0x04 ; RCR MOVX @R0,A MOV R0,#0x0D MOV A,#0x02; tcr MOVX @R0,A MOV R0,#0x0E MOV A,#0x58 ; tcr MOVX @R0,A MOV R0,#0x01 MOV A,#0x46 ; rx start MOVX @R0,A MOV R0,#0x04 MOV A,#0x46 ;tpsr MOVX @R0,A MOV R0,#0x03 MOV A,#0x02 ;bnry rx start MOVX @R0,A MOV R0,#0x02 MOV A,#0x60 ;pstop rxstop MOVX @R0,A MOV R0,#0x06 MOV A,#0x00 ; byte count reg msb MOVX @R0,A MOV R0,#0x05 MOV A,#0x00 ; byte count reg lsb MOVX @R0,A MOV R0,#0x07 MOVX A,@R0 ; clear interrupt s MOVX @R0,A MOV R0,#0x00 MOV A,#0x61 ;page1 MOVX @R0,A MOV R5, #0x20 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x07 ; curr MOV A,#0x46 MOVX @R0,A MOV A,#0x00 MOV R0,#0x06 ;par6 MOVX @R0,A MOV A,#0x50 MOV R0,#0x05 ;par5 MOVX @R0,A MOV A,#0xfe MOV R0,#0x04 ;par4 MOVX @R0,A MOV A,#0x18 MOV R0,#0x03 ;par3 MOVX @R0,A MOV A,#0x9e MOV R0,#0x02 ;par2 MOVX @R0,A MOV A,#0x10 MOV R0,#0x01 ;par1 MOVX @R0,A MOV A,#0xFF MOV R0,#0x08 ; mar0 MOVX @R0,A MOV A,#0xFF MOV R0,#0x09 ; mar1 MOVX @R0,A MOV A,#0xFF MOV R0,#0x0A ; mar2 MOVX @R0,A MOV A,#0xFF MOV R0,#0x0B ; mar3 MOVX @R0,A MOV A,#0xFF MOV R0,#0x0C ; mar4 MOVX @R0,A MOV A,#0xFF MOV R0,#0x0D ; mar5 MOVX @R0,A MOV A,#0xFF MOV R0,#0x0E ; mar6 MOVX @R0,A MOV A,#0xFF MOV R0,#0x0F ; mar7 MOVX @R0,A MOV R5, #0x20 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R2,#0x06 MOV R0,#0x06 tes9: MOVX a,@R0 MOV wert,A LCALL asc69 DEC R0 DJNZ R2,tes9 ljmp halt ;ab hier endlos schleife !!!! MOV R0,#0x00 MOV A,#0xE1 ;page 3 MOVX @R0,A ;schreib befehl MOV R0,#0x01 MOV A,#0x80 ;93lc64 prog mode MOVX @R0,A SETB ACC.3 ;eecs SETB ACC.1 ;eedi LCALL lcwrite LCALL lcwrite CLR ACC.1 ;eedi LCALL lcwrite MOV lc64,#0x00 ;Ethernet ID im 94lc64 PUSH ACC MOV A,lc64 RL A RL A MOV lc64,A POP ACC MOV R3,#0x06 ;adresse senden Add63: PUSH ACC MOV A,lc64 RLC A MOV lc64,A POP ACC MOV acc.1,C MOVX @R0,A LCALL lcwrite DJNZ R3,Add63 MOV R1,#0x30 ;MAC adresse im intern RAM MOV R4,#0x0a ;anzahl der zu lesenden bytes ADD63ii: MOV R3,#0x08 ;8 bits lesen des 93lc64 ADD63i: LCALL lcwrite PUSH ACC MOVX A,@R0 RRC A MOV A,lc64 RLC A MOV lc64,A POP ACC DJNZ R3,ADD63i PUSH ACC MOV A,lc64 MOV @R1,A INC R1 POP ACC DJNZ R4,ADD63ii MOV R2,#0x05 ;Routine zur MAC umstellen MOV R1,#0x31 ; in die richtige reihenfolge MOV R0,#0x30 macrot: MOV A,@R0 XCH A,@R1 MOV @R0,A INC R1 INC R1 INC R0 INC R0 DJNZ R2,macrot MOV R1,#0x30 ;MAC Adresse in das display schreiben MOV R2,#0x0a macaus: MOV A,@R1 MOV wert,A LCALL ASC69 INC R1 DJNZ R2,macaus ;test MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x01 MOV A,#0x8F ;93lc64 prog mode MOVX @R0,A MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV A,#0x80 ;93lc64 prog mode MOVX @R0,A SETB ACC.3 ;eecs SETB ACC.1 ;eedi LCALL lcwrite LCALL lcwrite CLR ACC.1 ;eedi LCALL lcwrite MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x01 ;rtl in normalen modus setzen MOV A,#0x00 MOVX @R0,A next: MOV R0,#0x00 MOV A,#0xe1 ;page3 MOVX @R0,A MOV R5, #0x25 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x04 MOVX A,@R0 mov wert,A LCALL ASC69 MOV R0,#0x00 MOV A,#0x61 ;page1 MOVX @R0,A MOV R5, #0x25 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 next1: MOV R2,#0x06 MOV R0,#0x06 test9: MOVX a,@R0 MOV wert,A LCALL asc69 DEC R0 DJNZ R2,test9 LJMP halt ;ab hier ist der code noch nicht fertig MOV R0,#0x18 MOV A,#0xFF MOVX @R0,A MOV R5, #0x05 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0, #0x00 MOV A, #0x21 ; page 0 Stop RX TX MOVX @R0,A MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x0E ;page 0+DCR(Data Configuration Register) MOV A,#0x58 ; MOVX @R0,A MOV R0, #0x0A ;page 0+RBCR0(Remote Byte Count Registers) MOV A, #0x00 ; MOVX @R0,A MOV R0, #0x0B ;page0 + RBCR1(Remote Byte Count Registers) MOV A, #0x00 ; MOVX @R0,A MOV R0,#0x0C ;page0+RSR: Receive Status Register MOV A, #0x04 MOVX @R0,A MOV R0,#0x04 ;page0+TSR: Transmit Status Register MOV A,#0x46 MOVX @R0,A MOV R0,#0x0D ;page0+TCR: Transmit Configuration Register MOV A,#0x02 MOVX @R0,A MOV R0,#0x01 ;page0+Pstart MOV A,#0x46 MOVX @R0,A MOV R0,#0x03 ;page0+BNRY MOV A,#0x46 MOVX @R0,A MOV R0,#0x02 ;page0+Pstop MOV A,#0x60 MOVX @R0,A MOV R0,#0x00 MOV A,#0x61 ;page1 MOVX @R0,A MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x07 MOV A,#0x46 MOVX @R0,A MOV R2,#0x06 MOV R0,#0x06 test8: MOVX a,@R0 MOV wert,A LCALL asc69 DEC R0 DJNZ R2,test8 MOV R0,#0x00 MOV A,#0x21 MOVX @R0,A MOV R0,#0x0E MOV A,#0x58 MOVX @R0,A MOV R0,#0x00 MOV A,#0x22 MOVX @R0,A MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x07 MOVX A,@R0 MOVX @R0,A MOV R0,#0x0F MOV A,#0x11 MOVX @R0,A MOV R0,#0x0D MOV A,#0x00 MOVX @R0,A MOV R0,#0x00 MOV A,#0x22 MOVX @R0,A MOV R5, #0x01 ;Länge,Anzahl der Zeitverzögerung LCALL Zeit1 MOV R0,#0x04 MOVX A,@R0 MOV Wert,A LCALL ASC69 Halt: SJMP Halt END