• No results found

Lagg upp startadress

Initiera ”turbo mode”

Initiera port A och C

Vanta på initieringsdata som ska skickas till A/D

Initiera A/D

Ta in 63 byte data från A/D via databussen

Ladda pipan för sändning. Ta in 64 byte igen

Kolla att pipan är tom Vänta på första signal

Ta in en byte

Vänta på signal

$NOMOD51 ;tabort forutbestamda 8051 registers

CSEG AT 0 ; absolute Segment at Address 0 LJMP start ; Hoppa over interrupt vektorena0

;

---; org 200H

start: mov SP,#STACK-1 ; stack

;

;;

mov a,CKCON

anl a,#11111000b ; snabbaste MOVX cycles--b2b1b0=000 mov CKCON,a

mov dptr,#FASTXFR

mov a,#01000000b ; b7 0 ingen snabb ISO

; b6 1 aktivera snabb BULK

; b5 0 FRD# aktivt lag

; valj Pa5 till turbo transfer strobe

;

;setb uisbcs.7 ; alternate mode 1 mov dptr,#PORTACFG movx a,@dptr

orl a,#00110000b ; frd och fwr movx @dptr,a

mov dptr,#OEA

mov a,#11001111b ; 1 = ut. 1 betyder att det blir en utågng movx @dptr,a

mov dptr,#OUTA ; 3 instruktioncykler mov a,#11111111b ; 2 instruktionscykler movx @dptr,a ; 2 instruktioncykler

mov dptr,#OUTC

mov a,#11111111b ; 1 = 5 V movx @dptr,a

;

; Polla ingangen tills initiering paborjas

;

inloop: mov dptr,#OUT2CS movx a,@dptr

jb acc.1,inloop ; EP2OUT is busy++keep looping

;

; Borja inititeringen

;

mov dptr,#OUTA ; 3 cycles

mov a,#00000000b ; dags for inititering (TFS) ligger lag vid initiering movx @dptr,a ; 2 cycles

; Hamtar in data fran PC:n. Gor en OR pa det med #01110000 vilket gor att datat kommer

; ut pa bitarna 0-3. Bitarna 4-6 ar genererar klocksignalen. Bit 7 lagger sig lag under initiering.

; Samma procedur gors 16 ganger. Detta skullle kunna ske med en loop men det gora att klockfrekvensen

; blir lagre. Vi efterstravar sa hog klockfrekvens som mojligt.

mov dptr, #OUT2BUF ; Hamtar in byte nr 1 som kommit in fran PC:n movx a,@dptr

orl a,#01110000b ; 2 cycles ger initieringsrekvens pa 24 cycles => 250kHz

;mov a, r6

mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

; 4 stycken dummys har lagts till så att utsignalen blir symmetrisk

nop ; dummy 1 cycles

mov r6, 2 ; dummy 2 cycles mov r6, 2 ; dummy 2 cycles mov r6 ,2 ; dummy 2 cycles anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+1 ; 3 cycles

movx a,@dptr ; 2 cycles

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+2 movx a,@dptr

orl a,#01110000b ; 2 cycles

movx @dptr,a ; 2 cycles

nop ; 1 cycles

mov r6, 2 ; dummy 2 cycles mov r6 ,2 ; dummy 2 cycles anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+3 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+4 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+5 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6

nop ; 1 cycles mov r6, 2 ; dummy 2 cycles

mov r6 ,2 ; dummy 2 cycles anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+7 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+8 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+9 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+10 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6

mov dptr,#OUTC ; 3 cycles

nop ; 1 cycles mov r6, 2 ; dummy 2 cycles

mov r6 ,2 ; dummy 2 cycles anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+11 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+12 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+13 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles

mov r6, 2 ; dummy 2 cycles mov r6 ,2 ; dummy 2 cycles anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles movx @dptr,a ; 2 cycles

mov dptr, #OUT2BUF+15 movx a,@dptr

orl a,#01110000b ; 2 cycles

;mov a, r6 anl a,#00001111b ; 2 cycles mov dptr,#OUTC ; 3 cycles

mov a,#11111111b ;Slut med inititering (TFS hog ) movx @dptr,a ; 2 cycles

;;;;;;;;;;;; MATLOOP ;;;;;;;;;;;;;;;;;;;;;;;;;;

mov dptr,#AUTOPTRH ; initialisera autopointer till pipa 2 IN2BUF.

;Laser in hoga adressen till ;“turbo mode”

mov a,#HIGH(IN4BUF) movx @dptr,a

loop:

mov r7,#63 ;Start the filling of ep 4 ; Lagger 64 till register som anvands for nerrrakning mov dptr,#AUTOPTRL ; initialisera autopointer till pipa 2 IN2BUF

;Laser in laga adressen till ;“turbo mode”

mov a,#LOW(IN4BUF) movx @dptr,a

w1: mov dptr,#PINSC ; poll the interrupt Lagger sig och vantar pa att interrupt movx a, @dptr ; denna koll tar 9 st instruktionscyklar

jnb acc.3,w1

wa: mov dptr,#IN4CS ; poll the EP4-IN Status

; Kollar om pipan ar ledig skrivning maste goras nar den ar ledig movx a,@dptr

jb acc.1,wa ; hog ? Fortsatt loopa

mov dptr,#AUTODATA ; anvander nu IN2BUF som en FIFO

movx @dptr,a; Denna rutin laser in det som finns pa databussen ”turbo transfer”

; Nu hoppar den in i en rutin som laser in data fran databussen efter att den blivit last en gang for varje ; ; ;

; gang som pipan ska fyllas. Man gor detta for att pipan inte behovar kollas efter att man kollat den en ; ;

; gang. Pipan rymmer 64 byte.

w4: mov dptr,#PINSC ; polla interrupt movx a, @dptr

jnb acc.3,w4

mov dptr,#AUTODATA ; anvander nu IN2BUF som en FIFO movx @dptr,a

djnz r7, w4; fyll pipan sa den har 64 byte

mov dptr,#IN4BC ; Tala om att pipan ar redo for sandning mov a,#64

movx @dptr,a ;Ladda pipan sa den kan skicka det till pc:n sjmp loop; Hoppa tillbaka till borjan

END

Related documents