Les 2 - onderwerpen

36
Hogeschool Utrecht / Institute for Computer, Communication a nd Media Technology 1 2PROJ5 – PIC assembler Les 2 - onderwerpen Herhaling instructieset Assembler ‘truukjes’ Uitwerking opgaven vorig les Alloceren van variabelen Gebruik van shadow registers Subroutines en macro’s Gebruik van MPLAB Simuleren met MPLAB Opgaven: delay W ms, kwardraat

description

Les 2 - onderwerpen. Herhaling instructieset Assembler ‘truukjes’ Uitwerking opgaven vorig les Alloceren van variabelen Gebruik van shadow registers Subroutines en macro’s Gebruik van MPLAB Simuleren met MPLAB Opgaven: delay W ms, kwardraat. file + w => (same) file, of w. - PowerPoint PPT Presentation

Transcript of Les 2 - onderwerpen

Page 1: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

12PROJ5 – PIC assembler

Les 2 - onderwerpen• Herhaling instructieset• Assembler ‘truukjes’ • Uitwerking opgaven vorig les• Alloceren van variabelen• Gebruik van shadow registers• Subroutines en macro’s• Gebruik van MPLAB• Simuleren met MPLAB• Opgaven: delay W ms, kwardraat

Page 2: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

22PROJ5 – PIC assembler

file + w => (same) file, of w

Page 3: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

32PROJ5 – PIC assembler

Instructies: bit set/clear, bit test

Page 4: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

42PROJ5 – PIC assembler

file ‘op’ literal => (same) file of w, controldiversen

Page 5: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

52PROJ5 – PIC assembler

Assembler “truukjes”

• Ingebouwd:SKPZ, SKPNZ, SKPC, SKPNCSTEC, CLRC, SETZ, CLRZMOVFW

• Macro’s:#define W 0#define F 1Let op mogelijke fouten, wat doet:

RRC W, F

Page 6: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

62PROJ5 – PIC assembler

oefening 1 : optellen

; tel de variabelen H'20' en H'21' op,

; stop de som in H'22'

movf H'20', w

addwf H'21', w

movwf H'22'

sleep ; zet dit na je code

end ; zet dit aan het einde van je file

Page 7: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

72PROJ5 – PIC assembler

SUBWF instruction (1)

Page 8: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

82PROJ5 – PIC assembler

SUBWF instruction (2)

Page 9: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

92PROJ5 – PIC assembler

oefening 2 : maximum ( C )// versie 1if( a > b ){ max = a;} else { max = b;}

// versie 2max = a;if( b > a ){ max = b;}

// versie 3max = ( a > b ) a : b;

Page 10: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

102PROJ5 – PIC assembler

oefening 2 : maximum (versie 1a); bepaal het maximum van de variabelen H'20' en H'21'; stop dit maximum in H'22‘(10 instructies)

; vergelijkmovfw H'20'subwf H'21', w ; H’21’ – H’20’skpnc ; C resultaat is positief H’20’ is kleiner goto kleiner ; C neem H’21’goto groter

; als we hier komen was H'21' groterkleiner

movfw H'21'movwf H'22'goto klaar

groter; als we hier komen was H'20' dus grotermovfw H'20'movwf H'22'

klaar

Page 11: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

112PROJ5 – PIC assembler

oefening 2 : maximum (versie 1b); bepaal het maximum van de variabelen H'20' en H'21'; stop dit maximum in H'22‘(9 instructies)

; vergelijkmovfw H'20'subwf H'21', w ; H’21’ – H’20’skpnc ; C resultaat is positief H’20’ is kleiner goto kleiner ; C neem H’21’

; als we hier komen was H'20' dus grotermovfw H'20'movwf H'22'goto klaar

; als we hier komen was H'21' groterkleiner

movfw H'21'movwf H'22'

klaar

Page 12: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

122PROJ5 – PIC assembler

oefening 2 : maximum (versie 2); dat kan ook wat korter (6 instructies)

