Introduktionsuppgift till enchipsdatorn.

Relevanta dokument
Introduktionsuppgift till enchipsdatorn.

Datorteknik 1 (AVR 1)

LEU240 Mikrodatorsystem

Stegmotorn Tvåfasdrivning Unipolär lindning

Datorteknik 2 (AVR 2)

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Introduktion till programmering och Python Grundkurs i programmering med Python

LABORATION. Datorteknik Y

Programmering i maskinspråk (Maskinassemblering)

Vilken skillnad gör det var du placerar det? Prova båda.

Digital- och datorteknik

Digital- och datorteknik

Montering av Wisp628.

Programmering i maskinspråk (Maskinassemblering)

Programmering av. PADDY mini

JavaScript Block Editor:

NetBeans 5.5. Avsikt. Projektfönster

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Föreläsning 2. Operativsystem och programmering

LABORATION. Datorteknik Y

BDM12 Användarbeskrivning. Introduktion

Introduktion till syntesverktyget Altera Max+PlusII

Föreläsning 3. Programmering, C och programmeringsmiljö

Programexempel 1 AND-funktionen

Figur 1 Skalprogrammets meny

Kortlaboration DIK. Digitalteknik, kombinatorik.

Till flera av ovanstående finns det dessutom varianter, vilka kommer att presenteras i de olika avsnitten.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Micro:bit. Börja skapa egna program

Till assemblersystemet Zuper 80 Assembler krävs en SPECTRAVIDEO 328/318+minst 16K ram extra.

NetBeans 7. Avsikt. Projektfönster

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

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

Digitalt lärande och programmering i klassrummet

Videoapparat SB4714W/2 & SB4701W/A. Installation och handhavande SB4714W/2

EV3 Roboten. Sida 1 av 13

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

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

Kortfattad instruktion för installation och användning av streckodsapplikationer

Cecilia Ingard. Boksidan

Kodlås. Kopplingsschema över kodlåset PAL-18

Steg 1 Minnen, mappar, filer Windows 7

Instruktion Programmeringsapp och gränssnitt

AVRStudio på tre minuter. Micke Josefsson, 2005

TILLÄMPNINGAR INOM DATORTEKNIK

Steg 1 Minnen, mappar, filer Windows 8

Roboten. Sida 1 av 11

Kopiera musik och program till hårddisken och skicka sedan skivorna på semester i förrådet. Spara skivorna

Programmera Avant 5 med PC mjukvara

Digital- och datorteknik

Skärmtangentbordet som är enkelt att använda både med mus, touchskärmar och interaktiva whiteboards

Lunds Universitet LTH Ingenjörshögskolan IDa1, IEa1 Helsingborg. Laboration nr 4 i digitala system ht-15. Ett sekvensnät. grupp. namn.

TimeLox HCU handterminal. Användarguide. ASSA ABLOY, the global leader in door opening solutions.

Programmera i teknik - kreativa projekt med Arduino

Instruktion till. PigWin PocketPigs. Del 1 - Installation

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

A. Datorn från grunden

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

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet.

Lösningar till tentamen i EIT070 Datorteknik

Switch Driver 4. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Bruksanvisning Bläckfisken USB

Digitala projekt - Radiostyrd bil

QUICK GUIDE Master reset, initiering och adressering. Master Reset av LCU6516

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

Föreläsning 3. Programmering, C och programmeringsmiljö

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Skapa mapp. * Gör så här: Det finns många sätt att skapa mappar, men det enklaste sättet brukar vara följande.

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Steg 1 Minnen, mappar, filer Windows 10

TSIU50 Mikrodatorprojekt. LAB1 AVR-introduktion och logikanalysator

Handhavande manual problemhantering

Digitala Projekt(EITF40) - Larm

Användarhandbok för användning med Windows-datorer. Kompatibla produkter: C-Pen 20/3.0/3.5

BRUKSANVISNING Kontaktlåda USB funktionsverket

3. Hämta och infoga bilder

Ipad i teknikundervisningen

AVR 5. Styrning av trafikljus. Digitala system 15 p

Datakommunikation med IR-ljus.

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes

DISK DRIVE REPLACEMENT

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Installationsanvisning av proximityläsare 1103/2. Mod. 1103/2

Om du behöver hjälp. Telia Simka Bruksanvisning

CPU. Carry/Borrow IX. Programräknare

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

CE_O3. Nios II. Inför lab nios2time

M7005 och IBR Användarhandbok

Artikelnummer: BRUKSANVISNING MultiSwitch 2 kontaktlåda med USB. funktionsverket

Interfacemodul IDP-RM1 Installations- och programmeringsmanual

