Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Rückmeldungen vom i2c-Bus Kategorie: Programmierung ASM (von Niederfaehrer - 30.01.2009 19:04)
Niederfaehrer nutzt:  CC1-Unit V1.1
Hallo,  kann mir jemnad helfen?

ich habe aus einem Buch diese .Asm Datei in eine C-Control geladen um PC8574 auszlesen.
Die Werte die ich bekomme entsprechen nicht dem erwarteten Byte Muster sondern haben folgendes System.

1,3,6,12,24 bis 192

Unter Basic funktioniert die Schaltung jedoch.

PORT  .EQU  $02    ;PortC
DIR   .EQU  $06    ;PortCdir
SDA   .EQU  0      ;Port 9
SCL   .EQU  1      ;Port 10

        .org $101
        jsr I2C_Start
        lda $0A1       ;Adresse lesen
        jsr I2C_Write
        lda $0A2       ;Daten lesen
        jsr I2C_Write
        jsr I2C_Stop
        jsr I2C_Start
        lda $0A1       ;Adresse lesen
        inca           ;Lesebit setzen
        jsr I2C_Write
        jsr I2C_Read
        jsr I2C_NoAck
        sta $0A2     ;Daten speichern
        rts


I2C_Start  BSET  SDA,DIR ; SDA hi ausgeben
         BSET  SDA,PORT  ; Vorbereiten der Startbed.
         BSET  SCL,PORT  ; SCL hi falls lo
         BCLR  SDA,PORT  ; SDA lo -> STARTBEDINGUNG
         BCLR  SCL,PORT  ;
         RTS


I2C_Write  BSET  SDA,DIR    ; SDA out
         LDX  #8         ; init loop
Nextbit  ROLA
         BCC   Lobit     ;
         BSET  SDA,PORT  ; hi bit
         BRA   Clock
Lobit    BCLR  SDA,PORT  ; lo bit
Clock    BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT  ; scl lo
         DEX
         BNE   Nextbit   ; loop
         BCLR  SDA,DIR   ; sda als Eingang
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         RTS


I2C_Read   BCLR  SDA,DIR    ; sda als Eingang
         CLRA
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         LDX  PORT
         RORX
         ROLA
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT
         RTS

I2C_Ack
         BSET  SDA,DIR
         BCLR  SDA,PORT  ; ACK
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT  ; scl lo
         RTS

I2C_NoAck
         BSET  SDA,DIR
         BSET  SDA,PORT  ; NoACK
         BSET  SCL,PORT  ; scl hi
         BCLR  SCL,PORT  ; scl lo
         RTS


I2C_Stop  BSET  SDA,DIR  ; SDA out
         BCLR  SDA,PORT  ; low
         BSET  SCL,PORT  ; scl high
         BSET  SDA,PORT  ; STOPBEDINGUNG
         RTS

.end

 Antwort schreiben

Bisherige Antworten: