PIC16F84 MC üçün Assembler əmrləri. PIC16F84 MC üçün Assembler proqramlarının strukturu və daxili əmr kodunun strukturu Hexadecimal koda çevrilməsinin.

Презентация:



Advertisements
Похожие презентации
PIC16F84 MC üçün Assembler əmrləri. PIC16F84 MC üçün Assembler proqramlarının strukturu və daxili əmr kodunun strukturu Hexadecimal koda çevrilməsinin.
Advertisements

Транксрипт:

PIC16F84 MC üçün Assembler əmrləri

PIC16F84 MC üçün Assembler proqramlarının strukturu və daxili əmr kodunun strukturu Hexadecimal koda çevrilməsinin asanlaşdırılması üçün PIC16F84-də Assembler programlarının aşağıdakı hissələrdən ibarət olur: MK-nin modelinin tanıdılması- List p=MK modeli MK-nin SPR registrlərinin və proqramdakı dəyişənlərin tanıdılması -İNCLUDE P MK modelinin nömrəsi.inc, Lokal dəyişənlərin tanıdılması dəyişən adı EQU ünvan kodu-0x0C-dənbaşlayaraq Programın başlanğıc ünvanı - ORG 0x00/0x0X MK əmrlərinin daxili kodda strukturu: 13 d COPf Əməliyyat kodu SPR /literal/dəyişən adı Təyinat göstəricisi 1-register(dəyişən) 0-W accumulater W-akkumulyator-registrdir. Digər 2 registr arasında ötürmə yalnız W vasitəsilə olur.

Əmrlərin funksional qrupları MOVE - SPR (GPR) register (literal/variable) and accumulater(W) arasında ötürmə.MOVE əmrinin müxtəlif modifikasiyaları vardır. SPR (GPR) registerlərin bitləri üzərində əməliyyatlar baytlar üzərində əməliyyatlar Idarəetmə (şərti,şərtsiz budaqlanma) əmrləri Məntiqi əməliyyatlar Hesabi əməliyyatlar

MOVE əmrləri MOVLW k MOVLW 0x0C literal K-nı W -a ötürmə hex code 0x0C –ni W -a ötürmə MOVF f, d MOVF PortA,0 Move f –nin məzmununu ötürmə: W-a(d=0) və ya f-ə(d=1) MOVWF f MOVWF İNTCON W –nin məzmununu f-ə ötürmə W –nin məzmununu INTCON Registrinə ötürmə

Bayt üzərində əməliyyatlar CLRF f CLRF TMR0 f registrini sırırlama TMR0 register –ni sırırlama CLRW W register-ni sırırlama COMF f,d COMF EECON1,0 –EECON1 register-nin əks kodunu alıb W-a ötürmə register \dəyişənin əks kodunu alıb onu ötürmə : W –a d=0 olanda f -ə d=1 olanda DECF f,d DECF count,1 –count dəyişənini Decrement etmək F-i Decrement edib nəticəni ötürmə : W –a d=0 olanda f -ə d=1 olanda Count=count-1 INCF f,d INC k,1 –k dəyişənini Increment etmək f-i Increment edib nəticəni ötürmə : W –a d=0 olanda f -ə d=1 olanda K=k+1

Bit üzərində əməliyyatlar BCF f,b BCF STATUS,5 F registrinin b bitini sıfırlama STATUS register-də bit 5 sıfırlama BSF f,b BSF İNTCON,7 F registrinin b bitini 1 et INTCON register-də bit 7 –ni 1 et İNTCON(7)=1 RLF f,d RLF PortB,1 F registrini/dəyişəni sola sürüşdürüb nəticəni Ötürmə: W –a d=0 olanda f -ə d=1 olanda PORTB –ni sola sürüşdürüb nəticəniorada saxlamalı RRF f,d RRF EEDATA,0 F registrini/dəyişəni sağa sürüşdürüb nəticəni Ötürmə: W –a d=0 olanda f -ə d=1 olanda EEDATA registrini sola sürüşdürüb nəticəni W –a Ötürmə SWAPF f,d SWAPF portA,1 F registri/dəyişənində yuxarı və aşağı 4 bitin yerini dəyişməli vənəticəni Ötürmə: W –a d=0 olanda f -ə d=1 olanda PORTA-da yuxarı və aşağı 4 bitin yerini dəyişməli