Programmera och ladda ny mjukvara till DT-serien. Information och nerladdning av SatEdit V3 från: Ladda hem.

ATS-centralapparat. Användarmanual

LAN 63 Masterpanel. RUTAB Lerbacksgatan Nässjö Tel: Fax: info@rutab.se LAN 63 Larmpanel Master

Installation av fjärrströmbrytare HE842, HE843 och HE862(2).

Vad finns i paketet. Detta bör finnas i paketet: Ett trådlöst modem, E5 Ett batteri Denna manual samt säkerhetsinformation En USB-kabel En nätadapter

Robotfotboll med Arduino

Avant BRUKSANVISNING. FAKTARUTA AVANT Hög utnivå med förstärkning upp till 57 db. Automatiska funktioner för tilt och förstärkning

Transkript:

Introduktionsuppgift till enchipsdatorn. I den här övningen skall du bekanta dig med enchipsdatorn MC68HC705P6A och utvecklingssystemet CE-SAM2000. Du skall läsa in data från en tryckströmställare och mata ut data på ett antal lysdioder. Som slutövning skall du skriva ut lite text på en LCD-display. Vi kommer att använda lab-modul nr.17. Enchipsdatorn MC68HC705P6A har fyra portar, kallade A,B,C och D, via vilka datorn hämtar in data från omvärlden och skickar ut sina resultat. Enchipsdatorn placeras i en nollkraftsockel på ett litet kretskort där även strömförsörjningen är ordnad. Vi kallar detta kort för modermodulen. Till detta kort kan man sedan ansluta olika dottermoduler anpassade för olika uppgifter. Vi skall arbeta med modul 17, som är ett enkelt in- och utmatningskort. På detta kort är port A ansluten till 8 lysdioder, där man alltså kan skicka ut ett resultat. På portarna B, C och D sitter en 8-bitars DIP-switch, via vilken man kan mata in infomation, och på bit 0 i C-porten sitter en tryckströmställare. Den exakta kopplingen framgår av schemat. Alla ingångar är försedda med pullup-motstånd på 4.7 kohm. VCC RES GND DS1233D RESET 1 27 26 24 2 25 RESET OSC1 OSC2 TCMP IRQ TCAP/PD7 10 PA0 9 PA1 8 PA2 7 PA3 PA4 6 5 PA5 PA6 4 3 PA7 18 AD2/PC4 17 AD1/PC5 16 AD0/PC6 15 VR/PC7 23 PD5 11 SDO/PB5 SDI/PB6 12 13 SCK/PB7 22 PC0 21 PC1 20 PC2 19 AD3/PC3 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 MC68HC705P6A Lysdioder och omkopplare anslutna till datorns portar. Vi kommer att använda utvecklingssystemet CESAM2000 för att skriva, översätta, simulera och promma ditt program. Utvecklingssystemet består av ett program (P6.EXE) och en speciell burk för promningen som ansluts till printerporten på datorn. Hela programmet är menystyrt, med en huvudmeny och ett antal undermenyer. Från huvudmenyn kan du starta editorn, assemblatorn, simulatorn och promningen. Vi skall gå igenom uppgiften steg för steg för att visa hur du löser en uppgift: 2001-11-15 Introduktionsuppgift- 1 PN

