Returvärden via register. Parameteröverföring via register

Relevanta dokument
Maskinorienterad Programmering 2011/2012. CPU12 Reference Guide Stencil: Assemblerprogrammering.pdf

Programmering av inbyggda system 2013/2014

Programmering av inbyggda system. Seriekommunikation. Viktor Kämpe

Assemblerprogrammets. struktur; exempel

Assemblerprogrammering för HCS12

Programmering av inbyggda system

Digital- och datorteknik

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Assemblerprogrammets struktur; exempel

Adressrum, programmerarens bild

Maskinorienterad Programmering 2010/11

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Förutsättningar för skrivaranslutningen

Undantagstyper. Maskinorienterad Programmering 2010/2011. MC68HC12, Stencil Assemblerprogrammering.pdf CPU12 Reference Guide

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Förutsättningar för skrivaranslutningen. Första programexemplet. Synkronisera arbetstakterna

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Föreläsningsanteckningar 3. Mikroprogrammering II

Förutsättningar för skrivaranslutningen. Första programexemplet. strängslut. Maskinorienterad Programmering 2011/2012 Synkronisering och undantag

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Övningsuppgifter i Mikrodatorteknik 4p/5p

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Digital- och datorteknik

Digital- och datorteknik

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Förutsättningar för skrivaranslutningen. Första programexemplet. Inför specialtecken för strängslut

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Digital- och datorteknik

GPIO - General Purpose Input Output

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Extrauppgifter för CPU12

Lösningar till tentamen i EIT070 Datorteknik

Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Lösningsförslag till Tenta i Mikrodator

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Digital- och datorteknik

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

F8: Undantagshantering

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Digital- och datorteknik

Assemblerprogrammering del 3

LEU240 Mikrodatorsystem

Maskinorienterad programmering

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Tentamen. Datorteknik Y, TSEA28

Tentamen med lösningsförslag

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

CPU. Carry/Borrow IX. Programräknare

GPIO - General Purpose Input Output

Tentamen med lösningsförslag

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Lösningsförslag till Tenta i Mikrodator

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Övning2 Datorteknik, HH vt12 - Programmering

Maskinorienterad programmering

Assemblerprogrammering för ARM del 2

Lösningsförslag tenta

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Dataöverföring på Parallell- och serieform MOP 11/12 1

CE_O3. Nios II. Inför lab nios2time

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Projektlaboration 4, synkronisering av klockan

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Datorsystemteknik Föreläsning 7DAVA14

Programexempel för FLEX

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH

Polling (cyklisk avfrågning) Avbrott

Maskinorienterad programmering

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

TENTAMEN (med svar och vissa lösningar)

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Maskinorienterad programmering

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Digitalt eller Analogt

- Digitala ingångar och framförallt utgångar o elektrisk modell

Programmering av inbyggda system 2012/2013. Kodningskonventioner och programbibliotek. maskinnära programmering i C och assemblerspråk

Programmering av inbyggda system 2014/2015

Digital- och datorteknik

Microprocessor / Microcontroller

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Effektpedal för elgitarr

Tentamen PC-teknik 5 p

Systemkonstruktion SERIEKOMMUNIKATION

Grundläggande datavetenskap, 4p

Tentamen. Datorteknik Y, TSEA28

Att läsa en manual. Exempel Timern ECT_16B8C. Läs den allmänna beskrivningen (Overview) Vi ser att grundfunktionen är en räknare med prescaler

Adressavkodning - busskommunikation

Digital Termometer J10 B4 A4 GND GND GND B1 GND GND GND GND B3 A3 +5V +5V A3 +5V A2 +5V +5V A2. +5v B16 A16 UREG UREG B1 6 AC AC A1 6 A6 6

Transkript:

