I2c.dll en c

Signaler
Messages postés
5
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 février 2003
-
Messages postés
5
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 février 2003
-
j'aimerai avoir un source c de d'un dll d'un bus i2c 's'il vous plait. MERCI d'avance

6 réponses

Messages postés
9
Date d'inscription
mercredi 20 février 2002
Statut
Membre
Dernière intervention
24 janvier 2003

c pour implementer dans un microcontroleur ou pour le pc ? car j'ai un fais un prog en c et les fonctions de l'i2c sont en assembleur. si ca t'intéresse, dis le moi !
Messages postés
5
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 février 2003

je veux bien merci je dois le faire que en c mais ca me donnera une idée c pour un microcontrolleur
Messages postés
9
Date d'inscription
mercredi 20 février 2002
Statut
Membre
Dernière intervention
24 janvier 2003

je te retrouve ca et je te le file !
Messages postés
5
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 février 2003

Merci
Messages postés
9
Date d'inscription
mercredi 20 février 2002
Statut
Membre
Dernière intervention
24 janvier 2003

Le code est en asm51, pour un micro de la famille 8051 ou atmel. Fais moi savoir si t'as des problémes, mais ces fonctions marchent trés bien ! :)

;************declaration des fonctions publics**********

public _ecriture
public _lire
public _lirecan
public _ecriture_eeprom
public _lire_eeprom

;************declaraton des fonctions externe***********

extrn code (startup)
extrn code (ext0)
extrn code (ext1)
extrn code (tim0)

;*****************Constantes***********************

debut equ 8000h
READ equ 1
WRITE equ 0
ADR equ r7
VAL equ r5
RESUL equ r7
FADDR equ r7
addr_hi equ r5
zdata equ r3
SDA bit p1.4
SCL bit p1.0

;***************zone de data***********************

dseg at 30h
ERROR: ds 1

;**************table de vecteur**********************

cseg at debut
ljmp startup
org debut+3
ljmp ext0
org debut+13h
ljmp ext1
org debut+0Bh
ljmp tim0
org debut+80h

;*********************ecriture**********************
; void ecriture(octet @,val)

_ecriture: ;fonction qui envoi une donnee
mov ERROR,#0
call start ;val a un esclave d'@ adr
jnc ok1
inc ERROR
ok1:
mov a,ADR
add a,#WRITE
call shout
jnc ok2
inc ERROR
ok2:
mov a,VAL
call shout
jnc ok3
inc ERROR
ok3:
call stop
mov RESUL,ERROR
ret

;*********************lire*************************
; val lire(@)

_lire: ;fonction qui lit une donnee val
call start ;sur l'esclave d'@ adr
mov a,ADR
add a,#READ
call shout
call shin
mov RESUL,a
call NAK
call stop
ret

;*********************lire_can**********************
; val lire_can(@)

_lirecan: ;fonction qui lit une donnee val
call start ;sur l'esclave d'@ adr

mov a,ADR
add a,#READ
call shout
call shin
mov RESUL,a
call ACK
call shin
mov RESUL,a
call NAK
call stop
ret

;**************Fonction standart I2C******************

start:

setb SDA
setb SCL

; Verification bus valide

jnb SDA, x40
jnb SCL, x40
nop
clr SDA
nop
nop
nop
nop
nop
clr SCL
clr c
jmp x41
x40:
setb c
x41:
ret

stop:

clr SDA
nop
nop
setb SCL
nop
nop
nop
nop
nop
setb SDA
ret

shout:

push b
mov b, #8
x42:
rlc a
mov SDA, c
nop
setb SCL
nop
nop
nop
nop
clr SCL
djnz b, x42
setb SDA
nop
nop
setb SCL
nop
nop
nop
nop
mov c, SDA
clr SCL
pop b
ret

shin:

setb SDA
push b
mov b, #8
x43:
nop
nop
nop
setb SCL
nop
nop
mov c, SDA
rlc a
clr SCL
djnz b, x43
pop b
ret

ACK:

clr SDA
nop
nop
setb SCL
nop
nop
nop
nop
clr SCL
ret

AK:
setb SDA
nop
nop
setb SCL
nop
nop
nop
nop
clr SCL
ret
_ecriture_eeprom:
call start
jc x49
;rl a
mov a, FADDR
clr acc.0
call shout
jc x48
mov a, addr_hi
call shout
jc x48
mov a, zdata
call shout
jc x48
clr c
x48:
call stop
x49:
jnc ok4
inc RESUL
ok4:
ret

_lire_eeprom:

push b
mov b, a
call start
jc x47
;rl a
mov a, FADDR
clr acc.0
call shout
jc x46
mov a, addr_hi
call shout
jc x46
mov a, b
call read_current
jmp x47
x46:
call stop
x47:
mov RESUL,a
pop b
ret

read_current:

call start
jc x45
;rl a
mov a, FADDR
setb acc.0
call shout
jc x44
call shin
call NAK
clr c
x44:
call stop
x45:
ret
end
Messages postés
5
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
28 février 2003

MERCI