Wouter van Ooijen Mail: [email protected] Sheets en verdere info:

45
Hogeschool Utrecht / Institute for Information & Communicati on Technology 1 - 1 2TPRJ5 – PIC assembler Wouter van Ooijen Mail: [email protected] Sheets en verdere info: www.voti.nl/hvu/2TPRJ5 (deze link staat ook op sharepoint) Onderwerp: PIC assembler programmeren Materiaal: - PIC USB target board (€ 60 ) - handouts etc (worden uitgedeeld) - (thuis) PC met XP of Vista (met USB) - Memory stick

description

Wouter van Ooijen Mail: [email protected] Sheets en verdere info: www.voti.nl/hvu/2TPRJ5 (deze link staat ook op sharepoint) Onderwerp: PIC assembler programmeren Materiaal: - PIC USB target board ( € 60 ) - handouts etc (worden uitgedeeld) - PowerPoint PPT Presentation

Transcript of Wouter van Ooijen Mail: [email protected] Sheets en verdere info:

Page 1: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 12TPRJ5 – PIC assembler

Wouter van Ooijen

Mail: [email protected]

Sheets en verdere info:

www.voti.nl/hvu/2TPRJ5

(deze link staat ook op sharepoint)

Onderwerp: PIC assembler programmeren

Materiaal: - PIC USB target board (€ 60 )

- handouts etc (worden uitgedeeld)

- (thuis) PC met XP of Vista (met USB)

- Memory stick

Page 2: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 22TPRJ5 – PIC assembler

Wat er van u verwacht wordt

• U bent (op tijd!) aanwezig

• Theorie in D05.18 (vanaf 10;50), praktijk in C01.14• 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.

Page 3: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 32TPRJ5 – PIC assembler

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

Page 4: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 42TPRJ5 – PIC assembler

Onderwerpen voor vandaag

• wat is een microcontroller

(embedded, real-time)

• wat is assembler

• hoe werk je met een microcontroller

• wat is een PIC

• de PIC16F887

Page 5: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 52TPRJ5 – PIC assembler

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

Page 6: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 62TPRJ5 – PIC assembler

ultra-goedkoop

chinees, inclusief de documentatie lastig verkrijgbaar (in kleinere aantallen,

zeg < 10^5)

general-purpose

PIC, Atmel, 8051, 68HC, ...

high-end

ARM, PowerPC

special purpose:

DSP, ethernet, USB, analoog, LCD, ...

Page 7: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 72TPRJ5 – PIC assembler

ergens in,

deel van een geheel,

(diep) verstopt,

dienstbaar aan waar ‘t in zit vaste functie,

dus niet vrij programmeerbaar

Deeply embedded : zo diep dat je de computer zelf niet meer ziet

Page 8: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 82TPRJ5 – PIC assembler

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’)

Page 9: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 92TPRJ5 – PIC assembler

; delay

movlw H'00'

delay_loop:

addlw H'01'

skpz

goto delay_loop

een assembler fragment

Page 10: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 102TPRJ5 – PIC assembler

bijna altijd cross-development:bijna altijd cross-development: jij werkt op een PCjij werkt op een PC daar draait je editor, compiler, daar draait je editor, compiler,

assembler, linkerassembler, linker loader of programmer om te ladenloader of programmer om te laden burn and crash burn and crash luuxer: cross-debugger, ICEluuxer: cross-debugger, ICE

Page 11: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 112TPRJ5 – 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),

Page 12: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 122TPRJ5 – PIC assembler

Soorten PICsProcessor (core)

– 12-bit (max 2k code, 2-level stack, geen interrupts)

– 14-bit (max 8k code, 8-level stack)

– 16-bit– 24-bit– 32-bit

Behuizing– 6 .. 80 pinnen 40– DIP, SMD, PLCC DIP

volkomen andere processors

Page 13: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 132TPRJ5 – PIC assembler

Soorten PICs

Soort geheugen– Mask ROM– OTP EPROM– Window EPROM– Flash – Reduced Flash

Prijzen (@ 1)

– $0.50 .. $30

Page 14: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 142TPRJ5 – PIC assembler

Hoe schrijf je een PIC programma

• HEX