Maskinorienterad Programmering 21/211 CPU12 eference Guide Stencil: Assemblerprogrammering.pdf Ur innehållet: Parameteröverföring Positionsoberoende kod äknarkretsar ( IMES ) Pulsbreddsmodulering le ( PM ) Analog-/Digital- omvandling ( AD ) Seriekommunikation ( SCI ) Parameteröverföring till/från subrutiner Via register Via stacken In Line 1 2 Parameteröverföring via register eturvärden via register Antag att vi alltid använder register D,X,Y (i denna ordning) för parametrar som skickas till en subrutin. Då kan funktionsanropet (subrutinanropet) dummyfunc(la,lb,lc); översättas till: LDD la LDX lb LDY lc BS dummyfunc Då vi kodar subrutinen dummyfunc vet vi (på grund av våra regler) att den första parametern skickas i D, den andra i X och den tredje i Y (osv). väljs, beroende på returvärdets typ (storlek), HCS12-exempel Storlek Benämning C-typ 8 bitar byte char B 1 bitar word short int D 32 bitar long long int Y/D En regel (konvention) bestäms och följs därefter vid kodning av samtliga subrutiner Metoden är enkel och ger bra prestanda. Begränsat antal parametrar kan överföras. 3 4

Lokala variabler stacken för temporär lagring Parameteröverföring via stacken Adress Innehåll SP före SP efter ; dummyfunc(la,lb,lc); 3 2FFF D.lsb dummyfunc: 2FFE D.msb ; parametrar finns i register, 2FFD X.lsb ; spara på stacken 2FFC X.msb SD 2,-SP SX 2,-SP 2FFB ---- här används registren för andra syften ---- ; återställ täll ursprungliga parametrar från stacken LDD 2,SP LDX,SP --- --- LEAS 4,SP ; återställ stackpekare S Antag att listan av parametrar som skickas till en subrutin behandlas från höger till vänster. Då kan dummyfunc(la,lb,lc); lb l Översättas till: LDD lc PSHD ;(alternativt SD 2,-SP) LDD lb PSHD LDD la PSHD BS dummyfunc LEAS,SP Innehåll Kommentar Adressering via SP i subrutinen lc.lsb Parameter lc lc.msb,sp lb.lsblsb Parameter lb lb.msb 4,SP la.lsb Parameter la la.msb 2,SP PC.lsb Återhoppsadress, PC.msb placeras här vid BS,SP dummyfunc:.. LDD 2,SP ; parameter la till register D.. LDD 4,SP ; parameter lb till register D.. LDD,SP ;parameter lc till register D 5 Parameteröverföring In Line Positionsoberoende kod In line parameteröverföring, värdet 1 ska överföras till en subrutin: BS dummyfunc u FCB 1... main: OG $1 NOP JMP main Genererad kod: A7 1 Den absoluta adressen till symbolen main ärkodad i instruktionen. dummyfunc: LDAB [,SP] ; parameter->b LDX,SP ; återhoppsadress->x INX ; modifiera.. SX,SP ;.. tillbaks till stack......... S main: OG $1 Genererad kod: A7 2 FD NOP Adressen till main anges som en offset till BA main programräknaren (FD=-3, PC-relativ) POSIIONSOBEOENDE ( PIC, Position Independent Code) 7 8

