Hi,
hab jetzt leider bald 2 Monate nix mehr im C-Control Assembler gemacht da ich mir derzeit etwas mehr den Atmel anschaue. Von daher hab ich die Portadressen und Bezeichnungen nicht mehr so im Kopf.
Aber wie es aussieht verwendest Du glaub die falschen Adressen. Hab mal kurz in mein letztes Listing gelinst, da steht folgendes
PORTB .EQU $01 ;PortB
DIRB .EQU $05 ;PortBdir
Also das solltest du schon mal ändern. Und dann solltest du beim kommentieren möglichst auch imme rdie Bit´s des Ports nennen, denn die Nummerbezeichnung bei der C-Control ist manchmal etwas verwirrend. Von dahe rweiss ich jetzt nicht ob du den Port schaltest den du auch willst. Am besten und übersichtlichsten ist es wenn du auch das Datenrichtungsregister mit BSET setzt. Ansonsten stimmt es wohl, bset setzt immer auf 1 !
Hier hast du mal Auszug aus meinem letzten Listing, ist zwar hinsichtlich Bytegröße nicht sonderlich optimiert, aber einigermaßen übersichtlich. Vielleicht hilft es dir
Gruß FrankCode:;Ansteuerung eines PCF8574 ber SDA und SCL ;Verwendung des vorhandenen I2C-Bus I2CAdr .EQU $0A1 ;Adresse I2CDat .EQU $0A2 ;Adresse SensorDatenA .EQU $0A3 ;PCF Baustein 1 vorne linken und rechten 4 SensorDatenB .EQU $0A4 ;PCF Baustein 2 Seiten und Mitte vorne PCF3Befehl .EQU $0A5 ;PCF Baustein 3 Lichtschranke LSchritte .EQU $0A6 HSchritte .EQU $0A7 .org $101 ;EEPROM vom Bus abmelden I2C jsr $08BB ;I2C_ReadLast ;Schreibzugriff auf PCF8574 jsr I2C_Start lda I2CAdr ;Adresse PCF8574 lesen jsr I2C_Write lda I2CDat ;Daten lesen jsr I2C_Write jsr $08E5 ;I2C_Stop ;Lesezugriff auf PCF8574 jsr I2C_Start lda I2CAdr ;Adresse lesen inca ;Lesebit setzen jsr I2C_Write jsr $086F ;I2C_Read sta I2CDat ;Daten speichern jsr $08BB ;I2C_ReadLast ;EEPROM wieder anmelden ldx #$0A0 ;Adresse 24C65, write jsr $083C ;I2C_Start ldx $066 ;AdrCounter Hi jsr $0846 ;I2C_Write ldx $067 ;AdrCounter Lo jsr $0846 ;I2C_Write ldx #$0A1 ;Adresse 24C65, read jsr $083C ;I2C_Start rts PORT .EQU $00 ;PortA DIR .EQU $04 ;PortAdir SDA .EQU 0 ;Port A.0 SCL .EQU 1 ;Port A.1 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 ;Schrittmotor vorwärts PORTB .EQU $01 ;PortB DIRB .EQU $05 ;PortBdir LMOTOR .EQU 4 ;Port B.5 RMOTOR .EQU 5 ;Port B.6 PCF1 .EQU $70 PCF2 .EQU $72 PCF3 .EQU $74 Vor ldx #250 ;unnötig VorA jsr Pulse jsr Pause jsr SensorAbfragen lda SensorDatenA ;Vorne IR Sensoren cmp #255 bne Fertig lda SensorDatenB ;Vorne mittlere IR Sensor and #16 cmp #16 bne Fertig lda PCF3Befehl ;Vorne mittlere IR Sensor and #8 cmp #8 bne Fertig bra VorA ;Immer springen Fertig rts Pulse BSET LMOTOR,DIRB ;Als Ausgang schalten BSET RMOTOR,DIRB ;Als Ausgang schalten BCLR LMOTOR,PORTB BCLR RMOTOR,PORTB BSET LMOTOR,PORTB BSET RMOTOR,PORTB inc LSchritte ;Schritte zählen bne Pulse1 inc HSchritte Pulse1 RTS Pause Lda #2 pause1 ldx #255 pause2 decx bne pause2 deca bne pause1 rts SensorAbfragen lda #PCF1 sta I2CAdr lda #255 sta I2CDat jsr I2C lda I2CDat sta SensorDatenA lda #PCF2 sta I2CAdr lda #255 sta I2CDat jsr I2C lda I2CDat sta SensorDatenB lda #PCF3 sta I2CAdr lda PCF3Befehl ora #8 ;Lichtschranke Input sta I2CDat jsr I2C lda I2CDat sta PCF3Befehl rts .end






 
					
					
					
						 Zitieren
Zitieren 
			
			
Lesezeichen