1 / 20

Mikroprotsessorid

Mikroprotsessorid. PIC16F876A ASSEMBLER. Translaator. Program.asm. Program.hex object code. Translaator. Rakendus. Program.c. Assembler. Assembler kontrollib süntaksi Assembler muudab loetava käskudest teksti objektkoodiks Programm koosneb käskudest ja direktiividest

matt
Download Presentation

Mikroprotsessorid

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. Mikroprotsessorid PIC16F876A ASSEMBLER

  2. Translaator Program.asm Program.hexobject code Translaator Rakendus Program.c

  3. Assembler Assembler kontrollib süntaksi Assembler muudab loetava käskudest teksti objektkoodiks Programm koosneb käskudest ja direktiividest Käsud on konkreetse mikrokontrolleri mnemoonika Direktiivid sunnivad Assemblerit transleerimise ajal midagi erilist tegema Tulemuseks on binaarfail, kus igale käsureale vastab täpselt 1 objektkoodi käsk

  4. Konstandid

  5. Kommentaarid ; Kommentaarid eraldatakse semikooloniga

  6. Protsessori tüüp ; Kommentaarid eraldatakse semikooloniga Processor 16F876A ; Protsessori defineerimine

  7. Headeri fail ; Kommentaarid eraldatakse semikooloniga Processor 16F876A ; Protsessori defineerimine #include “P16F876A.INC” ; Header; #include <P16F876A.INC> ; Võib ka nii

  8. Headeri fail ; Kommentaarid eraldatakse semikooloniga Processor 16F876A ; Protsessori defineerimine #include “P16F876A.INC” ; Include fail ; Register Definitions ;=========================== W EQU H'0000' F EQU H'0001' ;----- 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' PORTB EQU H'0006' PORTC EQU H'0007‘.......... ;----- STATUS BitsIRP EQU H'0007' RP1EQU H'0006' RP0EQU H'0005' NOT_TOEQU H'0004' NOT_PDEQU H'0003' ZEQU H'0002' DCEQU H'0001' CEQU H'0000‘........... d=0: dest=W d=1: dest=f

  9. Konfiguratsioonibitid ; Kommentaarid eraldatakse semikooloniga Processor 16F876A ; Protsessori defineerimine #include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Configuration word 2007h ; P16F876A.INC ...... ; Configuration Bits ;=========================== _BODEN_ON EQU H'3FFF' _BODEN_OFF EQU H'3FBF' _PWRTE_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LP_OSC EQU H'3FFC' _XT_OSC EQU H'3FFD' _HS_OSC EQU H'3FFE' _RC_OSC EQU H'3FFF'..........

  10. ORG – määra koodi absoluutne aadress ; Kommentaarid eraldatakse semikooloniga Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindama

  11. Label - Märgend Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0 et ; adresseerida Block0Katkestus

  12. Cblock – määra muutujate absoluutsed aadressid mälus CblockRR1=0x20Endc CblockRR1=0x20, RR2=0x21, RR3=0x22Endc CblockRR1=0x20:1RR2=0x21:2Endc

  13. Cblock – määra mälupiirkond Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 Endc ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0

  14. EQU – defineeri konstant Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 Endc ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0MOVLW 0x55 ; 55 -> registri W kaudu MOVWF RR01 ; mällu aadressiga RR01

  15. EQU – defineeri konstant Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 Endc Konstant EQU 0x55 ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0MOVLW 0x55 ; 55 -> registri W kaudu MOVWF RR01 ; mällu aadressiga RR01 Konstant

  16. Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 EndcKonstant EQU 0x55 ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0 MOVLW Konstant ; 55 -> registri W kaudu MOVWF RR01 ; mällu aadressiga RR01Loop COMF RR01,F ; F defineeritud “inc” failis MOVF RR01,W ; Võib ka RR01,0 MOVWF PORTB ; W -> PORTB GOTO Loop

  17. END – koodi lõpp Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 EndcKonstant EQU 0x55 ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0 MOVLW Konstant ; 55 -> registri W kaudu MOVWF RR01 ; mällu aadressiga RR01Loop COMF RR01,F ; F defineeritud “inc” failis MOVF RR01,W ; Võib ka RR01,0 MOVWF PORTB ; W -> PORTB GOTO LoopEnd

  18. #DEFINE – asenda tekst millegi muuga Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail #define NULLL 0x00 __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 EndcKonstant EQU 0x55 ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW 0x00 ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0 MOVLW Konstant ; 55 -> registri W kaudu MOVWF RR01 ; mällu aadressiga RR01Loop COMF RR01,F ; F defineeritud “inc” failis MOVF RR01,W ; Võib ka RR01,0 MOVWF PORTB ; W -> PORTB GOTO Loop End NULLL

  19. #DEFINE – asenda tekst millegi muuga Processor 16F876A ; Protsessori defineerimine#include “P16F876A.INC” ; Include fail #define NULLL 0x00 __config _HS_OSC & _WDT_OFF & _LVP_OFF ; NB! AND Cblock RR1 = 0x20 Endc Konstant EQU 0x55 ORG 0x00 ; Reset Vector GOTO Algus ; Mine algusse ORG 0x04 ; Interrupt Vector GOTO Katkestus ; Mine katkestust teenindamaAlgus CLRF STATUS ; STATUS – kõik bitid 0 BSF STATUS,5 ; STATUS – RP0=1 MOVLW NULLL ; 0 -> registri W kaudu MOVWF TRISB ; registrisse TRISB BCF STATUS,5 ; STATUS – RP0=0 MOVLW Konstant ; 55 -> registri W kaudu MOVWF RR01 ; mällu aadressiga RR01Loop COMF RR01,F ; F defineeritud “inc” failis MOVF RR01,W ; Võib ka RR01,0 MOVWF PORTB ; W -> PORTB GOTO Loop End Mille poolest erinevad EQU ja #DEFINE ? EQU mõjub ainult käskudele #DEFINE mõjub ka direktiividele ifdef NULLL NOP ; Need 3 NOP-i lähevad mängu NOP ; ainult kui NULLL NOP ; on defineeritud endif ifndef NULLL NOP ; kui NULLL ei ole enam ; defineeritud, läheb mängu ; ainult 1 NOP endif #undefine NULLL ; NULLL ei ole enam defineeritud

More Related