elokering Antag att vi vill flytta maskinkod från en startadress till en annan (elokera kod). CG, Clock eset Generator HCS12 har programmerbar arbetstakt t. Kontrolleras från CG-modul. PIC: Bara kopiera från källadress till destination. EJ PIC: Absoluta adresser måste räknas om (kräver relokeringsinformation, dvs VILKA adresser innehåller referenser till absoluta adresser, etc.) BusClock (E) = PLLCLK/2 9 1 EXEMPEL: Bestäm busfrekvens Antag 8 MHz kristall. PLLCLK får aldrig vara mindre än OSCCLK eftersom detta äventyrar stabilitetsvillkoren i oscillatorn. PLLCLK/2 får aldrig vara större än nominella arbetsfrekvensen hos kretsen. För första generationens HCS12 innebär detta att PLLCLK/2 < 25 MHz. ( SYN 1) 5MHz 2 8MHz ( EFDV 1) Sätt: SYN = 5 och EFDV = 1 (5 1) 2 8MHz 2 8 3MHz 48MHz (1 1) Algoritm: 1. Skriv nya värden till SYN, EFDV. 2. Vänta tills kretsen låser (LOCK=1) 3. Växla till PLL (sätt PPLSEL=1) Basadress = $34 $34 $35 $3 $37 $38 $39 $3A $3B $3C $3D Clock eset Generator (CG) Offset 7 5 4 3 2 1 Mnemonic Namn $ Synthesizer SYN5 SYN4 SYN3 SYN2 SYN1 SYN SYN $1 EFDV EFDV EFDV EFDV eference Divide EFDV 3 2 1 $2 *)est Flags CFLG $3 IF POF LVF LOCKIF LOCK SCMIE SCMIF SCM Flags CGFLG $4 Interrupt Enable IE LOCKIE SCMIE CGIN $5 Clock Select PLLSEL PSP SYSAI OAAI PLLAI CAI IAI COPAI CLKSEL $ PLL Control CME PLLON AUO AOQ PE PCE SCME PLLCL $7 I Control 5 4 3 2 1 ICL $8 COP Control COP SBCK C2 C1 C COPCL *)Force and Bypass $9 FOBYP est $3E $A CCL $3F $B Bit7 Bit Bit5 Bit4 Bit3 Bit2 Bit1 Bit AMCOP *)est Control COP Arm/imer eset 11 12

..programmering.. äknarkrets k ( timer ), ) principiell i i funktion * Generisk kod för programmerad arbetstakt... MOVB #EFDVVal,EFDV MOVB #SYNVal,SYN wait: BCL CGFLG,#LOCK,wait ; vänta tills PLL låst... BSE CLKSEL,#PLLSEL ; växla systemklocka till PLL. Pulser/ intervall eload äknar värde IQ IQ IQ t * Adressdefinitioner för register EFDV EQU $35 SYN EQU $34 CGFLG EQU $37 CLKSEL EQU $39 * Bitdefinitioner PLLSEL EQU $8 LOCK EQU 8 * värden EFDVVal: EQU 1 SYNVal: EQU 5 Clk Prescaler Används för att dela ned klockfrekvensenkf k Nedräknare Läsbart register = IQ Enable IQ Periodiska avbrott Kan användas för att skapa en EALIDSKLOCKA 13 14 ealtidsklocka k i HCS12 ealtidsklocka k i HCS12, initieringiti i re olika register används för realtidsklockan Algoritm, initiering 2. Aktivera avbrott från kretsen 1. Skriv tidbas för avbrottsintervall till ICL $34 $35 $3 $37 $38 $39 $3A $3B $3C $3D Clock eset Generator (CG) Offset 7 5 4 3 2 1 Mnemonic Namn $ Synthesizer SYN5 SYN4 SYN3 SYN2 SYN1 SYN SYN $1 EFDV EFDV EFDV EFDV eference Divide EFDV 3 2 1 $2 *)est Flags CFLG $3 IF POF LVF LOCKIF LOCK SCMIE SCMIF SCM Flags CGFLG $4 Interrupt Enable IE LOCKIE SCMIE CGIN $5 Clock Select PLLSEL PSP SYSAI OAAI PLLAI CAI IAI COPAI CLKSEL $ PLL Control CME PLLON AUO AOQ PE PCE SCME PLLCL $7 I Control 5 4 3 2 1 ICL $8 COP Control COP SBCK C2 C1 C COPCL *)Force and Bypass $9 FOBYP est $3E $3F $A CCL $B Bit7 Bit Bit5 Bit4 Bit3 Bit2 Bit1 Bit AMCOP *)est Control COP Arm/imer eset 15 1

