Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
12PROJ5 – PIC assembler
Les 2 - onderwerpen
Helaas nog geen printjes• Uitwerking opgaven 1 en 2• Herhaling instructieset• Assembler ‘truukjes’ • MPLAB• Simuleren• Opgaven: delay W ms, jumptable
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
22PROJ5 – 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
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
32PROJ5 – PIC assembler
SUBWF instruction (1)
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
42PROJ5 – PIC assembler
SUBWF instruction (2)
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
52PROJ5 – PIC assembler
oefening 2 : maximum (1); 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’22’ 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
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
62PROJ5 – PIC assembler
oefening 2 : maximum (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'
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
72PROJ5 – PIC assembler
oefening 2 : maximum (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'
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
82PROJ5 – PIC assembler
Instructies: file + w => file of w
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
92PROJ5 – PIC assembler
Instructies: bit set/clear, bit test
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
102PROJ5 – PIC assembler
Instructies: file ‘op’ literal => file of w, diversen (control)
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
112PROJ5 – 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
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
122PROJ5 – PIC assembler
Meer assembler “truukjes”
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
132PROJ5 – PIC assembler
MPLAB IDE
IDE : Integrated Development Environment
• Project management
• Editor
• Assembler
• Programmer/debugger interface(s)
• Integration of third-party tools (compilers)
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
142PROJ5 – PIC assembler
Gebruik van MPLAB(Zie ook de MPLAB quick start guide op de Microchip website )• Start MPLAB• Controleer: Configure Select Device 16F917• 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
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
152PROJ5 – 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!
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
162PROJ5 – 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.)
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
172PROJ5 – 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
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
182PROJ5 – PIC assembler
Doen
test je ‘vermenigvuldig’ programma in de simulator
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
192PROJ5 – PIC assembler
PIC16F917 memory map
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
202PROJ5 – PIC assembler
Assembler : variabelen
Absolute adressen:
Met #define of EQU:
movfw H’20’
movwf H’21
#define A H’20’
B EQU H’21’
movfw A
movwf B
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
212PROJ5 – PIC assembler
Assembler : variabelencblock
cblock 0x20name_1, name_2 name_3, name_4
endc ...cblock
name_5 name_6 : 2
endc
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
222PROJ5 – PIC assembler
Assembler template (zie website)
list p=16f917, f=inhx32#include <P16F917.INC>
org 0cblock H’20’ endc
; hier komt uw code
sleepEND
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
232PROJ5 – PIC assembler
Een stukje van PIC16F917.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
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
242PROJ5 – PIC assembler
Programmeren 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
• Test dmv de stopwatch/instructie counter
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
252PROJ5 – PIC assembler
PC manipulatie
• PCL is de laagste 8 bits van de program counter (PC)
• Maar: schrijven naar PCL schrijft die waarde naar PC[0..7], en PCLATH naar PC[8..]
• Hiermee kan je een jumptable maken: spring naar een plek N plaatsen verder
• Nuttig in combinatie met RETLW X
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
262PROJ5 – PIC assembler
PC manipulatie
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
272PROJ5 – PIC assembler
Programmeren 2: Een jump table• Maak een subroutine die afhankelijk van de waarde in W bij
de aanroep een waarde in W teruggeeft:0 0 1 1 2 4 3 9 … 9 81
• Boven 9 is het effect niet gedefinieerd; neem aan dat de waarde in PCLATH in order is
Maak een overtuigende test!
Top Related