Computertechniek 1 Wouter van Ooijen Mail: [email protected] Sheets en verdere info: www.voti.nl/hvu/2PROJ4 Onderwerp: PIC assembler programmeren Materiaal: - PIC USB target board (€ 50 ), - handouts etc (worden uitgedeeld) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 en code De laatste weken een projectje Het (gewogen) gemiddelde van de opgaven en projectje is uw cijfer • Er is dus geen tentamen Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 3 Voor verder geinteresseerden ISBN 0-07-136172-3 (E 68) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 4 onderwerpen • wat is een microcontroller (embedded, real-time) • wat is assembler • hoe werk je met een microcontroller • wat is een PIC • de PIC16F688 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 6 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 7 Computertechniek ergens in, deel van een geheel, (diep) verstopt, dienstbaar aan waar ‘t in zit vaste functie, dus niet vrij programmeerbaar Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 8 Computertechniek niet: snel zo snel mogelijk interactief, batch wel: op tijd! Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 9 Computertechniek 10 nut responstijd soft real-time! Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 11 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 assembler vertaalt (de ‘compiler’) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 12 een assembler fragment ; delay movlw H'00' delay_loop addlw H'01' skpz goto delay_loop Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 13 Computertechniek 14 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 15 Soorten PICs Processor (core) • 12-bit • 14-bit • 16-bit • 24-bit Behuizing • 6 .. 80 pinnen 14 • DIP, SMD, PLCC DIP Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 16 Soorten PICs Soort geheugen • Mask ROM • OTP EPROM • Window EPROM • Flash Prijzen • $0.25 .. $30 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 17 Soorten PICs Special Features • A/D • UART • Data EEPROM • Timers • Interne oscillator • PWM • USB • … Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 18 Hoe schrijf je een PIC programma • • • • • • • • • HEX Assembler C C++ (beperkt) Jal Pascal Ladder Basic … Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 19 Computertechniek 20 PIC16F688 • • • • • • • 14-pins chip, 12 beschikbaar als I/O Interne clock is (maximaal) 8 MHz met kristal maximaal 20 MHz 4k code (14-bit instructies) 256 general purpose registers (RAM) 256 bytes EEPROM Nanowatt features Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 21 De PIC16F688 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 22 Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 23 Computertechniek 24 basic data paths Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek file-to-file Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 25 Computertechniek W register Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 26 Computertechniek file-to-W Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 27 Computertechniek file and W to file or W Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 28 Computertechniek ALU status flags Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 29 Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 30 Computertechniek use status register Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 31 Computertechniek 32 literal data Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek literals Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 33 Computertechniek goto call return Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 34 Computertechniek conditional Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 35 Computertechniek PIC16F688 memory map Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 36 Computertechniek 37 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 39 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 40 Doen • neem de slides nog eens door noteer wat je niet duidelijk is ! neem € 50 mee voor het bordje schrijf 1 programma (volgende sheet) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek opgave voor volgende week Op geheugenplaatsen H’20’ en H’21’ staan 2 getallen. Vermenigvuldig deze getallen op 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 41