Prescaler för räknarkretsen k [3:] (OFF) [:4] OSCCLK 1 1 11 1 11 11 111 Ifreq Beräkning av tidbas OSCCLK 8 1 1 y 4 Ifreq x 2 8 1 2 1 OFF 2 1 2 11 2 12 2 13 2 14 2 15 2 1 1 OFF 2x2 1 2x2 11 2x2 12 2x2 13 2x2 14 2x2 15 2x2 1 1 OFF 3x2 1 3x2 11 3x2 12 3x2 13 3x2 14 3x2 15 3x2 1 11 OFF 42 4x2 1 42 4x2 11 42 4x2 12 42 4x2 13 42 4x2 14 42 4x2 15 42 4x2 1 1 OFF 5x2 1 5x2 11 5x2 12 5x2 13 5x2 14 5x2 15 5x2 1 11 OFF x2 1 x2 11 x2 12 x2 13 x2 14 x2 15 x2 1 11 OFF 7x2 1 7x2 11 7x2 12 7x2 13 7x2 14 7x2 15 7x2 1 111 OFF 8x2 1 8x2 11 8x2 12 8x2 13 8x2 14 8x2 15 8x2 1 1 OFF 9x2 1 9x2 11 9x2 12 9x2 13 9x2 14 9x2 15 9x2 1 11 OFF 1x2 1 1x2 11 1x2 12 1x2 13 1x2 14 1x2 15 1x2 1 11 OFF 11x2 1 11x2 11 11x2 12 11x2 13 11x2 14 11x2 15 11x2 1 111 OFF 12x2 1 12x2 11 12x2 12 12x2 13 12x2 14 12x2 15 12x2 1 11 OFF 13x2 1 13x2 11 13x2 12 13x2 13 13x2 14 13x2 15 13x2 1 111 OFF 14x2 1 14x2 11 14x2 12 14x2 13 14x2 14 14x2 15 14x2 1 111 OFF 15x2 1 15x2 11 15x2 12 15x2 13 15x2 14 15x2 15 15x2 1 1111 OFF 1x2 1 1x2 11 1x2 12 1x2 13 1x2 14 1x2 15 1x2 1 (Se även exempel i Stencil 2 ) Den bästa approximationen har vi för = 1 11 = $49, som medför: 1x2 13 = 8192 Eftersom detta värde är något större än det exakta, kommer vi att få en något längre periodtid, nämligen: avbrottsfrekvens = 8 1 / 8192 = 97.5 Hz vilket ger periodtiden:.124 s = 1,24 ms. Klockan kommer alltså att "gå för sakta" som en följd av detta systematiska fel. 17 18.. Program för initiering.. iti i ealtidsklocka k i HCS12, vid avbrott ; Adressdefinitioner CGIN EQU $38 ICL EQU $3B timer_init: ; Initiera C avbrottsfrekvens ; Skriv tidbas för avbrottsintervall till ICL MOVB #$49,ICL ; Aktivera avbrott från CG-modul MOVB #$8,CGIN S Anmärkning: Det är olämpligt att använda detta värde då programmet testas i simulator, använd då i stället det kortast tänkbara avbrottsintervallet enligt; ; Skriv tidbas för avbrottsintervall till ICL MOVB #$1,ICL ; För simulator Algoritm, kvittera avbrott 1. IF = 1 $34 $35 $3 $37 $38 $39 $3A $3B $3C $3D Clock eset Generator (CG) Offset 7 5 4 3 2 1 Mnemonic Namn $ Synthesizer SYN5 SYN4 SYN3 SYN2 SYN1 SYN SYN $1 EFDV EFDV EFDV EFDV eference Divide EFDV 3 2 1 $2 *)est Flags CFLG $3 IF POF LVF LOCKIF LOCK SCMIE SCMIF SCM Flags CGFLG $4 Interrupt Enable IE LOCKIE SCMIE CGIN $5 Clock Select PLLSEL PSP SYSAI OAAI PLLAI CAI IAI COPAI CLKSEL $ PLL Control CME PLLON AUO AOQ PE PCE SCME PLLCL $7 I Control 5 4 3 2 1 ICL $8 COP Control COP SBCK C2 C1 C COPCL *)Force and Bypass $9 FOBYP est $3E $3F $A CCL $B Bit7 Bit Bit5 Bit4 Bit3 Bit2 Bit1 Bit AMCOP *)est Control COP Arm/imer eset 19 2