; neem aan dat H'20' het maximum ismovf H'20', wmovwf H'22'

; vergelijk met H'21'; movfw H'20' is niet nodig, dat zit al in Wsubwf H'21', w

; dit beinvloedt de C flag niet!!!movf H'21', wskpnc movfw H'22'

Page 13: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

132PROJ5 – PIC assembler

oefening 2 : maximum (versie 3)

; of zo (ook 6 instructies)

; vergelijkmovfw H'20'subwf H'21', w

; dit beinvloed de flags niet!!!movf H'20', wskpnc movf H'21', wmovwf H'22'

Page 14: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

142PROJ5 – PIC assembler

PIC16F887 memory map

Page 15: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

152PROJ5 – PIC assembler

Assembler : variabelen – doe het zelf

Absolute adressen:

Of met #define of EQU:

movfw H’20’

movwf H’21

#define A H’20’

B EQU H’21’

movfw A

movwf B

Page 16: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

162PROJ5 – PIC assembler

Assembler : variabelen – laat ‘cblock’ het doen

cblock 0x20name_1, name_2 name_3, name_4

endc ...cblock

name_5 name_6 : 2

endc

Page 17: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

172PROJ5 – PIC assembler

Assembler template (zie website)

list p=16f887, f=inhx32#include <P16F887.INC>

org 0cblock H’20’ endc

; hier komt uw code

sleepEND

Page 18: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

182PROJ5 – PIC assembler

Een stukje van PIC16F887.INC ;----- Register Files-----------------------------

INDF EQU H'0000'TMR0 EQU H'0001'PCL EQU H'0002'STATUS EQU H'0003'FSR EQU H'0004'PORTA EQU H'0005'

PORTC EQU H'0007'

PCLATH EQU H'000A'INTCON EQU H'000B'PIR1 EQU H'000C'

Staat op C:/Program Files/MPLAB IDE/MChIP_Tools

Page 19: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

192PROJ5 – PIC assembler

read-modify-write : IO pin

Page 20: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

202PROJ5 – PIC assembler

read-modify-write (fout)

clrf PORTA

bsf PORTA, 0

bsf PORTA, 1

bsf PORTA, 2

bsf PORTA, 3

bsf PORTA, 4

bsf PORTA, 5

bsf PORTA, 6

bsf PORTA, 7

Page 21: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

212PROJ5 – PIC assembler

subroutine voorbeeld

wait

addlw 0

skpz

return

addlw 1

goto wait

...

...

movlw D’200’

call wait

Page 22: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

222PROJ5 – PIC assembler

subroutine

• lijkt op een C/Java/C# functie maar veel primitiever

• label waar je met een call instructie heen springt

• daar een reeks instructies

• een return (of retlw) instructie brengt je terug

• er is een stack voor de return adressen

• die stack is maar 8 niveau’s diep

• volgorde van subroutines en main is niet belangrijk, maar

• let wel op als je subroutines vooraan staan!

Page 23: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

232PROJ5 – PIC assembler

wat is een macro

• naam voor een aantal regels text• wordt letterlijk ingevoegd

bank0 macro

bcf STATUS, RP0

bcf STATUS, RP1

endm

Page 24: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

242PROJ5 – PIC assembler

wat is een macro

• Kan (textuele) parameters parameters hebben

double macro REGISTER

bcf STATUS, C

rlf REGISTER, f

endm

Page 25: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

252PROJ5 – PIC assembler

macro voorbeeld en gebruikFLUSH_ MACRO MACRO Shadow, Port

CBLOCKShadow

ENDCMOVFW ShadowMOVWF PortRETURNENDM

PORTA_FLUSH FLUSH_MACRO PORTA_SHADOW, PORTAPORTB_FLUSH FLUSH_MACRO PORTB_SHADOW, PORTBPORTC_FLUSH FLUSH_MACRO PORTC_SHADOW, PORTCPORTD_FLUSH FLUSH_MACRO PORTD_SHADOW, PORTDPORTE_FLUSH FLUSH_MACRO PORTE_SHADOW, PORTE