1. Din första uppgift blir att tända lysdioderna 0,2,4,6 och släcka de övriga. Starta P6-programmet genom att dubbelklicka på ikonen. Du kommer då att få upp programmets huvudmeny med endast tre knappar aktiverade, nämligen Select Project, Setup och Exit. Klicka på Select projekt och sök dig fram till din projektkatalog. Om du skall fortsätta på ett gammalt projekt klickar du bara på det och sedan OK. Du skapar i stället ett nytt projekt genom att skriva in ett nytt namn, och därefter klicka på OK. Då kommer du tillbaka till programmets huvudmeny. Nu är alla knappar aktiverade. Härifrån kan man välja att starta editorn, att uföra översättningen till maskinkod (assemblera), att simulera programmet eller att bränna in koden i enchipsdatorns minne. Editering. Starta editorn. I setup-menyn har du kunnat välja mellan några olika editorer, t.ex. den i windows inbyggda Notepad (Anteckningar). Du har också möjlighet att använda Uedit32 som har s.k syntax-färgning, dvs reserverade ord och andra delar av programmet får olika färger. Pröva den, det underlättar avsevärt För att göra det lätt att komma igång från början har vi skrivit stommen till ett program, där det mesta man behöver redan finns deklarerat. Direkt efter det att du startat editorn, importerar du denna stomme genom att göra copy och paste. Om du använder Notepad öppnar du filen Frame.P6 och markerar all text. Därefter öppnar du ditt nya program och klistrar in textem med hjälp av paste. Lämna filen Frame.P6 utan att spara några ändringar i den. I editorn UEdit32 ställer du markören på den plats i ditt program där du vill importera texten. Så går du via File och Special functions till Insert file. Då kan du leta dig fram till den fil du vill importera, markerar den och klickar på öppna. I alla program måste vissa satser alltid finnas, bl.a. dessa: Definiera de symboler som behövs. I detta fall PORTA och DDRA. Definiera startvektorn. Sätt en label på första exekverbara satsen i programmet. Denna label utnyttjar du även vid definitionen av startvektorn. Avsluta programmet med END. Du ser att det är just dessa delar som den inlästa filen FRAME.P6 innehåller. Nu skall du skriva de satser som utför uppgiften. För att tända och släcka lysdioderna på PORT A skall du skicka ut information på portens alla bitar. Portens alla bitar skall alltså riktas utåt. Det åstadkomms genom att skriva ettor till portens riktningsregister. Det gör vi i två steg. Först laddar du accumulatorn med ett tal som innehåller ettor i alla 8 bitarna. Därefter skickar du ut detta accumulatorinnehåll till portens riktningsregister, DDR A. Vi får alltså följande två satser: LDA #%11111111 ;ladda accumulatorn med 8 ettor STA DDRA ;skicka ut ettorna till riktningsregistret. Tänk på den syntax (grammatik) som är definierad för det här programmerings-språket. Den finns beskriven i Appendix C i läroboken Konstruera med Enchipsdatorer. Alla satser, utom lägen och andra namn, måste börja minst ett mellanslag in på raden. Nu har du riktat dataflödet utåt på PORT A. Nu skall vi skicka ut själva data som tänder eller släcker lysdioderna. Som framgår av kopplingsschemat sitter lysdioderna kopplade till + 2001-11-15 Introduktionsuppgift- 2 PN

via ett motstånd på 220 Ohm. För att få ström genom en lysdiod och därmed tända den, måste du lägga ut en låg spänning, dvs en nolla på biten i porten. Vi skall alltså lägga ut nollor på bitarna 0,2,4,6 i porten och ettor på de övriga. Även här är vi tvugna att göra utmatningen i två steg, först ladda accumulatorn med ettorna och nollorna, och därefter skicka ut accumulatorns innehåll på portens dataregister. Vi får alltså följande satser: LDA #%10101010 ;ladda accumulatorn med bitmönstret STA PORTA,skicka ut det på portens dataregister När du skrivit programmet med hjälp av utvecklingssystemets editor, sparar du programmet och går tillbaka till huvudmenyn. Assemblering Begär sedan assemblering av programmet.genom att klicka på knappen Assemble. Då läser assemblatorn igenom raderna i ditt program och skriver ut eventuella felmeddelanden. Läs felmeddelandena och försök att förstå vad du har gjort för fel. Om du får felmeddelanden startar du åter editorn samtidigt som du har fönstret med felmeddelandena uppe. Ibland kan ett enda fel dra med sig följdfel så att det ser värre ut än det är. Rätta de fel du ser, spara filen och assemblera om. Efter några vändor har du säkert klarat av dina syntaxfel. Eftersom felmeddelandena refererar till radnummer är det ju ytterst lämpligt att använda en editor som visar radnummer. Simulering När du kommit igenom assembleringen utan fel, är det dags att börja provköra ditt program. Det gör du med hjälp av simulatorn. Simulatorn att ett program som efterliknar själva enchipsdatorn in i minsta detalj, men som körs i PCn. Det ger dig möjligheten att exakt följa vad som händer i datorn när du kör programmet. Du kan se vad som händer i register och portar och hur mikro-sekunderna tickar fram. Starta simulatorn genom att klicka på knappen Simulate. Då laddas automatiskt ditt programs maskinkod och assembleringslista. Stega dig sedan igenom programmet instruktion för instruktion (single stepping) och se att ditt program går rätt. Du ser i PORT-fönstret hur först riktningen på alla bitar i A-porten vänds utåt. (innehållet växlar från iiiiiiii till oooooooo). Därefter blir databitarna satta till 10101010. Vad händer när datorn kommit till sista satsen i ditt program?? Just det - du får konstiga felmeddelanden. Det beror på att processorn hela tiden fortsätter och hämtar och utför operationskoder från minnet, även om du inte har skrivit dit några. Du måste därför hela tiden sysselsätta processorn även om det inte finns något mera att göra. Du måste avsluta programmet genom att kommendera processorn på stället marsch. Det gör du genom att skriva en sats där processorn hela tiden hoppar tillbaka till samma sats. Det gör du så här: HIT: BRA HIT ;Gå in i en oändlig loop När du är nöjd med simuleringen av ditt program, är det dags att prova det i hårdvaran. Emulering. För att kunna provköra programmet i den riktiga hårdvaran men ändå behålla datorns kontroll över programexekveringen använder vi oss av en emulator. Det är ett kort som monteras in i PCn och som är försett med en flatkabel. I ändan på flatkabeln sitter en 28 pinnars kontakt som ser exakt lika dan ut som enchipsdatorn. Dessutom har emulatorn tillsammans med PCn och dess program exakt samma funktion som enchipsdatorn! Man kan 2001-11-15 Introduktionsuppgift- 3 PN