ealtidsklocka k i HCS12, avbrottshantering t ealtidsklocka k med hög upplösning ; Adressdefinition CGFLG EQU $37 timer_interrupt: ; Kvittera avbrott från C BSE CGFLG,#$8 I ; Avbrottsvektor på plats OG $FFF FDB timer_interrupt Adress (hex) Funktion FFF eal ime Interrupt FFEE Enhanced Capture imer channel FFEC Enhanced Capture imer channel 1 FFEA Enhanced Capture imer channel 2...... FF8E Port P Interrupt FF8C PM Emergency Shutdown FF8A- eserverade FF8 Enhanced Capture imer (EC) En maskincykels noggrannhet EXEMPEL: Arbetstakt= 24 MHz PEIOD = 24 Intervall = 1 ms Noggrannhet = 1/24 sek. 41,7 1-9 sec. 21 22 Programexempel Pulsbreddsmodulering d l (PM) IOS EQU $4 CN EQU $44 IE EQU $4C FLG1 EQU $4E OC_ EQU $5 PEIOD EQU 24 Init: MOVB #1,IOS ; ch är OC MOVB #1,IE ; tillåt IQ LDD CN ; aktuell cykel ADDD #PEIOD ; addera period SD OC_ ; nästa avbrott S OG FDB $FFEE OCirq OCirq : MOVB #1,FLG1 ; kvittera LDD CN ; ny period ADDD #PEIOD SD OC_ I Adress (hex) Funktion FFF eal ime Interrupt FFEE Enhanced Capture imer channel FFEC Enhanced Capture imer channel 1 FFEA Enhanced Capture imer channel 2...... FF8E Port P Interrupt FF8C PM Emergency Shutdown FF8A- eserverade FF8 U U U period dutycycle 1 U out U 2 3 U out U 4 1 U out U 4 dutycycle U out U period Period och duty- cycle är programmerbart 23 24

PM-styrning Control bus Data bus period dutycycle Högtalare, glödlampa element, etc... 8 * 8 bitars eller 4 * 1 bitars räknare period duty cycle PM Continous signal out Power Amplifier 25 2 Programexempel ; PM initiering PME EQU $A PPOL EQU $A1 PMPCLK EQU $A3 PMPE EQU $B4 PMDY EQU $BC ; låg nivå startar period CL PMPOL ; c:a 4 ms periodtid MOVB #$77,PMPCLK ; pwm kanal MOVB #$FF,PMPE ; börja med 8% duty cycle.. MOVB #$D,PMDY ; aktivera kanal MOVB #1,PME Analog-/Digital- it l omvandling 27 28

Programexempel ; AD initiering ; Högerjustera resultat, unipolärt ; kontinuerlig mode (scan), AD kanal MOVB ; upplösning MOVB #$A,ADCL5 #$E5,ADCL4 ; en konverteringssekvens MOVB #$4,ADCL3 Multiplex 8 kanaler. ; normal mode MOVB #$C,ADCL2 ; Vänta tills omvandling klar wad: BCL ADSA,#$8,wAD ; När resultat färdigt, läs LDAB ADDL... 29 3 Seriekommunikation, ik SCI Central Processing Unit Serial to parallel conversion eceive Data: xd Sändare Data buss Mottagare Data buss Parallel to serial conversion ransmit Data: xd Central Serial to parallel ransceiver ransceiver Processing Unit conversion eceive ransmit eceive ransmit Parallel to serial conversion Clock Control CS Data OE Shift Serial data out xd Serial data in xd Clock Control OE Data E Shift Serial transmission i Sändare och mottagares klockor går i samma takt 31 32

