
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Hallo Volker! > > Die Assemblerroutinen in "om_i2c.bas" sind fest an die Portbelegung PORT[5] und PORT[6] gebunden. Die verwendeten Ports lassen sich also nicht so einfach ändern. Aber der Sourcecode der Assemblerroutinen liegt dem ZIP-Archiv bei. Bei Bedarf kannst Du ihn anpassen, mittels AS05 neu übersetzen und mit INLASM.EXE in die Tabellenform bringen. > > Ich habe in den nächsten Tagen ohnehin vor, ein Softwaremodul zu veröffentlichen, das die Open-Micro und Open-Midi um Extended Ports erweitert. Bei der Gelegenheit werde ich wahrscheinlich auch die Assemblerroutinen an den in neuen OCBASIC-Versionen integrierten 6808-Assembler anpassen. Dann man man die Ports leichter ändern. Allerdings lassen sich dann die neuen I²C-Routinen nicht mehr in CCBASIC nutzen. > > Viele Grüße > Dietmar Hallo Dietmar, danke für die schnelle Antwort. Ich habe jetzt die I2CREAD.ASM und die I2CWRITE.ASM neu kompiliert und mit INLASM.exe die Tabellen geschrieben, mit denen ich die OM_I2C.BAS geändert habe. Leider brachte dies nicht den gewünschten Erfolg. Ich habe von Assambler null Ahnung darum meine Frage: Was muss denn in den ASM-Files geändert werden um Port 3 und 4 oder Port 9 und 10 benutzen zu können? SCL equ 4 ;PTA4 = PORT[5] dies auf 2 setzen (Port 3) SDA equ 5 ;PTA5 = PORT[6] dies auf 3 setzen (Port 4) PORT equ $00 ;PORTA PORTA stimmt zumindest für Port 3 und 4 DDR equ PORT+4 ;DDRA was ist hiermit? org $fd00 ;dieser Code ist positionsunabhaengig i2c_write: bsr Pop ;Eintrag vom Rechenstack in den Akkumulator holen ;das Pop ist noetig, damit Stack aufgeraeumt bleibt ldx #$08 i2c_write_1 lsla ;1 ein Bit in das Carryflag schieben bcc i2c_write_2 ;3 bclr SDA,DDR ;4 SDA auf Eingang & high bra i2c_write_3 ;3 i2c_write_2 bclr SDA,PORT ;4 bset SDA,DDR ;4 SDA auf Ausgang & low i2c_write_3 bset SCL,PORT ;4 brn *+2 ;3 \ brn *+2 ;3 \ Thigh = 13 TZ = 4.0625 æs brn *+2 ;3 / bclr SCL,PORT ;4 / decx ;1 Tlow = 19, 20 oder 13 TZ bne i2c_write_1 ;3 bclr SDA,DDR ;4 SDA auf Eingang & high clra ;1 bset SCL,PORT ;4 brn *+2 ;3 brset SDA,PORT,i2c_write_4 ;5 ACK lesen deca ;1 i2c_write_4 bclr SCL,PORT ;4 ; bra Push ;ACK auf Stack Push ;Wert auf dem Stack speichern clrx swi Pop ;Wert vom Stack lesen (ist ein RealPop) ldx #1 swi Gruß Volker |
| Antwort schreiben |