alltså ersätta enchipsdatorn med kontakten från emulatorn och köra sin hårdvara med emulatorn i stället för med enchipsdatorn och få exakt samma resultat. Dock med den stora fördelen att med emulatorn kan vi på datorns skärm se vad som händer ute i vår hårdvara när programmet går. Anslut emulatorn till labkortet och när du ligger i simulatorn aktiverar du emulatorn genom att klicka i I/O-fönstret där det hittills har stått Keyboard. Om du har ett emulatorkort monterad i din dator och drivaren är laddad kommer texten att växla till Emulator. Du kan nu inte längre påverka bitarna i portarna från tangentbordet, utan denna information tar nu programmet in via emulatorn. All data som programmet skickar ut på sina portar kommer nu ut i emulatorn och styr labkortet. I portfönstret visas naturligtvis all information som finns på portarna så att du kan se vad som händer när programmet går. Kör nu ditt program med emulatorn inkopplad så skall du se att labkortet reagerar som du har tänkt dig i ditt program. Promning. Som sista steg i utvecklingen av ditt program skall du överföra maskinkoden in i enchipsdatorns programminne och provköra labkortet med enchipsdatorn monterad. Det gör du genom att ansluta den speciella promningsburken till datorns printerport och klicka på prom -knappen. Då öppnas programmeringsmenyn. Där anger du vilken port som programmeraren sitter ansluten till och hur snabb din dator är. Enchipsdatorn är känslig för ljus under själva promningen, så då måste den täckas över, t.ex. med en bok. I menyn måste du därför även kvittera att du har täckt över enchipsdatorn, innan du kan promma den. Därefter klickar du på prom - knappen. Då kommer maskinkoden att föras över till promningsburken och brännas in i enchipsdatorns minne. När du fått meddelande om att enchipsdatorn är programmerad och verifierad tar du loss den från promningsburken och sätter in den i lab-modulen. Matningsspänningen till lab-modulen måste vara bortkopplad när du stoppar in enchipsdatorn. Man kopplar aldrig under spänning, för då vet man aldrig vad man förstör! Enchipsdatorns ben 1 skall vara mot nollkraftssockelns spak. När du ansluter matningsspänningen startar enchipsdatorn från början av programmet (power up reset), och lysdioderna bör nu lysa så vackert. När programmet är färdigtestat tar du ut assembleringslistan på printern och sparar den i din kurspärm. 2. Nästa program skall ligga i en oändlig loop och läsa in statusen från tryckomkopplaren. Om den är uppsläppt skall alla lysdioder lysa, och om man trycker ned knappen skall lysdioderna slockna. Börja ett nytt program genom att ladda in FRAME.P6 till ditt nya program. Tänk på att när du läser av tryckomkopplaren så går informationen in i datorn, så den biten måste programmeras att vara riktade inåt. Gå igenom samma procedur med editering, assemblering, simulering, emulering och promning som i första uppgiften, och spara assembleringslistan när du är klar. Som du ser i kopplingsschemat sitter tryckomkopplaren ansluten till bit 0 i C-porten. Börja med att programmera upp riktningarna på portarna: START: LDA #%11111111 ;Rikta hela Port A utåt STA DDRA 2001-11-15 Introduktionsuppgift- 4 PN