S232 överföring av tecknet t z tecknet z representeras av bitmönstret 111 11 (ASCII-tecken). +1 volt volt - 1 volt S A B I idle 1 1 1 1 1 1 idle z minst signifikanta bit först P A I Y B I S O P B I Initiering, i busy-wait Basadress = $C8 Serial Communication Interface (SCI) Algoritm: Offset 7 5 4 3 2 1 Mnemonic Namn Baud ate 1. Initiera $ SB12 SB11 SB1 SB9 SB8 SCIBDH High BAUDAE Baud ate $1 SB7 SB SB5 SB4 SB3 SB2 SB1 SB SCIBDL Low $2 LOOPS SCISAI SC M AKE IL PE P SCIC1 Control 1 2. Aktivera $3 IE CIE IE ILIE E E U SBK SCIC2 ransmitter Control 2 eceiver DE C DF IDLE O NF FE PF $4 SCIS1 Status 1 AF $5 BK13 XDI SCIS2 Status 2 8 Data $ 8 SCIDH High 7 5 4 3 2 1 $7 SCIDL Data Low 7 5 4 3 2 1 SCIBD: EQU $C8 ; SCI baudrate-register t (1 bit). SCIC2: EQU $CB ; SCI styr-register 2. ; Bitdefinitioner, styrregister E: EQU $8 ; ransmitter enable. E: EQU $4 ; eceiver enable. 33 34 Skriv tecken via SCI Läs tecken från SCI Serial Communication Interface (SCI) Offset 7 5 4 3 2 1 Mnemonic Namn Baud ate $ SB12 SB11 SB1 SB9 SB8 SCIBDH High Baud ate $1 SB7 SB SB5 SB4 SB3 SB2 SB1 SB SCIBDL Algoritm: Low DE = $2 LOOPS SCISAI SC M AKE IL PE P SCIC1 Control 1 (ransmit Data $3 IE CIE IE ILIE E E U SBK SCIC2 Control 2 DE C DF IDLE O NF FE PF Empty) $4 SCIS1 Status 1 AF $5 BK13 XDI SCIS2 Status 2 1. Om DE=1 8 SCIDL=tecken Data $ 8 SCIDH High 7 5 4 3 2 1 $7 SCIDL Data Low 7 5 4 3 2 1 Algoritm: DF = (eceive Data Full) 1. Om DF =1 tecken=scidl Serial Communication Interface (SCI) Offset 7 5 4 3 2 1 Mnemonic Namn $ Baud ate SB12 SB11 SB1 SB9 SB8 SCIBDH High $1 Baud ate SB7 SB SB5 SB4 SB3 SB2 SB1 SB SCIBDL Low $2 LOOPS SCISAI SC M AKE IL PE P SCIC1 Control 1 $3 IE CIE IE ILIE E E U SBK SCIC2 Control 2 $4 DE C DF IDLE O NF FE PF SCIS1 Status 1 $5 AF BK13 XDI SCIS2 Status 2 $ 8 Data 8 SCIDH High $7 7 5 4 3 2 1 7 5 4 3 2 1 SCIDL Data Low SCIS1: EQU $CC ; SCI status-register t t 1. SCIDL: EQU $CF ; SCI data-register låg byte. ; Bitdefinitioner, statusregister DE: EQU $8 ; ransmit data register empty status bit. SCIS1: EQU $CC ; SCI status-register t t 1. SCIDL: EQU $CF ; SCI data-register låg byte. ; Bitdefinitioner, statusregister DF: equ $2 ; eceive data register full status bit. 35 3

Bestämma Baudrate-värde äd 9 57 25 PLLCLK B 1 baudrate 48 1 312,5 1 9 48 1 52,8333 1 57 PLLCLK baudrate 1 B 48 1 915 1 312 48 1 5792 1 52 48 1 48 1 11,71875 25 1 25 1 12 Eclock: EQU 8 ; 8 MHz ; Baudate register värden, baserad på PLL-klocka Baud9: EQU (Eclock/(1*9)), 48 1 9585 1 313 Programmet... ; enkelt testprogram OG $1 JS serial_init Loop: JS in ; "eka" tecken JS out BA loop ; OU tecken rutin ; Skriv tecken till SCI ; Inparameter, register B: tecken. out: BCL SCIS1,#DE,out ; vänta till DF=1 SAB SCIDL ; skicka k tecken... S ; IN tecken rutin ; Läs tecken från SCI ; eturnera i register B in: BCL SCIS1,#DF,in ; vänta till DF=1 LDAB SCIDL ; läs tecken S 37 38