1 / 36

Les 2 - onderwerpen

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.

tanek
Download Presentation

Les 2 - onderwerpen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  2. file + w => (same) file, of w Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  3. Instructies: bit set/clear, bit test Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  4. file ‘op’ literal => (same) file of w, controldiversen Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  5. Assembler “truukjes” • Ingebouwd: SKPZ, SKPNZ, SKPC, SKPNC STEC, CLRC, SETZ, CLRZ MOVFW • Macro’s: #define W 0 #define F 1 Let op mogelijke fouten, wat doet: RRC W, F Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  6. 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

  7. SUBWF instruction (1) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  8. SUBWF instruction (2) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  9. oefening 2 : maximum ( C ) // versie 1 if( a > b ){ max = a; } else { max = b; } // versie 2 max = a; if( b > a ){ max = b; } // versie 3 max = ( a > b ) a : b; Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  10. oefening 2 : maximum (versie 1a) ; bepaal het maximum van de variabelen H'20' en H'21' ; stop dit maximum in H'22‘(10 instructies) ; vergelijk movfw 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' groter kleiner movfw H'21' movwf H'22' goto klaar groter ; als we hier komen was H'20' dus groter movfw H'20' movwf H'22' klaar Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  11. oefening 2 : maximum (versie 1b) ; bepaal het maximum van de variabelen H'20' en H'21' ; stop dit maximum in H'22‘(9 instructies) ; vergelijk movfw 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 groter movfw H'20' movwf H'22' goto klaar ; als we hier komen was H'21' groter kleiner movfw H'21' movwf H'22' klaar Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  12. oefening 2 : maximum (versie 2) ; dat kan ook wat korter (6 instructies) ; neem aan dat H'20' het maximum is movf H'20', w movwf H'22' ; vergelijk met H'21' ; movfw H'20' is niet nodig, dat zit al in W subwf H'21', w ; dit beinvloedt de C flag niet!!! movf H'21', w skpnc movfw H'22' Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  13. oefening 2 : maximum (versie 3) ; of zo (ook 6 instructies) ; vergelijk movfw H'20' subwf H'21', w ; dit beinvloed de flags niet!!! movf H'20', w skpnc movf H'21', w movwf H'22' Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  14. PIC16F887 memory map Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  15. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  16. Assembler : variabelen – laat ‘cblock’ het doen cblock 0x20 name_1, name_2 name_3, name_4 endc ... cblock name_5 name_6 : 2 endc Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  17. Assembler template (zie website) list p=16f887, f=inhx32 #include <P16F887.INC> org 0 cblock H’20’ endc ; hier komt uw code sleep END Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  18. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  19. read-modify-write : IO pin Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  20. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  21. subroutine voorbeeld wait addlw 0 skpz return addlw 1 goto wait ... ... movlw D’200’ call wait Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  22. 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! Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  23. wat is een macro • naam voor een aantal regels text • wordt letterlijk ingevoegd bank0 macro bcf STATUS, RP0 bcf STATUS, RP1 endm Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  24. wat is een macro • Kan (textuele) parameters parameters hebben double macro REGISTER bcf STATUS, C rlf REGISTER, f endm Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  25. macro voorbeeld en gebruik FLUSH_ MACRO MACRO Shadow, Port CBLOCK Shadow ENDC MOVFW Shadow MOVWF Port RETURN ENDM PORTA_FLUSH FLUSH_MACRO PORTA_SHADOW, PORTA PORTB_FLUSH FLUSH_MACRO PORTB_SHADOW, PORTB PORTC_FLUSH FLUSH_MACRO PORTC_SHADOW, PORTC PORTD_FLUSH FLUSH_MACRO PORTD_SHADOW, PORTD PORTE_FLUSH FLUSH_MACRO PORTE_SHADOW, PORTE Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  26. Macro – listing (.lst) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  27. 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_FLUSH movfw PORTA_SHADOW movwf PORTA return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  28. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  29. 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

  30. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  31. 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

  32. 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

  33. 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

  34. Doen  test je ‘vermenigvuldig’ programma in de simulator, laat het aftekenen als het werkt Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  35. 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 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  36. 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. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

More Related