Computertechniek 1 Les 2 - onderwerpen MPLAB • Herhaling instructieset • De assembler en de simulator • Assembler pseudo-instructions • Programmeren 1: delay N ms • Programmeren 2: jumptable Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek Instructies: file + w => file /w Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 2 Computertechniek Instructies: bit set/clear, bit test Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 3 Computertechniek Instructies: file + literal => file /w, diversen Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 4 Computertechniek 5 MPLAB IDE IDE : Integrated Development Environment • Project management • Editor • Assembler • Programmer/debugger interface(s) • Integration of third-party tools (compilers) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 6 Gebruik van MPLAB (Zie ook de MPLAB quick start guide op de Microchip website ) • Start MPLAB • Controleer: Configure Select Device 16F688 • (als je het bordje hebt aangesloten) Controleer: Programmer Select Programmer 5 PICkit 1 • 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 • 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 7 Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 8 Computertechniek 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 van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 9 Computertechniek PIC16F688 memory map Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 10 Computertechniek Assembler : variabelen Absolute adressen: movfw H’20’ movwf H’21 Met #define of EQU: #define A H’20’ B EQU H’21’ movfw A movwf B Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 11 Computertechniek Assembler : variabelen cblock cblock 0x20 ; name_1, name_2 name_3, name_4 ; endc ... cblock name_5, name_6 endc Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 12 Computertechniek Assembler template (zie website) list p=16f688, f=inhx32 #include <P16F688.INC> __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & … movlwB'01110000' bsf H'03', 5 movwf H'8F' bcf H'03', 5 org 0 cblock H’20’ endc ; hier komt uw code sleep END Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 13 Computertechniek 14 Een stukje van PIC16F688.INC ;----- Register Files----------------------------INDF TMR0 PCL STATUS FSR PORTA EQU EQU EQU EQU EQU EQU H'0000' H'0001' H'0002' H'0003' H'0004' H'0005' PORTC EQU H'0007' PCLATH INTCON PIR1 EQU EQU EQU H'000A' H'000B' H'000C' Staat op C:/Program Files/MPLAB IDE/MChIP_Tools Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek Programmeren 1: Een delay subroutine • • • • Een instructie duurt 0.5 us (8 MHz, 2 MIPS) Een ‘geskipte’ instructie ook! Behalve GOTO, CALL, RETURN: 1 us Maak een subroutine die W ms wacht • Test dmv de stopwatch/instructie counter Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 15 Computertechniek PIC16F688 memory map Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 16 Computertechniek 17 PC manipulatie • PCL is de laagste 8 bits van de program counter (PC) • Maar: schrijven naar PCL schrijft die waarde naar PC[0..7], + PCLATH naar PC[8..] • Hiermee kan je een jumptable maken: spring naar een plek N plaatsen verder • Nuttig in combinatie met RETLW X Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren Computertechniek Programmeren 2: Een jump table • Maak een subroutine die afhankelijk van de waarde in W bij de aanroep een waarde in W teruggeeft: 00 11 24 39 … 9 81 • Boven 9 is het effect niet gedefinieerd Maak een overtuigende test! Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 18