2TPRJ5 – PIC assembler Wouter van Ooijen Mail: [email protected] Sheets en verdere info: www.voti.nl/hvu/2TPRJ5 Onderwerp: Materiaal: PIC assembler programmeren - PIC USB target board (€ 60 ) - handouts etc (worden uitgedeeld) - (thuis) PC met XP - Memory stick Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1-1 2TPRJ5 – PIC assembler 1-2 Wat er van u verwacht wordt • • • • • • • U bent (op tijd!) aanwezig Theorie en praktijk in D212 / D213 De eerste weken iedere week een of meer opgave(n) 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler onderwerpen • wat is een microcontroller (embedded, real-time) • wat is assembler • hoe werk je met een microcontroller • wat is een PIC • de PIC16F887 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1-3 2TPRJ5 – PIC assembler 1-4 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler ultra-goedkoop chinees, inclusief de documentatie lastig verkrijgbaar (in kleinere aantallen) general-purpose PIC, Atmel, 8051, 68HC, ... high-end ARM, PowerPC special purpose: DSP, ethernet, USB, analoog, LCD, ... Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1-5 2TPRJ5 – PIC assembler ergens in, deel van een geheel, (diep) verstopt, dienstbaar aan waar ‘t in zit vaste functie, dus niet vrij programmeerbaar Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1-6 2TPRJ5 – PIC assembler niet: snel zo snel mogelijk interactief, batch wel: op tijd! Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1-7 2TPRJ5 – PIC assembler 1-8 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler 1-9 een assembler fragment ; delay movlw H'00' delay_loop: addlw H'01' skpz goto delay_loop Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2TPRJ5 – PIC assembler bijna altijd cross-development: jij werkt op een PC daar draait je editor, compiler, assembler, linker loader of programmer om te laden burn and crash luuxer: cross-debugger, ICE Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 10 2TPRJ5 – PIC assembler Wat is een PIC? • ooit: Peripheral Interface Controller voor de CP1600 minicomputer • nu: merknaam voor een zeer brede reeks 8-bit microcontrollers van fabrikant Microchip • Harvard-architectuur • concurrenten: AVR (Atmel), 68HC, MSP430 (Motorola), 8051, ARM (diverse fabrikanten), Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 11 2TPRJ5 – PIC assembler Soorten PICs Processor (core) – 12-bit (max 2k code, 2-level stack, geen interrupts) – 14-bit (max 8k code, 8-level stack) – 16-bit – 24-bit Behuizing – 6 .. 80 pinnen 40 – DIP, SMD, PLCC DIP Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 12 2TPRJ5 – PIC assembler Soorten PICs Soort geheugen – Mask ROM – OTP EPROM – Window EPROM – Flash – Reduced Flash Prijzen (@ 1) – $1.00 .. $30 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 13 2TPRJ5 – PIC assembler 1 - 14 PIC extra’s • • • • • • • • • • A/D (8, 10 of 12 bits) UART Data EEPROM Timers Interne oscillator PWM uitgangen USB slave interface Ethernet interface comparator etc Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2TPRJ5 – PIC assembler Hoe schrijf je een PIC programma • • • • • • • • • HEX Assembler C C++ (beperkt) Jal Pascal Ladder Basic … Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 15 2TPRJ5 – PIC assembler Hoe krijg je het programma in de PIC • • • • • In de fabriek, eenmalig (mask ROM) Eraser / ex-circuit programmer (EPROM) Ex-circuit programmer (FLASH) In-circuit programmer (In-circuit debugger) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 16 2TPRJ5 – PIC assembler 1 - 17 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 Nanowatt features Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2TPRJ5 – PIC assembler De PIC16F887 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 18 2TPRJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 19 2TPRJ5 – PIC assembler PIC programming model • W (accumulator) • Flags • File registers (memory) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 20 2TPRJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 21 2TPRJ5 – PIC assembler File Registers (SFR, GPR) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 22 2TPRJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 23 2TPRJ5 – 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 Computer, Communication and Media Technology 1 - 24 2TPRJ5 – PIC assembler W Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 25 2TPRJ5 – PIC assembler 1 - 26 Arithmetic instructions - diadic a represents an address, [ a ] the (byte) content of that address, n a (byte) literal Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2TPRJ5 – PIC assembler Arithmetic instructions - diadic Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 27 2TPRJ5 – PIC assembler Arithmetic instructions - monadic a represents an address, [ a ] the (byte) content of that address Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 28 2TPRJ5 – PIC assembler Arithmetic instructions - monadic Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 29 2TPRJ5 – PIC assembler 1 - 30 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler Bit set and clear Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 31 2TPRJ5 – PIC assembler goto call return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 32 2TPRJ5 – PIC assembler Conditional skips a represents an address, [ a ] the (byte) content of that address Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 33 2TPRJ5 – PIC assembler Conditional skips Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 34 2TPRJ5 – PIC assembler diversen Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 - 35 2TPRJ5 – PIC assembler 1 - 36 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler 1 - 37 Assembler build-in macro’s SKPZ SKPNZ SKPC SKPNC = btfss 3, 2 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2TPRJ5 – PIC assembler 1 - 38 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler 1 - 39 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 Computer, Communication and Media Technology 2TPRJ5 – PIC assembler 1 - 40 Doen neem de slides nog eens door noteer wat je niet duidelijk is ! neem € 60 mee voor het bordje (gepast!) schrijf 1 programma (volgende sheet) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2TPRJ5 – PIC assembler 1 - 41 opgave voor volgende week 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 Computer, Communication and Media Technology