• Assembler • C

• C++ (beperkt)

• Jal

• Pascal

• Ladder

• Basic

• …

Page 15: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 152TPRJ5 – 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)

Page 16: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 162TPRJ5 – PIC assembler

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)

Page 17: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 172TPRJ5 – PIC assembler

Page 18: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 182TPRJ5 – 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’!

Page 19: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 192TPRJ5 – PIC assembler

Page 20: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 202TPRJ5 – PIC assembler

File Registers (SFR, GPR)

Page 21: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 212TPRJ5 – PIC assembler

Page 22: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 222TPRJ5 – PIC assembler

a represents an address, [ a ] the (byte) content of that address

Literal to W, W to file, file to W

Page 23: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 232TPRJ5 – PIC assembler

MOVF H’20’, W

MOVWF H’21’

MOVLW H’30’

MOVWF H’31’

Wat doet dit code fragment?

Page 24: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 242TPRJ5 – PIC assembler

W

Page 25: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 252TPRJ5 – PIC assembler

a represents an address, [ a ] the (byte) content of that address, n a (byte) literal

Arithmetic instructions - diadic

Page 26: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 262TPRJ5 – PIC assembler

Arithmeticinstructions

- diadic

Page 27: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 272TPRJ5 – PIC assembler

MOVF H’20’, w

ADDWF H’21’, w

MOVWF H’21’

Wat doet dit code fragment?

Hoe kan dit korter?

Page 28: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 282TPRJ5 – PIC assembler

a represents an address, [ a ] the (byte) content of that address

Arithmetic instructions - monadic

Page 29: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 292TPRJ5 – PIC assembler

Arithmeticinstructions- monadic

Page 30: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 302TPRJ5 – PIC assembler

RLF H’30’, w

MOVFW H’31’

RRF H’32’, f

Wat doet dit code fragment?

Het maakt niet uit of je hoofdletters of kleine letters gebruikt, maar CaMelCaSe werkt niet.

Page 31: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 312TPRJ5 – PIC assembler

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

Bit set and clear

Page 32: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 322TPRJ5 – PIC assembler

Bit set and clear

Page 33: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 332TPRJ5 – PIC assembler

BSF H’03’, 0

RRF H’32’, f

Wat doet dit code fragment?

Zoek in de INSTRUCTION SET SUMMARY op hoe de RRF instructie precies werkt.

Wat gebeurt er als je de BSF instructie weg laat?

Page 34: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 342TPRJ5 – PIC assembler

gotocall

return

Page 35: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 352TPRJ5 – PIC assembler

Start:CALL MainHALT

Spagetti:MOVLW 1CALL spinazieGOTO spinazieMOVLW 2

Spinazie:MOVLW 3RETURNMOVLW 4

Main:MOVLW 5CALL spagettiMOVLW 6

In welke volgorde worden de MOVLW instructies uitgevoerd?

Page 36: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 362TPRJ5 – PIC assembler

a represents an address, [ a ] the (byte) content of that address

Conditional skips

Page 37: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 372TPRJ5 – PIC assembler

Conditionalskips

Page 38: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 382TPRJ5 – PIC assembler

diversen

Page 39: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 392TPRJ5 – PIC assembler

Assembler build-in macro’s

SKPZ = btfss 3, 2

SKPNZ

SKPC

SKPNC

Page 40: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 402TPRJ5 – PIC assembler

movlw 5movwf h’30’btfsc h’30’, 0

movlw 12btfss h’30’, 1

movlw 13addlw 252skpz

movlw 14skpnc

movlw 15

In welke MOVLW instructies worden uitgevoerd?

Page 41: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 412TPRJ5 – 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

Page 42: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 422TPRJ5 – PIC assembler

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)

Page 43: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 432TPRJ5 – PIC assembler

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)

Page 44: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 442TPRJ5 – PIC assembler

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)

Page 45: Wouter van Ooijen        Mail:  wouter.vanooijen@hu.nl Sheets en verdere info:

Hogeschool Utrecht / Institute for Information & Communication Technology

1 - 452TPRJ5 – PIC assembler

Doen

neem de slides nog eens door noteer wat je niet duidelijk is ! neem € 60 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.