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
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.
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
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
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
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, ...
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
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’)
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
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
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),
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
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
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
• …
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)
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)
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 172TPRJ5 – PIC assembler
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’!
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 192TPRJ5 – PIC assembler
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 202TPRJ5 – PIC assembler
File Registers (SFR, GPR)
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 212TPRJ5 – PIC assembler
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
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?
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 242TPRJ5 – PIC assembler
W
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
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 262TPRJ5 – PIC assembler
Arithmeticinstructions
- diadic
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?
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
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 292TPRJ5 – PIC assembler
Arithmeticinstructions- monadic
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.
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
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 322TPRJ5 – PIC assembler
Bit set and clear
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?
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 342TPRJ5 – PIC assembler
gotocall
return
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?
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 362TPRJ5 – PIC assembler
a represents an address, [ a ] the (byte) content of that address
Conditional skips
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 372TPRJ5 – PIC assembler
Conditionalskips
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 382TPRJ5 – PIC assembler
diversen
Hogeschool Utrecht / Institute for Information & Communication Technology
1 - 392TPRJ5 – PIC assembler
Assembler build-in macro’s
SKPZ = btfss 3, 2
SKPNZ
SKPC
SKPNC
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?
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
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)
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)
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)
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.