I2C - Sample code

M

Maverickmax

Guest
Hei

Vet du hvor du får gratis prøve å bruke I2C med AT89C52 sjetonger?

Maverick Max

 
AT89C52 har ikke I2C grensesnitt, men du kan definere alle tilgjengelige pinnene ..
I dette eksempelet er de P3.6 og P3.7 ..

; RAM STED BRUKT I denne modulen 70H
; DETTE ER EN FUNGERER PROGRAMMET, testet på 24C04 SERIAL MINNE IC
; Den samme koden kan brukes for ANDRE I2C LED'S MED ENDRINGER.

WTCMD EQU 10100000B; 24C04 WRITE KOMMANDO
RDCMD EQU 10100001B; 24C04 READ KOMMANDO
ADDRS EQU 70H

SCL EQU P3.6; SERIAL CLOCK PIN
SDA EQU P3.7; SERIAL DATA PIN

...

Resten av koden finner du her:
http://www.keil.com/discuss/docs/thread2328.htm

Hilsen,
IanP

 
Hei

Jeg forstår kodene godt som vist nedenfor:Code:

; RAM STED BRUKT I denne modulen 70H

; DETTE ER EN FUNGERER PROGRAMMET, testet på 24C04 SERIAL MINNE IC

; Den samme koden kan brukes for ANDRE I2C LED'S MED ENDRINGER.
WTCMD EQU 10100000B; 24C04 WRITE KOMMANDO

RDCMD EQU 10100001B; 24C04 READ KOMMANDO

ADDRS EQU 70HSCL EQU P3.6; SERIAL CLOCK PIN

SDA EQU P3.7; SERIAL DATA PINORG 0000H

LJMP STARTORG 0030H

START:

MOV P1, # 01tMOV R1, # 55h;

MOV A, # 00; SKRIV dataene i R1 REGISTER INTO

MOV ADDRS, A; ADRESSE POINTED VED ADDRS INN I 24C04

LCALL SKRIV;LCALL L_DELAYMOV A, # 00;

MOV ADDRS, A; LES data fra 24C04 fra minnet

LCALL READ; STED POINTED BY ADDRS og lagrer i R2

MOV A, R2;MOV P1, A; Flytt RED TILBAKE data til P0LCALL L_DELAYLJMP START;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

, Dette brukes til å skrive INTO 24C04

; ARGUMENTS1 -> ADDRS => adresse for å bli skrevet inn i, IN 24C04 MEMORY

; ARGUMENTS2 -> R1 ==> Data som skal SKRIFTLIG

; RETURN -> INGENSKRIV:

MOV A, # WTCMD

CALL outsMOV A, ADDRS

CALL OUTMOV A, R1

CALL OUTCALL STOPRET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

; DENNE SUB rutine brukes til å lese data fra 24C04

; Argumenter -> ADDRS ==> adresse i 24C04 bør DATA leses fra.

; RETURN -> R2 (dataene som ble LES)

LES:

MOV A, # WTCMD

CALL outsMOV A, ADDRS

LCALL OUTMOV A, # RDCMD

LCALL outsLCALL IN

MOV R2, ALCALL STOPRET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

Ut:

MOV B, # 8

SETB SDA

SETB SCL

NOP

CLR SDA

NOP

CLR SCLOSLOOP:

RLC A

MOV SDA, C

SETB SCL

NOP

CLR SCL

DJNZ B, OSLOOP

SETB SDA

NOP

SETB SCL

NOP

CLR SCL

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

OUT:

MOV B, # 8

OLOOP:

RLC A

MOV SDA, C

SETB SCL

NOP

CLR SCL

DJNZ B, OLOOP

SETB SDA

NOP

SETB SCL

NOP

CLR SCL

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

IN:

MOV B, # 8

SETB SDA

INLOOP:

CLR SCL

NOP

SETB SCL

MOV C, SDA

RLC A

DJNZ B, INLOOP

CLR SCL

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

STOPP:

CLR SDA

NOP

SETB SCL

NOP

SETB SDA

LCALL DLAYms

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

DLAYms:

MOV R6, # 150

MOV B, # 00

MS1: DJNZ B, $, ((2 * 255) (2 * 255) * 150

DJNZ B, $; = 153 milli SEKUNDER

DJNZ R6, MS1

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

L_DELAY:

MOV R7, # 0AH; 153 MILLISECON DS * 10

LLL: LCALL DLAYms; 1,53 SEKUNDER

DJNZ R7, LLL

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

END
 
Jeg fant et bibliotek for GCC gjort for WinAVR, se i avrfreaks.Som jeg husker, har det to versjoner, maskinvare og programvare, velges via alternativene i Makefile.

jediheLagt etter 2 minutter:Vel, har jeg funnet det url:

h.. p: / / homepage.sunrise.ch / mysunrise / peterfleury / AVR-software.html # libs

Jeg brukte det i en fersk prosjekt, og det fungerte OK (maskinvaren versjon)

jedihe

 
hei folkens
koden fra
Maverickmax
fungerer bra (jeg bare bruke lese alternativet)
det er begrenset til graner 256 byte

ha en god dag

YUV
yaharoni@013.net.il

 
pls gå gjennom denne linken
h ** p: / / www.keil.com/discuss/docs/thread2328.htm

 

Welcome to EDABoard.com

Sponsor

Back
Top