• <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

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

    久久黄色 视频|我草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)

    實戰(zhàn)十二:87X軟件模擬I2C讀寫24C02

    更新時間: 2019-03-25
    閱讀量:951

    87X軟件模擬I2C讀寫24C02
    ;該試驗功能是單片機復(fù)位一次,自動從24C02中讀取數(shù)據(jù)到數(shù)碼管顯示,然后對值加1再寫入24C02,最終數(shù)碼管中的數(shù)據(jù)就是開機的次數(shù),具有一定的實用意義
    ;本電路所使用24C02為ATMEL的,或不是該廠的,則燒寫時間可能會有差異
    ;必須調(diào)整本程序的DELAY時間
    ;本實戰(zhàn)的目的是讓大家進(jìn)上步熟悉I2C通信的時序,熟悉24CXX的讀寫,會用軟件模擬I2C通信
    ;硬件接法:
    ;1.24CXX的SDA接877A的RB5口,SCLK接877A的RB4口,WP接地,A0,A1,A2接地
    ;2.實驗本實驗須將MCD-DEMO實驗板上的93CXX系列芯片先取下,在實驗過程中不要按動同樣接在RB口的按鍵,以免影響通信時序.
    ;3.實驗板上拔碼開關(guān)S4,S5要置ON,其它拔碼開關(guān)都可以關(guān)閉。
    ;程序文件名&ldquo;MCD-24C02.ASM"
    ;程序清單如下:
    ;************************************
        LIST      P=16F877A, R=DEC
        include "P16F877A.inc"
    ;***********************************
    __CONFIG _DEBUG_OFF&_CP_OFF&_WRT_HALF&_CPD_OFF&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC;
    ;************************************ 定義查表偏移量
    #define SDA  PORTB,5
    #define SCLK PORTB,4
    ;*********************
    COUNT     EQU   20H
    ADDR     EQU   21H
    DAT     EQU   23H
    TEMP     EQU   24H
    ;**********************
      ORG 000H
      NOP              ;放置一條ICD必需的空操作指令
      GOTO MAIN
      ORG 004H
      RETURN
      ORG 0008H
    ;******************************************************
    TABLE           
            ADDWF PCL,1              ;地址偏移量加當(dāng)前PC值                                       
         RETLW 0C0H       ;0
         RETLW 0F9H       ;1                               
         RETLW 0A4H       ;2
         RETLW 0B0H       ;3
         RETLW 99H       ;4
         RETLW 92H       ;5
         RETLW 82H       ;6
         RETLW 0F8H       ;7
         RETLW 80H       ;8
         RETLW 98H       ;9
            RETLW 00H       ;A
         RETLW 00H       ;B
         RETLW 00H       ;C
         RETLW 00H       ;D
         RETLW 00H       ;E
            RETLW 00H       ;F
    ;*******************************************************
    MAIN          
      MOVLW  0FFH
      MOVWF  PORTC            ;數(shù)碼管先全部熄滅
      MOVLW  0FFH
      MOVWF  PORTA
      MOVLW  0FFH
      MOVWF  PORTB            ;SDT,SCLK都為高

      BSF STATUS,RP0          ;定義RA口,RC,RB口全部為輸出
      MOVLW 07H
      MOVWF ADCON1            ;設(shè)置RA口全部為普通數(shù)字IO口
      CLRW
      MOVWF TRISB             ;
      MOVWF TRISA
      MOVWF TRISC         
      MOVWF OPTION_REG        ;開啟RB口內(nèi)部弱上拉
      BCF STATUS,RP0

      CLRW         ;地址00H
      CALL RD24    ;讀地址
      MOVWF DAT     ;讀出的值送F1
      SUBLW .9    ;若讀出的值大于9,則F1送為0,從0開始(因為1位數(shù)碼管只能顯示到0-9)
      BC  TT2     ;C=0就轉(zhuǎn)TT2
    TT1
      CLRF  DAT
    TT2
      MOVFW DAT
      CALL TABLE   ;取顯示段碼
      MOVWF PORTC   ;段碼送C口
      BCF   PORTA ,1  ;點亮第一位數(shù)碼管
      INCF  DAT ,1     ;每次上電,存入24CXX的00H地址的值加1
      CLRW             ;地址00H
      CALL  WT24       ;寫24CXX
      GOTO  $
    ;****************************
    RD24 
           MOVWF ADDR       ;地址暫存于F4中
           CALL START24   ;啟動I2C
           MOVLW 0A0H
           CALL SUBS    ;寫器件地址1010000+最后一位0寫操作
           MOVFW ADDR       ;載入地址
           CALL SUBS    ;寫地址
           CALL START24   ;再發(fā)開始信號
           MOVLW  0A1H    ;寫器件地址1010000+最后一位1讀操作
           CALL SUBS     
           BSF STATUS ,RP0
           BSF TRISB ,5            ;設(shè)SDA腳為輸入,準(zhǔn)備讀
           BCF STATUS ,RP0
           MOVLW 08H          ;共讀8位數(shù)據(jù)
           MOVWF COUNT
    RD000
           NOP
           NOP
           NOP
           BSF SCLK            ;讀數(shù)據(jù)
           NOP
           BSF STATUS,C
           BTFSS SDA
           BCF STATUS,C
           RLF TEMP ,1
           BCF SCLK
           DECFSZ COUNT ,1      ;循環(huán)讀完8位
           GOTO RD000
           BSF STATUS ,RP0
           BCF TRISB ,5            ;恢復(fù)SDA腳為輸出
           BCF STATUS ,RP0
           BSF SDA
           CALL DELAY2
           BSF SCLK
           CALL DELAY2
           BCF SCLK          ;應(yīng)答畢,SDA置1
           CALL STOP          ;送停止信號
           MOVFW  TEMP          ;將讀的數(shù)據(jù)送入W中
           RETURN
    ;******************************寫入24C02程序
    WT24    MOVWF ADDR         ;  先將地址暫存于F4 
            CALL START24      ;開始條件
            MOVLW 0A0H
            CALL  SUBS      ;寫器件地址1010000+最后一位0寫操作
            MOVFW ADDR          ;載入地址
            CALL  SUBS      ;寫地址
            MOVFW DAT          ;載入數(shù)據(jù)
            CALL SUBS       ;寫數(shù)據(jù)
            CALL STOP         ;停止信號
            RETURN

    START24
                          ;開始條件
            BSF  SDA
            BSF  SCLK
            CALL DELAY2
            BCF  SDA
            CALL DELAY2
            BCF  SCLK
            RETURN

    STOP  
            BCF  SDA       ;停止條件
            NOP
            NOP
            BSF  SCLK
            CALL DELAY2
            BSF  SDA
            RETURN

    SUBS                   ;寫數(shù)據(jù)
           MOVWF TEMP     ;將要寫的數(shù)據(jù)存于F2中
           MOVLW 08H
           MOVWF COUNT    ;寫8位數(shù)據(jù)
    SH01 
           RLF TEMP ,1
           BSF SDA
           BTFSS  STATUS ,C
           BCF SDA
           NOP
           BSF SCLK
           CALL DELAY2
           BCF SCLK
           DECFSZ COUNT ,1  ;循環(huán)寫完8位
           GOTO SH01
           BSF  SDA
           NOP
           NOP
           BSF  SCLK
           BSF  STATUS,RP0
           BSF  TRISB ,5
           BCF  STATUS,RP0
    REP
           BTFSC SDA     ;判應(yīng)答到否,未到則等待
           GOTO REP
           BCF  SCLK
           BSF  STATUS,RP0
           BCF  TRISB ,5
           BCF  STATUS,RP0
           RETURN

    DELAY2 
            NOP
            NOP
            NOP
            NOP
            RETURN
    ;********************************************
           end                   ;源程序結(jié)束
    ;*****************************************************
    ;    進(jìn)入該實戰(zhàn)演練的工序流程如下:
    ;    1.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的&rdquo;記事本&rdquo;
    ;   這個為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點需要注意,一是注釋前面的
    ;   分號&rdquo;;&rdquo;必須用西文半角輸入;二是必須用&rdquo;.asm&rdquo;擴展名存儲到事先建立的一個專用子目錄下.
    ;    2.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動MPLAB
    ;   并進(jìn)入MPLAB的桌面.
    ;    3.創(chuàng)建項目:選用菜單File>New或Project>New Project,在事先建立的一個專用子目錄下創(chuàng)建一個新項目,將
    ;   用記事本創(chuàng)建的源文件加入到該項目中.
    ;    4.建立項目中的目標(biāo)文件:選擇菜單Project >Build All(項目>建立所有文件),MPLAB將自動調(diào)用MPASM將項目
    ;   文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).


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