LDA #%0000 ;Rikta hela Port C inåt STA DDRC När portarna nu är initierade låter du programmet gå runt i en oändlig loop. Inuti loopen känner du av statusen på bit 0 i C-porten och beroende på om den är en 1 eller 0 laddar du accumulatorn med åtta nollor eller ettor som du sedan skickar ut på lysdioderna: LOOP: BRSET 0,PORTC,NOLL ;Är knappen uppsläppt BRCLR 0,PORTC,ETT ;eller nedtryckt? NOLL: LDA #%00000000 ;Ladda nollor = tänd BRA UT ETT: LDA #%11111111 ;Ladda ettor=släck UT: STA PORTA ;Skicka ut BRA LOOP ;Gå runt i loopen Assemblera och provkör programmet. Använd gärna emulatorn för att testa att programmet fungerar med den riktiga hårdvaran. 3. I den sista introduktionsuppgiften skall du skriva ditt eget namn på en display av flytande kristaller ansluten till enchipsdatorn. En display av flytande kristaller (Liquid Crystal Display - LCD) är uppbyggd av två glasskivor mellan vilka den vätska finns som är det aktiva mediet (de flytande kristallerna). Om vätskan utsätts för en elektrisk spänning ändrar den sina optiska egenskaper, bl.a. sin transmissionsförmåga för ljus. För att kunna lägga spänningen över vätskan har man lagt ett mycket tunnt metallmönster på insidan av de båda glasen. Detta metallmönster leder ström och gör att man kan få spänningen över olika partier av vätskan. Elektroderna i metallmönstret är utformade som punktmatriser och genom att aktivera olika punkter kan man generera olika bokstäver, siffror och tecken. För att kunna hantera displayen på ett enkelt sätt är den utrustad med ett kretskort med styr- elektronik. För att skriva tecken på displayen, behöver enchipsdatorn bara skicka ut ASCII-tecken till LCD-displayens styrelektronik. Denna tar sedan hand om tecknen och aktiverar de olika punkterna i displayen så att det bildas motsvarande tecken på displayen. För att underlätta programmeringen av LCD-displayen finns det en programbiblioteksmodul kallad LCD2.LIB. (Siffran 2 indikerar att biblioteket gäller för CESAM2000). Där finns alla de rutiner du behöver för att initiera displayen och sedan använda den. Kopiera in denna biblioteksmodul i slutet av ditt eget program så att du sedan kan anropa de olika subrutiner du behöver, på samma sätt som du tidigare kopierade in programramverket FRAME. 2001-11-15 Introduktionsuppgift- 5 PN

Innan man kan börja skriva tecken på displayen måste den initieras. Det sker genom att du helt enkelt anropar subrutinen LCDINI2 i biblioteksmodulenmed satsen: JSR LCDINI2 ;Tvåradig display Om du fortfarande använder den enradiga displayen initierar du den med satsen: JSR LCDINI ;Enradig display Därefter kan du skicka ut enstaka tecken eller hela textsträngar till displayen genom att använda olika subrutiner i modulen. Läs igenom den inledande texten i biblioteksmodulen så att du vet vilka subrutiner som finns och hur de skall användas. Därefter skall du skriva ut ditt eget namn på displayen. Då måste du först lagra ditt namn i enchipsdatorns minne. Det gör du enklast med satsen: NAMN: DB Kalle Anka,0 Obs! att denna sats för att definiera minnesinnehåll inte får ligga insprängd bland de körbara satserna, utan skall ligga före dessa vid en adress lägre än $100.., i det minnesområde där det står Här läggs programmets konstanter, textsträngar och tabeller. Nollan på slutet måste finnas för att utskriftsrutinen skall veta att det är slut på texten. Labeln NAMN har du satt på texten för att du skall kunna veta var i minnet (vid vilken adress) som texten ligger. När du anropar rutinen för utskrift av en textsträng till LCD-displayen, måste du tala om för rutinen var i minnet som texten ligger. Det gör du genom att ladda indexregistret med adressen till texten innan du anropar rutinen. Den laddningen av indexregistret gör du med satsen: LDX #NAMN LDX innebär att du laddar indexregistret, och #NAMN att du laddar med adressen till labeln NAMN. När denna förberedelse är klar kan du anropa utskriftsrutinen med satsen: JSR LCDSTR Subrutinen LCDSTR kommer då att skriva ut de tecken som den hittar i minnet vid den adress som indexregistret pekar på, ända tills den stöter på nollan som avslutade ditt namn. Då avslutas subrutinen och datorn hoppar tillbaka till ditt huvudprogram. Eftersom uppgiften är klar i och med utskriften av namnet måste du stanna processorn på något sätt. Det kan du exempelvis göra genom att låta programmet gå in i en oändlig loop där man hela tiden hoppar tillbaka till samma sats, så här: HIT: BRA HIT Som sista sats i hela programmet måste det finnas ett END för att tala om för assemblatorn att nu är det slut på texten i programmet. Assemblera, simulera, emulera och promma ditt program på samma sätt som i de tidigare uppgifterna. I rutinen för initiering av LCD-displayen finns en vänterutin som kommer att ta några sekunder att utföra i emulatorn, men hav tålamod! 2001-11-15 Introduktionsuppgift- 6 PN