2PROJ5 – PIC assembler 1 Wouter van Ooijen Mail: [email protected] Sheets en verdere info: www.voti.nl/hvu/2PROJ5 Onderwerp: PIC assembler programmeren Materiaal: - PIC USB target board (€ 60 ), - handouts etc (worden uitgedeeld) - Memory stick Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler 2 Wat er van u verwacht wordt • • • • • • • U bent (op tijd!) aanwezig Theorie en praktijk in D212 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 waren • Er is dus geen tentamen, geen projectverslag, etc. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler onderwerpen • wat is een microcontroller (embedded, real-time) • wat is assembler • hoe werk je met een microcontroller • wat is een PIC • de PIC16F917 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 3 2PROJ5 – PIC assembler 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 2PROJ5 – PIC assembler 5 steeds meer transistoren op een chip... losse transistor analoge ICs logica micro processor micro controller programmeerbare logica ‘super’ microprocessor klant-specifieke logica uC als IP Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler ultra-goedkoop chinees, inclusief de documentatie lastig verkrijgbaar general-purpose PIC, Atmel, 8051, 68HC, ... high-end ARM, PowerPC special purpose: DSP, ethernet, USB, analoog, ... Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 6 2PROJ5 – 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 7 2PROJ5 – PIC assembler niet: snel zo snel mogelijk interactief, batch wel: op tijd! Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 8 2PROJ5 – PIC assembler 9 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 2PROJ5 – PIC assembler 10 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 2PROJ5 – 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 luxer: cross-debugger, ICE Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 11 2PROJ5 – PIC assembler Wat is een PIC? • ooit: Peripheral Interface Controller voor de CP1600 microprocessor • nu: merknaam voor een zeer brede reeks microcontrollers van fabrikant Microchip • Harvard-architectuur • concurrenten: AVR (Atmel), 68HC (Motorola), 8051 (diverse fabrikanten), ... Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 12 2PROJ5 – PIC assembler Soorten PICs Processor (core) • 12-bit • 14-bit • 16-bit • 24-bit Behuizing • 6 .. 80 pinnen 40 • DIP, SMD, PLCC DIP Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 13 2PROJ5 – PIC assembler Soorten PICs Soort geheugen • Mask ROM • OTP EPROM • Window EPROM • Flash Prijzen • $0.25 .. $30 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 14 2PROJ5 – PIC assembler Soorten PICs Special Features • A/D • UART • Data EEPROM • Timers • Interne oscillator • PWM • USB • Ethernet • etc Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 15 2PROJ5 – 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 16 2PROJ5 – PIC assembler Hoe krijg je het programma in de PIC • • • • • In de fabriek, eenmalig Eraser / ex-circuit programmer (EPROM) Ex-circuit programmer (FLASH) In-circuit programmer In-circuit debugger Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 17 2PROJ5 – PIC assembler 18 PIC16F917 • • • • • • 40-pins chip, 12 beschikbaar als I/O met kristal maximaal 20 MHz (interne osc 8 MHz) 8k code (14-bit instructies) 256 general purpose registers (RAM) 256 bytes EEPROM Nanowatt features Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler De PIC16F917 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 19 2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 20 2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 21 2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 22 2PROJ5 – PIC assembler 23 file-to-file data paths Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler file-to-file Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 24 2PROJ5 – PIC assembler W register Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 25 2PROJ5 – PIC assembler file-to-W Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 26 2PROJ5 – PIC assembler file ‘op’ W to file or W Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 27 2PROJ5 – PIC assembler ALU status flags (check “status affected”) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 28 2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 29 2PROJ5 – PIC assembler use status register Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 30 2PROJ5 – PIC assembler literal data Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 31 2PROJ5 – PIC assembler literals Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 32 2PROJ5 – PIC assembler goto call return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 33 2PROJ5 – PIC assembler conditional Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 34 2PROJ5 – PIC assembler PIC16F917 memory map Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 35 2PROJ5 – PIC assembler 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 36 2PROJ5 – PIC assembler 37 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 2PROJ5 – PIC assembler 38 oefening 2 Op geheugenplaatsen H’20’ en H’21’ staan 2 getallen. Zet het grootste van deze twee getallen in geheugenplaats H’22’. (bv 8 instructies) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler 39 Doen neem de slides nog eens door noteer wat je niet duidelijk is ! neem € 60 mee voor het bordje schrijf 1 programma (volgende sheet) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 2PROJ5 – PIC assembler 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. vermenigvuldigen is herhaald optellen!) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 40