Şərtsiz keçid əmrləri GOTO kK adlı alt proqrama /əmrə keçid CALL kK adlı alt proqramın çağırışı RETURNƏsas proqrama qayıdış RETLW xxH RETLW 0xCA Literalı W-da saxlayıb əsas proqrama qayıdış W=CA və əsas proqrama qayıdış RETFIEKəsilməyə xidmət proqramından əsas proqrama qayıdış

Budaqlanma əməliyyatları BTFSC f,b BTFSC PortA,3 F-də b bitini yoxla və sıfır isə onda skip et PortA –da bit 3-i yoxlasıfır isə onda skip et BTFSS f,bF-də b bitini yoxla və 1 isə onda skip et DECFSZ f,dF-i dekrement et və sıfır isə onda skip et Nəticəni ötürmə: W –a d=0 olanda f -ə d=1 olanda INCFSZ f,dF-i inkrement et və sıfır isə onda skip et Nəticəni ötürmə: W –a d=0 olanda f -ə d=1 olanda

xüsusi Idarəetmə əmrləri CLRWDTWDT( WDT timer)-ni sıfırlama SLEEPStandby rejiminə keçid. SLEEP rejimindən MCLR,WDT,TOCK1 signalları ilə çıxmaq olar

Məntiqi əməliyyatlar ANDLW kliteral və W-ni məntiqi vurub nəticəni W-də saxamalı ANDWF f,dliteral və W-ni məntiqi vurub nəticəni ötürməli W –a d=0 olanda f -ə d=1 olanda IORLW kliteral və W-ni Inclusive OR edərək nəticəni W- də saxlama IORWF f,dliteral və W-ni Inclusive OR edərək nəticəni ötürməli: W –a d=0 olanda f -ə d=1 olanda XORLW kliteral və W-ni exclusive OR edərək nəticəni W- dəsaxlama XORWF f,dliteral və W-ni exclusive OR edərək nəticəni ötürməli: W –a d=0 olanda f -ə d=1 olanda

Hesabi əməliyyatlar ADDWF f,d W və f-i toplayıb nəticəni ötürməli: W –a d=0 olanda f -ə d=1 olanda ADDLW k W və f-i toplayıb nəticəni W-də saxlama SUBLW k W –ni literal-dan çıxıb nəticəni W-də saxlama SUBWF f,d W –ni literal-dan çıxıb nəticəni ötürməli: W –a d=0 olanda f -ə d=1 olanda

Assembler programına nümunə list p=16F84 ; 16bitlitopl.ASM INCLUDE P16F84.inc ; __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC AL EQU 0x0C AH EQU 0x0D BL EQU 0x0E BH EQU 0x0F ORG 0x000 ; processor reset vector goto main ; go to beginning of program main bcf STATUS,RP0 ; aşağıdakı əmrlərin izahını yazmaq CLRF PORTB ; bsf STATUS,RP0 ; bcf OPTION_REG,NOT_RBPU ; CLRF TRISB ; MOVLW 0xFF ; MOVWF TRISA BCF STATUS,RP0 Start MOVLW 0xB1 MOVWF AL MOVLW 0x12 MOVWF AH MOVLW 0xF7 MOVWF BL MOVLW 0xA3 MOVWF BH Topla MOVF AL, 0 ADDWF BL, 1 BTFSC STATUS,C INCF BH, 1 MOVF AH, 0 ADDWF BH, 1 MOVF BL, 0 MOVWF PORTB Test BTFSC PORTA,2 GOTO Test MOVF BH, 0 MOVWF PORTB END