Laboration nr2 med enchipsdatorn PIC-16F877 Inledning Målet med laborationen är främst att bli bekant med skift-, villkorliga- och ovillkorligaoperationer samt hur man strukturerar enklare flödesscheman. Vidare behandlas även det kanske viktigaste registret, w-registret. Laborationshandledningen är tänkt att användas tillsammans med kompendiet Lär Dig Använda PIC-16F877. Teori Läs sidorna 27-34 och 40-42 i kompendiet Lär Dig Använda PIC-16F877 innan du börjar med förberedelseuppgifterna. Förberedelseuppgifter Frågorna besvaras på separat blad och lösningsförslagen lämnas välskrivna till laborationsassistenten vid laborationstillfället. Eventuella sidhänvisningar gäller (om ej annat anges) kompendiet Lär Dig Använda PIC-16F877. 1. a) Sätt dig in i programmet lab2_s1.asm (Se bilaga1), så att du förstår hur det fungerar. b) Har du lagt märket att include direktivet användes i början av programmet? Vad har det för uppgift? 2. a) Hur fungerar instruktionerna bcf resp. bsf? b) Vad skiljer w-registret från de andra registren? c) Vad finns i PORTC när instruktionen nedan utförts? clrf PORTC d) Skriv de instruktioner som behövs för att gör alla bitar i PORTC till ingångar? e) Omvandla talet B 10010011 till hexadecimalt. f) Vad kallas de fyra fälten i texteditorn? g) Antag att PORTC innehåller D 44. Vilket binärt tal finns i PORTC resp. w-registret efter att instruktionen nedan exekverats? comf PORTC.0 h) När används instruktionen call och vilken instruktion måste alltid stå sist i en subrutin? 1
3. a) Vilken instruktion kan användas om man vill multiplicera ett binärt tal med två? b) Hur fungerar instruktionerna rlf resp. rrf och var sparas resultatet? c) Förklara hur btfsc resp. btfss instruktioner fungerar? d) Förklara hur decfsz instruktioner fungerar? 4. Kommentar: Hur lång tid tar det för en instruktion att exekveras? Alla instruktioner tar en klockcykel att utföra utom hoppinstruktioner som tar två. Kristallocillatorns frekvens (den på labkortet): f osc = 19,6608 MHz. Processorn klockas dock med frekvensen: f clk = Detta ger klockcykeltiden: T clk = f clk f osc 4 1 = 0,203 µs. = 4,9152 MHz. a) Studera Subrutinen: Wait i programmet lab2_s1.asm och förklara kort hur den fungerar. b) I kommentarfältet i subrutinen saknas förklaringar på några rader, skriv dem själv! c) Vilken ändring måste göras för att subrutinen skall ta 0,5s istället för 0,125s? 5. a) Rita först flödesschema till huvudprogrammet lab2_s1.asm. Tips: Se bilaga 2. b) Rita sedan flödesschema till endast Subrutinen: Wait. 6.* a) Då instruktionerna rlf och rrf används talar man om att skiftet sker via en Carry-bit vad innebär detta och var finns denna bit? b) Vilket register och vilka bitar påverkas då man använder assemblerdirektivet banksel? c) Om direktivet nedan exekveras hur sätts bitarna i frågan ovan? banksel TRISA d) Om resultatet av en aritmetisk eller logisk operation är lika med noll påverkas en bit i samma register som ovan. Vilken bit och hur? e) Vad står opcode för? 7.* I program lab2_s2.asm (Se bilaga 1) är några i instruktioner ersatta med frågetecken. Sök och lägg till de instruktioner som gör att programmet fungerar enligt beskrivningen på programbladet. 8.** I det sista programmet lab2_s3.asm (Se bilaga 1) fattas hela huvudprogrammet. Skriv huvudprogrammet så att funktionen blir enligt beskrivningen på programbladet. Tips:Gör bittest på Carry-biten! 2
Materiel Hårdvara: MPLAB-ICD Mjukvara: MPLAB-IDE 5.7 Genomförande 1. Låt laborationsassistenten kontrollera lösningsförslagen till förberedelseuppgifterna. 2. Du skall nu testa (simulera, programmera ) programmet lab2_s1.asm genom att följa anvisningarna Steg för steg med MPLAB-IDE på sidan 52 och framåt i kompendiet. OBS! Glöm ej att skapa några mappar att spara dina källfiler och projekt i innan du öppnar programmet MPLAB-IDE, se sidan 52. 3.* Om du hinner. Testa den kompletterade versionen av lab2_s2.asm som du gjorde i förberedelseuppgift 7*. 4.** Om du hinner. Testa nu den kompletterad versionen av lab2_s3.asm som du gjorde i förberedelseuppgift 8**. 3
Bilaga 1 Programexempel
Bilaga 2 Att skriva program Kopior ur: Systemuppbyggnad och programmering Liber teknikutbildning (Sid. 49-51)