V1TH04 – PIC assembler Wouter van Ooijen Mail: [email protected] Sheets en verdere info: www.voti.nl/hvu/V1TH04 (deze link staat ook op sharepoint) Onderwerp: Materiaal: PIC assembler programmeren - PIC USB target board (€ 70 ) - handouts etc (worden uitgedeeld) - (thuis) PC met XP of Vista (met USB) - Memory stick Hogeschool Utrecht / Institute for Information & Communication Technology 1-1 V1TH04 – PIC assembler 1-2 Wat er van u verwacht wordt • U bent (op tijd!) aanwezig • • • • • • • Theorie in C03.14 (vanaf 10;50), praktijk in D01.12 De eerste weken iedere week een of meer opgave(n) De opgaven moeten voor de volgende les klaar zijn U maak de opgave(n) zelf De opgaven worden beoordeeld op werking, code en begrip De laatste weken een individueel projectje Het resultaat van het projectje is uw cijfer, mits alle voorgaande opgaven voldoende, en op tijd (anders minpunten!) • Er is dus geen tentamen, geen projectverslag, etc. Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1-3 Wat er van u verwacht wordt • De opgaven zijn individueel • Code schrijft u zelf • Overleg mag, maar zorg dat je het uiteindelijk zelf ook begrijpt • Copy-and-paste is dus niet toegestaan Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler Onderwerpen voor vandaag • • • • wat is een microcontroller wat is assembler hoe werk je met een microcontroller eerste stappen in PIC assembler Hogeschool Utrecht / Institute for Information & Communication Technology 1-4 V1TH04 – PIC assembler 1-5 Wat is een microcontroller? meestal: ‘computer-achtig’ ding (computertje) combinatie van processor, ROM, RAM, I/O, ... compact goedkoop zuinig geschikt voor real-time geschikt voor embedded gebruik Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1-6 Wat is assembler? • De meeste directe manier om een CPU te programmeren • Veel werk voor de programmeur • Een stuk beter dan binair, hex of met schakelaars programmeren ... • Regel-georienteerd • (meestal) 1 regel 1 CPU instructie • maar ook: het programma dat een in assembler geschreven programma vertaalt (de ‘compiler’) Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1-7 een assembler fragment ; delay movlw H'00' delay_loop: addlw H'01' skpz goto delay_loop Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1-8 PIC16F887 • • • • • • 40-pins chip, max. 35 beschikbaar als I/O met kristal maximaal 20 MHz (interne osc 8 MHz) 8k code (14-bit instructies) 368 general purpose registers (RAM) 256 bytes EEPROM Diverse peripherals (bv A/D, timers, UART, PWM) Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler PIC programming model • W (accumulator) – het enige echte ‘register’ • Geheugen, adressen 0 .. 0x1FF (512), waarin oa: – File registers (memory, RAM) – Flags – die zitten dus in het ‘geheugen’! Hogeschool Utrecht / Institute for Information & Communication Technology 1-9 V1TH04 – PIC assembler Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 10 V1TH04 – PIC assembler File Registers (SFR, GPR) Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 11 V1TH04 – PIC assembler Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 12 V1TH04 – PIC assembler Literal to W, W to file, file to W a represents an address, [ a ] the (byte) content of that address Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 13 V1TH04 – PIC assembler 1 - 14 Wat doet dit code fragment? MOVF MOVWF MOVLW MOVWF H’20’, W H’21’ H’30’ H’31’ Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler W Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 15 V1TH04 – PIC assembler 1 - 16 Arithmetic instructions - diadic a represents an address, [ a ] the (byte) content of that address, n a (byte) literal Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler Arithmetic instructions - diadic Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 17 V1TH04 – PIC assembler 1 - 18 Wat doet dit code fragment? MOVF ADDWF MOVWF H’20’, w H’21’, w H’21’ Hoe kan dit korter? Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler Arithmetic instructions - monadic a represents an address, [ a ] the (byte) content of that address Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 19 V1TH04 – PIC assembler Arithmetic instructions - monadic Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 20 V1TH04 – PIC assembler 1 - 21 Wat doet dit code fragment? RLF MOVFW RRF H’30’, w H’31’ H’32’, f Het maakt niet uit of je hoofdletters of kleine letters gebruikt, maar CaMelCaSe werkt niet. Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 22 Bit set and clear a represents an address, [ a ] the (byte) content of that address, n a (byte) literal, b a 3-bit literal (a bit number, 0..7), X : b represents bit b of X Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler Bit set and clear Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 23 V1TH04 – PIC assembler 1 - 24 Wat doet dit code fragment? BSF RRF H’03’, 0 H’32’, f Zoek in de INSTRUCTION SET SUMMARY op hoe de RRF instructie precies werkt. Wat gebeurt er als je de BSF instructie weg laat? Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler goto call return Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 25 V1TH04 – PIC assembler In welke volgorde worden de MOVLW instructies uitgevoerd? Start: CALL Main HALT Spagetti: MOVLW 1 CALL spinazie GOTO spinazie MOVLW 2 Spinazie: MOVLW 3 RETURN MOVLW 4 Main: MOVLW 5 CALL spagetti MOVLW 6 Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 26 V1TH04 – PIC assembler Conditional skips a represents an address, [ a ] the (byte) content of that address Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 27 V1TH04 – PIC assembler Conditional skips Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 28 V1TH04 – PIC assembler diversen Hogeschool Utrecht / Institute for Information & Communication Technology 1 - 29 V1TH04 – PIC assembler 1 - 30 Assembler build-in macro’s SKPZ SKPNZ SKPC SKPNC = btfss 3, 2 Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 31 In welke MOVLW instructies worden uitgevoerd? movlw 5 movwf h’30’ btfsc h’30’, 0 movlw 12 btfss h’30’, 1 movlw 13 addlw 252 skpz movlw 14 skpnc movlw 15 Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 32 wat doet dit stukje assembler code? ; delay movlw H'00' delay_loop addlw H'01' skpz goto delay_loop nb: skpz == btfss 3, 2 Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 33 oefening 1 Op geheugenplaatsen H’20’ en H’21’ staan 2 getallen. Schrijf een programma dat deze getallen optelt en het resultaat in H’22’ plaatst (3 instructies) Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 34 oefening 2 Op geheugenplaatsen H’20’ en H’21’ staan 2 getallen. Zet het grootste van deze twee getallen in geheugenplaats H’22’. (diverse oplossingen mogelijk, bv 8 instructies) Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 35 Oefening 3 Op geheugenplaatsen H’20’ en H’21’ staan 2 getallen. Vermenigvuldig deze getallen en plaats het resultaat in H’22’. Na afloop mogen de getallen in H’20’ en H’21’ veranderd zijn. (diverse oplossingen mogelijk, bv 10 instructies. Tip: vermenigvuldigen is herhaald optellen, evt eerst uitschrijven in C of Java) Hogeschool Utrecht / Institute for Information & Communication Technology V1TH04 – PIC assembler 1 - 36 Doen neem de slides nog eens door noteer wat je niet duidelijk is ! neem € 70 mee voor het bordje (gepast!) schrijf de programma’s voor de oefeningen (mag op papier, of in notepad, etc ) dit moet voor volgende week af zijn!! let goed op het verschil tussen MOVLW en MOVWF/MOVF/MOVFW. Hogeschool Utrecht / Institute for Information & Communication Technology