home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 April / CHIP4_98.ISO / software / ccconrad / basic.exe / CHIP / Programme.Bas / ASSEMBL / I2C.ASM < prev    next >
Encoding:
Assembly Source File  |  1997-04-22  |  2.6 KB  |  115 lines

  1.  
  2. PORT  .EQU  $02    ;PortC
  3. DIR   .EQU  $06    ;PortCdir
  4. SDA   .EQU  0      ;Port 9
  5. SCL   .EQU  1      ;Port 10
  6.  
  7.         .org $101
  8.         jsr I2C_Start
  9.         lda $0A1       ;Adresse lesen
  10.         jsr I2C_Write
  11.         lda $0A2       ;Daten lesen
  12.         jsr I2C_Write
  13.         jsr I2C_Stop
  14.         jsr I2C_Start
  15.         lda $0A1       ;Adresse lesen
  16.         inca           ;Lesebit setzen
  17.         jsr I2C_Write
  18.         jsr I2C_Read
  19.         jsr I2C_NoAck
  20.         sta $0A2     ;Daten speichern
  21.         rts
  22.  
  23.  
  24. I2C_Start  BSET  SDA,DIR ; SDA hi ausgeben
  25.          BSET  SDA,PORT  ; Vorbereiten der Startbed.
  26.          BSET  SCL,PORT  ; SCL hi falls lo
  27.          BCLR  SDA,PORT  ; SDA lo -> STARTBEDINGUNG
  28.          BCLR  SCL,PORT  ;
  29.          RTS
  30.  
  31.  
  32. I2C_Write  BSET  SDA,DIR    ; SDA out
  33.          LDX  #8         ; init loop
  34. Nextbit  ROLA
  35.          BCC   Lobit     ;
  36.          BSET  SDA,PORT  ; hi bit
  37.          BRA   Clock
  38. Lobit    BCLR  SDA,PORT  ; lo bit
  39. Clock    BSET  SCL,PORT  ; scl hi
  40.          BCLR  SCL,PORT  ; scl lo
  41.          DEX
  42.          BNE   Nextbit   ; loop
  43.          BCLR  SDA,DIR   ; sda als Eingang
  44.          BSET  SCL,PORT  ; scl hi
  45.          BCLR  SCL,PORT
  46.          RTS
  47.  
  48.  
  49. I2C_Read   BCLR  SDA,DIR    ; sda als Eingang
  50.          CLRA
  51.          LDX  PORT
  52.          RORX
  53.          ROLA
  54.          BSET  SCL,PORT  ; scl hi
  55.          BCLR  SCL,PORT
  56.          LDX  PORT
  57.          RORX
  58.          ROLA
  59.          BSET  SCL,PORT  ; scl hi
  60.          BCLR  SCL,PORT
  61.          LDX  PORT
  62.          RORX
  63.          ROLA
  64.          BSET  SCL,PORT  ; scl hi
  65.          BCLR  SCL,PORT
  66.          LDX  PORT
  67.          RORX
  68.          ROLA
  69.          BSET  SCL,PORT  ; scl hi
  70.          BCLR  SCL,PORT
  71.          LDX  PORT
  72.          RORX
  73.          ROLA
  74.          BSET  SCL,PORT  ; scl hi
  75.          BCLR  SCL,PORT
  76.          LDX  PORT
  77.          RORX
  78.          ROLA
  79.          BSET  SCL,PORT  ; scl hi
  80.          BCLR  SCL,PORT
  81.          LDX  PORT
  82.          RORX
  83.          ROLA
  84.          BSET  SCL,PORT  ; scl hi
  85.          BCLR  SCL,PORT
  86.          LDX  PORT
  87.          RORX
  88.          ROLA
  89.          BSET  SCL,PORT  ; scl hi
  90.          BCLR  SCL,PORT
  91.          RTS
  92.  
  93. I2C_Ack
  94.          BSET  SDA,DIR
  95.          BCLR  SDA,PORT  ; ACK
  96.          BSET  SCL,PORT  ; scl hi
  97.          BCLR  SCL,PORT  ; scl lo
  98.          RTS
  99.  
  100. I2C_NoAck
  101.          BSET  SDA,DIR
  102.          BSET  SDA,PORT  ; NoACK
  103.          BSET  SCL,PORT  ; scl hi
  104.          BCLR  SCL,PORT  ; scl lo
  105.          RTS
  106.  
  107.  
  108. I2C_Stop  BSET  SDA,DIR  ; SDA out
  109.          BCLR  SDA,PORT  ; low
  110.          BSET  SCL,PORT  ; scl high
  111.          BSET  SDA,PORT  ; STOPBEDINGUNG
  112.          RTS
  113.  
  114. .end
  115.