..... alle Initialisierungen vorhanden.... ;------------------------------------------------------------------------------ ; Hardware TWI einstellen ;----------------------------------------------------------------------------- clr READ_FLG ldi r16,0x03 out TWSR,r16 ;TWPS (Prescaler) auf 1 setzen siehe Datenblatt Seite 170 ldi r16,0xFF out TWBR,r16 sei ; Interrupts global aktivieren ;----------------------------------------------------- ; Hauptprogramm ; Hauptprogramm ;---------------------------------------------------- loop: nop sbrc READ_FLG,0 ;Flags werden über die UART interrupts gesetzt rcall TWI_READ sbrc WRITE_FLG,0 rcall TWI_WRITE clr READ_FLG clr WRITE_FLG rjmp loop ;----------------------------------------------------------------------------- ; Hardware TWI READ ; Externer Speicher 24C65 ; Random Access ;----------------------------------------------------------------------------- TWI_READ: rcall TWI_START ;Start ldi r16,0b101000000 ;1010 Check 000 Adresse des Slave 0 Schreiben rcall TWI_Controll_Byte ; ldi r16,0x00 ;Zuerst die Adressen rauschreiben die gelesen werden soll rcall TWI_DATA ;Adresse High x00 rcall TWI_DATA ;Adresse Low x00 rcall TWI_START ;Neues Start zeichen ldi r16,0b10100001 ;Lesen rcall TWI_Controll_Byte in UART_temp,TWDR ;In TWDR steht automatisch nach obigen Befehl Erg. drin andi UART_temp,0xF8 rcall serout ;Über UART an PC ausgeben rcall TWI_STOP ;Stop ausgeben ret ;----------------------------------------------------------------------------- ; Hardware TWI WRITE ; Externer Speicher 24C65 ; Random Access: ;----------------------------------------------------------------------------- TWI_WRITE: rcall TWI_START ;Start ldi r16,0b10100000 ;1010 Check; 000 Adresse des Slave; 0 Schreiben rcall TWI_Controll_Byte ;Schreiben ldi r16,0x00 rcall TWI_DATA ;Adresse High x00 rcall TWI_DATA ;Adresse Low x00 ldi r16,68 ;Eine 5 soll an die Adresse 0x00 0x00 geschrieben werden rcall TWI_Controll_Byte rcall serout ;Über UART an PC ausgeben rcall TWI_STOP ;Stopzeichen ausgeben ret ;----------------------------------------------------------------------------- ; Hardware TWI START ;----------------------------------------------------------------------------- TWI_START: clr r16 ldi r16,(1<