>> PICƬԭ \
PIC8λƬԳָʶ£

    ĹָעͽǰָевͬǰָעʱǶָɵĹܸ˵עͷԳѧȷʵڽܺ⣬ʵӦеPICƷԵעͨԳҪʲô(ָ)˵ֱָӹܡԭָעͽıȥעͷóӦע͡
10ijֽڽָ
ָʽSWAPFfd
˵SWAPFSwap fĺдfdǰָͬĹǼĴfĸ4λ4λִָǰĴf8λ״̬ΪD7D6D5D4D3D2D1D0ִк8λ״̬ΪD3D2D1D0D7D6D5D4W(d=0)f(d=1)С
ʵжֳжϼҪ֡PIC16CָϵͳûнջPUSHͳջPOPָָֻʵ֡ΪгõĴW״̬ĴSTATUSжֳҪĴWSTATUS
ǶPIC16C7ϵоƬжֳʵ
MOVWF  W_TEMP        Wݴ뵽ʱĴ
W_TEMP
SWAPF  STATUSW   STATUSW
MOVWF STATUS_TEMP   STATUSݴ뵽
ʱĴSTATUS_TEMP
жϷ

SWAPF  STATUS_TEMPWSTATUS_TEMPW

MOVWF STATUS  STATUSԭԭ״̬
SWAPF  W_TEMPF
SWAPF  W_TEMPWWԭԭ״̬
˵иָעͻ϶ԳӦﵽĿĶע͵ģÿָĹܼδ漰dzѧӦرעġ
11ӳָ(Subroutine Call)
ָʽCALL kkΪַ
˵ӳãͬͺоƬʵַͬ乲ͬȽصַ((PC)1)ѹջתõӳڵִַ(MCS51ָ)
ָʽģʽHERE   CALL    DELAYʱӳ

DELAY MOVLW 0x80ʱӳ
   RETLW 0
˵ִָǰPC=ַHERE
ִָкPC=ַDELAY()ջָTOS=HERE1(صַ)
ʵָʵ
12Ĵȡָ
ָʽCOMFfd
˵COMFComplement fдd=1ʱ(f)fd=0ʱ(f)w
ܣĴfȡW(d=0)f(d=1)
ʵ   ORG   0x1FF
  GOTO    MAIN
  ORG   0
  DELAY    
  MAIN     MOVLW  0       ʼ
    TRTS     5       RAΪ
            BCF      50 RA0λΪ0
  LOOP   CALL    DELAYʱ
   COMF    5      RA(
  )
   GOTO    LOOP  ѭ
  
˵ָһPIC16C54 LEDʵ鲿ֳʱӳDELYδгӰ챾ָʶеʼָѽܹŵCALLָǵִӳڵַΪDELAYӳִнִCOMF 5LED𡭡ָһGOTO LOOPָǴﵽLEDѭĿġ
13λIJָ(4PIC߼Ʒһ)
ָһλ⣬һĴfλb1ָλָ(PIC߼Ʒһfbλתָ)
(1)λ1ָָʽ BSFfb
˵BSFBit Set fдFbǰָͬĹǽĴfbλ1
(2)λԡΪָָʽ BTFSC   fb
˵BTFSCBit TestSkip if ClearдָDzԼĴfλbΪ0һָΪ1˳ִУf(b)=0ʱͲִеǰִָһָ()һָNOPԸָռ2ָڡ
(3)λԡΪ1ָָʽ BTFSSfb
˵BTFSSBit TestSkip if Setдָ߼෴λf(b)=1ͼִУf(b)=0˳ִС
ܵPIC 8λƬָDzָ⻹ѭָWͼĴfࡰӡࡰ롱ָͽ˯߷ʽָڱֽƣһһܣڳӦ˵ɶʷΪ
֪ʶ⣺
13гעͣеġ5RA(F5)ڣ6RB(F6)ڡ
CLRW      MOVLW OFFH
TRIS   5         TRIS  6
BCF   51 BCF   50
BSF   50 Ž󡡡

[ ]