Page 26: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

262PROJ5 – PIC assembler

Macro – listing (.lst)

Page 27: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

272PROJ5 – PIC assembler

read-modify-write (goed)

clrf PORTA_SHADOW

call PORTA_FLUSH

bsf PORTA_SHADOW, 0

call PORTA_FLUSH

bsf PORTA_SHADOW, 1

call PORTA_FLUSH

bsf PORTA_SHADOW, 2

call PORTA_FLUSH

...

PORTA_FLUSHmovfw PORTA_SHADOW

movwf PORTA

return

Page 28: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

282PROJ5 – PIC assembler

Macro Subroutine

• marco heeft geen call/return

(gebruikt de stack niet)• subroutine aanroep is altijd 1 statement• macro ‘aanroep’ voegt de complete macro in• een macro kan assembly-time argumenten hebben

Page 29: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

292PROJ5 – PIC assembler

MPLAB IDE

IDE : Integrated Development Environment

• Project management

• Editor

• Assembler

• Programmer/debugger interface(s)

• Integration of third-party tools (compilers)

Page 30: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

302PROJ5 – PIC assembler

Gebruik van MPLAB(Zie ook de MPLAB quick start guide op de Microchip website )• Start MPLAB• Controleer: Configure Select Device 16F887• Start een project: Project New kies een project naam, zet

project directory naar keuze lokaal, op je USB stick, of op (in directory in) je network drive (heel erg lange pad-namen kunnen problemen geven)

• Of open een bestaand project: Project Open kies een bestaand project

• Een nieuwe file creeren: File New; File Save As mag zelfde naam als project (als het de hoofdfile is, of als je maar 1 file gebruikt)

• Een assembler file toevoegen aan een project: Project Add Files to Project double click to add the file as source file

Page 31: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

312PROJ5 – PIC assembler

Gebruik van de assembler

• Check: edit properties editor tab zet “line numbers’ aan

• Edit je file

(saven is niet nodig maar wel verstandig)• Assembleren en linken: Project Build All• Herhalen tot de fouten en warnings eruit zijn!

Page 32: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

322PROJ5 – PIC assembler

Gebruik van de simulator

• Debugger select tool MPLAB SIM• Debugger reset processor reset (F6)• Debugger Clear Memory GPRs (let op!)• Debugger step into (F7)• View 4 File Registers• View 5 Special Function Registers

(Waarden die in de vorige stap zijn veranderd worden rood weergegeven.)

Page 33: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

332PROJ5 – PIC assembler

Gebruik van de simulator

• Stap nu een aantal keren tot je denkt dat je programma-lus goed werkt (F6)

• Double-click op de regel na een loop om een breakpoint te zetten

• Debugger Run (F9)• Controleer of het resultaat klopt

Page 34: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

342PROJ5 – PIC assembler

Doen

test je ‘vermenigvuldig’ programma in de simulator, laat het aftekenen als het werkt

Page 35: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

352PROJ5 – PIC assembler

Programmeer opgave 1: Een delay subroutine

• Een instructie duurt 0.2 us (20 MHz, 5 MIPS)• Een ‘geskipte’ instructie ook!• Behalve GOTO, CALL, RETURN: 0.4 us

Maak een subroutine die W ms wacht (naukeurigheid 1% of beter)

• Test dmv de stopwatch/instructie counter

Page 36: Les 2 - onderwerpen

Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

362PROJ5 – PIC assembler

Programmeer opgave 2: een kwardraat functie

Schrijf een macro if_return met twee parameters X en Y. Als W de waarde X bevat dan voert de macro een ‘RETLW Y’ instructie uit.

Schrijf met behulp van deze macro een subroutine die de waarde in W kwardrateert, mits W kleiner is dan of gelijk aan 6. Zo niet dan wordt de waarde 0 teruggegeven.

• Test je routine in de simulator.