• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234
    設(shè)計開發(fā)

    專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開發(fā)工具

    提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

    技術(shù)支持

    從全面的產(chǎn)品導(dǎo)入到強大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

    新聞中心

    提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

    用PIC12C508A單片機控制模型源程序

    更新時間: 2019-03-22
    閱讀量:3743

    單片機方案開發(fā)深圳英銳恩分享用PIC12C508A單片機控制模型源程序。

    Description: Receive IR Remote control NEC code

    list p=12C508A, f=INHX8M, r=DEC, b=8, C=80
    __config (_MCLRE_OFF & _CP_ON & _WDT_OFF & _IntRC_OSC)
    __idlocs H'0001'

    INDF equ 0x00
    TMR0 equ 0x01
    PCL equ 0x02
    STATUS equ 0x03
    FSR equ 0x04
    OSCCAL equ 0x05
    GPIO equ 0x06

    Bit7 equ 0x07
    Bit6 equ 0x06
    Bit5 equ 0x05
    Bit4 equ 0x04
    Bit3 equ 0x03
    Bit2 equ 0x02
    Bit1 equ 0x01
    Bit0 equ 0x00

    W equ 0x00
    F equ 0x01

    ; STATUS Register
    GPWUF equ Bit7
    PA0 equ Bit5
    NOT_TO equ Bit4
    NOT_PD equ Bit3
    Z equ Bit2
    DC equ Bit1
    C equ Bit0

    ; GPIO Register
    bIRDataIn equ Bit0
    bSystemPowerOut0 equ Bit1

    ; Configuration Bits
    _MCLRE_ON equ 0x0fff
    _MCLRE_OFF equ 0x0fef
    _CP_ON equ 0x0ff7
    _CP_OFF equ 0x0fff

    _WDT_ON equ 0x0fff
    _WDT_OFF equ 0x0ffb
    _LP_OSC equ 0x0ffc
    _XT_OSC equ 0x0ffd
    _IntRC_OSC equ 0x0ffe
    _ExtRC_OSC equ 0x0fff

    ; Macro Definition
    PowerDownSystem MACRO
    bcf GPIO, bSystemPowerOut0
    ENDM

    PowerUpSystem MACRO
    bsf GPIO, bSystemPowerOut0
    ENDM

    ; General Purpose Register
    DelayCounter1 equ 0x07
    DelayCounter2 equ 0x08

    AddrCode equ 0x10
    AddrCodeNot equ 0x11
    DataCode equ 0x12
    DataCodeNot equ 0x13

    Result equ 0x14
    PowerState equ 0x15

    ButtonTemp equ 0x16

    Bit equ 0x17
    GetBitCounter equ 0x18
    GetBitCountLo equ 0x19
    GetBitCountHi equ 0x1A
    PausecountLo equ 0x1B
    PausecountHi equ 0x1C
    errorflag equ 0x1D
    ; Constant Definition
    cPowerOn equ 0xFF
    cPowerOff equ 0x00
    cPowerHi equ 0x82
    cPowerLo equ 0x7D
    cAddressHi equ 0xF0
    cAddressLo equ 0x0F
    ;==============================================================================

    org 0000h
    movwf OSCCAL
    goto main
    ;------------------------------------------------------------------------------
    ; Function: pDelay1ms
    ; Overview: This is a very accurate 1ms delay for a 4MHz clock.
    ;------------------------------------------------------------------------------
    pDelay1ms:
    movlw .198
    movwf DelayCounter1
    nop
    nop
    tagDelay1ms_01:
    nop
    nop
    decfsz DelayCounter1, F
    goto tagDelay1ms_01
    retlw 0x00
    ;------------------------------------------------------------------------------
    ; Function: pDelay250ms
    ; Overview:
    ;------------------------------------------------------------------------------
    pDelay250ms:
    movlw .250
    movwf DelayCounter2
    tagDelay250ms_01:
    call pDelay1ms
    decfsz DelayCounter2, F
    goto tagDelay250ms_01
    retlw 0x00

    ;------------------------------------------------------------------------------
    ; Function: pGetBit
    ; Overview:
    ;------------------------------------------------------------------------------
    pGetBit:

    tagBitStart:
    clrf errorflag
    clrf GetBitCountLo
    clrf GetBitCountHi

    tagBitWait:
    btfss GPIO, bIRDataIn
    goto tagBitWait

    tagBitLoop:
    incfsz GetBitCountLo, F
    goto tagBitNext
    incf GetBitCountHi, F
    movlw .3
    subwf GetBitCountHi,W
    btfsc STATUS,C
    goto errorret
    tagBitNext:
    btfsc GPIO, bIRDataIn
    goto tagBitLoop

    movlw .1
    subwf GetBitCountHi, W
    btfsc STATUS, Z
    goto tagBitIsOne

    tagBitIsZero:
    movlw 0x00
    movwf Bit
    goto tagBitDone
    tagBitIsOne:
    movlw 0xff
    movwf Bit
    goto tagBitDone

    tagBitDone:
    retlw 0x00
    errorret:
    bsf errorflag,Bit0
    retlw 0x00

    ;------------------------------------------------------------------------------
    ;==============================================================================
    ; Program Main Entry.
    ;==============================================================================
    main:
    movlw B'11000111'
    option

    movlw B'11111101'
    tris GPIO

    ;PowerUpSystem
    movlw B'11111111'
    movwf GPIO

    movlw cPowerOn
    movwf PowerState

    initial:
    clrf AddrCode
    clrf AddrCodeNot
    clrf DataCode
    clrf DataCodeNot

    doIrCheck:
    btfsc GPIO, bIRDataIn
    goto doIrCheck

    ;================================================
    ;call pGetBit
    leaderWait:
    btfss GPIO, bIRDataIn
    goto leaderWait

    call pGetBit
    pauseWait:
    ;btfsc GPIO, bIRDataIn
    ;goto pauseWait
    movf GetBitCountLo,W
    movwf PausecountLo
    movf GetBitCountHi,W
    movwf PausecountHi
    movlw 0x02
    subwf PausecountHi,W
    btfss STATUS,Z
    ;btfss PausecountHi,Bit1
    goto doIrCheck
    ;btfsc GPIO,bIRDataIn
    ;goto

    ;================================================
    AddrBit0:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit0Zero

    AddrBit0One:
    bsf AddrCode, Bit0
    goto AddrBit1

    AddrBit0Zero:
    bcf AddrCode, Bit0
    ;------------------------------------------------
    AddrBit1:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit1Zero

    AddrBit1One:
    bsf AddrCode, Bit1
    goto AddrBit2

    AddrBit1Zero:

    bcf AddrCode, Bit1
    ;------------------------------------------------

    AddrBit2:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit2Zero

    AddrBit2One:
    bsf AddrCode, Bit2
    goto AddrBit3

    AddrBit2Zero:
    bcf AddrCode, Bit2
    ;------------------------------------------------
    AddrBit3:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit3Zero

    AddrBit3One:
    bsf AddrCode, Bit3

    goto AddrBit4

    AddrBit3Zero:
    bcf AddrCode, Bit3
    ;------------------------------------------------
    AddrBit4:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit4Zero

    AddrBit4One:
    bsf AddrCode, Bit4
    goto AddrBit5

    AddrBit4Zero:
    bcf AddrCode, Bit4
    ;------------------------------------------------
    AddrBit5:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit5Zero

    AddrBit5One:
    bsf AddrCode, Bit5
    goto AddrBit6

    AddrBit5Zero:
    bcf AddrCode, Bit5
    ;------------------------------------------------
    AddrBit6:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit6Zero

    AddrBit6One:
    bsf AddrCode, Bit6
    goto AddrBit7

    AddrBit6Zero:

    bcf AddrCode, Bit6
    ;------------------------------------------------
    AddrBit7:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrBit7Zero

    AddrBit7One:
    bsf AddrCode, Bit7
    goto AddrNotBit0

    AddrBit7Zero:
    bcf AddrCode, Bit7
    ;++++++++++++++++++++++++++++++++++++++++++++++++
    AddrNotBit0:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit0Zero

    AddrNotBit0One:
    bsf AddrCodeNot, Bit0

    goto AddrNotBit1

    AddrNotBit0Zero:
    bcf AddrCodeNot, Bit0
    ;------------------------------------------------
    AddrNotBit1:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit1Zero

    AddrNotBit1One:
    bsf AddrCodeNot, Bit1
    goto AddrNotBit2

    AddrNotBit1Zero:

    bcf AddrCodeNot, Bit1
    ;------------------------------------------------

    AddrNotBit2:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit2Zero

    AddrNotBit2One:
    bsf AddrCodeNot, Bit2
    goto AddrNotBit3

    AddrNotBit2Zero:
    bcf AddrCodeNot, Bit2
    ;------------------------------------------------
    AddrNotBit3:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit3Zero

    AddrNotBit3One:
    bsf AddrCodeNot, Bit3
    goto AddrNotBit4

    AddrNotBit3Zero:
    bcf AddrCodeNot, Bit3
    ;------------------------------------------------
    AddrNotBit4:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit4Zero

    AddrNotBit4One:
    bsf AddrCodeNot, Bit4
    goto AddrNotBit5

    AddrNotBit4Zero:
    bcf AddrCodeNot, Bit4
    ;------------------------------------------------
    AddrNotBit5:
    call pGetBit
    btfsc errorflag,Bit0

    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit5Zero

    AddrNotBit5One:
    bsf AddrCodeNot, Bit5
    goto AddrNotBit6

    AddrNotBit5Zero:
    bcf AddrCodeNot, Bit5
    ;------------------------------------------------
    AddrNotBit6:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit6Zero

    AddrNotBit6One:
    bsf AddrCodeNot, Bit6
    goto AddrNotBit7

    AddrNotBit6Zero:
    bcf AddrCodeNot, Bit6
    ;------------------------------------------------

    AddrNotBit7:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto AddrNotBit7Zero

    AddrNotBit7One:
    bsf AddrCodeNot, Bit7
    goto DataBit0

    AddrNotBit7Zero:
    bcf AddrCodeNot, Bit7
    ;++++++++++++++++++++++++++++++++++++++++++++++++
    DataBit0:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit0Zero

    DataBit0One:
    bsf DataCode, Bit0
    goto DataBit1

    DataBit0Zero:
    bcf DataCode, Bit0
    ;------------------------------------------------
    DataBit1:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit1Zero

    DataBit1One:
    bsf DataCode, Bit1
    goto DataBit2

    DataBit1Zero:

    bcf DataCode, Bit1
    ;------------------------------------------------
    DataBit2:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit2Zero

    DataBit2One:
    bsf DataCode, Bit2
    goto DataBit3

    DataBit2Zero:
    bcf DataCode, Bit2
    ;------------------------------------------------
    DataBit3:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit3Zero

    DataBit3One:
    bsf DataCode, Bit3

    goto DataBit4

    DataBit3Zero:
    bcf DataCode, Bit3
    ;------------------------------------------------
    DataBit4:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit4Zero

    DataBit4One:
    bsf DataCode, Bit4
    goto DataBit5

    DataBit4Zero:
    bcf DataCode, Bit4
    ;------------------------------------------------
    DataBit5:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit5Zero

    DataBit5One:
    bsf DataCode, Bit5
    goto DataBit6

    DataBit5Zero:
    bcf DataCode, Bit5
    ;------------------------------------------------
    DataBit6:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit6Zero

    DataBit6One:
    bsf DataCode, Bit6
    goto DataBit7

    DataBit6Zero:

    bcf DataCode, Bit6
    ;------------------------------------------------
    DataBit7:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataBit7Zero

    DataBit7One:
    bsf DataCode, Bit7
    goto DataNotBit0

    DataBit7Zero:
    bcf DataCode, Bit7
    ;++++++++++++++++++++++++++++++++++++++++++++++++
    DataNotBit0:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit0Zero

    DataNotBit0One:
    bsf DataCodeNot, Bit0
    goto DataNotBit1

    DataNotBit0Zero:
    bcf DataCodeNot, Bit0
    ;------------------------------------------------
    DataNotBit1:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit1Zero

    DataNotBit1One:
    bsf DataCodeNot, Bit1
    goto DataNotBit2

    DataNotBit1Zero:

    bcf DataCodeNot, Bit1
    ;------------------------------------------------

    DataNotBit2:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit2Zero

    DataNotBit2One:
    bsf DataCodeNot, Bit2
    goto DataNotBit3

    DataNotBit2Zero:
    bcf DataCodeNot, Bit2
    ;------------------------------------------------
    DataNotBit3:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit3Zero

    DataNotBit3One:
    bsf DataCodeNot, Bit3
    goto DataNotBit4

    DataNotBit3Zero:
    bcf DataCodeNot, Bit3

    ;------------------------------------------------
    DataNotBit4:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit4Zero

    DataNotBit4One:
    bsf DataCodeNot, Bit4
    goto DataNotBit5

    DataNotBit4Zero:
    bcf DataCodeNot, Bit4
    ;------------------------------------------------
    DataNotBit5:
    call pGetBit
    btfsc errorflag,Bit0

    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit5Zero

    DataNotBit5One:
    bsf DataCodeNot, Bit5
    goto DataNotBit6

    DataNotBit5Zero:
    bcf DataCodeNot, Bit5
    ;------------------------------------------------
    DataNotBit6:
    call pGetBit
    btfsc errorflag,Bit0
    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit6Zero

    DataNotBit6One:
    bsf DataCodeNot, Bit6
    goto DataNotBit7

    DataNotBit6Zero:
    bcf DataCodeNot, Bit6
    ;------------------------------------------------
    DataNotBit7:
    call pGetBit
    btfsc errorflag,Bit0

    goto doIrCheck
    btfss Bit, Bit7
    goto DataNotBit7Zero

    DataNotBit7One:
    bsf DataCodeNot, Bit7
    goto ReceiverEnd

    DataNotBit7Zero:
    bcf DataCodeNot, Bit7
    ;++++++++++++++++++++++++++++++++++++++++++++++++

    ReceiverEnd:
    doCheckAddress:
    movlw 0x01 ;custom address code
    xorwf AddrCode, W

    btfss STATUS, Z
    goto doNotThisDevice

    movlw 0x0C ;custom data code
    xorwf DataCode, W
    btfss STATUS, Z
    goto doNotPowerButton
    goto toggleSystemPower

    doNotThisDevice:
    doNotPowerButton:
    call pDelay250ms
    call pDelay250ms

    goto clearVariables
    ;================================================
    call pDelay250ms
    ;================================================
    toggleSystemPower:
    btfsc PowerState, Bit7
    goto turnPowerOff
    ;------------------------------------------------
    turnPowerOn:
    movlw cPowerOn
    movwf PowerState
    PowerUpSystem
    goto afterToggleSystemPower
    ;------------------------------------------------

    turnPowerOff:
    call pDelay250ms
    call pDelay250ms
    call pDelay250ms
    call pDelay250ms

    call pDelay250ms
    call pDelay250ms
    call pDelay250ms
    call pDelay250ms

    movlw cPowerOff
    movwf PowerState
    PowerDownSystem
    nop
    afterToggleSystemPower:
    call pDelay250ms

    clearVariables:
    clrf AddrCode
    clrf AddrCodeNot
    clrf DataCode
    clrf DataCodeNot

    goto doIrCheck
    end

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>