新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 1-wire系統中TM卡的單片機等效替換方案介紹

        1-wire系統中TM卡的單片機等效替換方案介紹

        作者: 時間:2012-07-29 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/171119.htm

        對應于從機,是等待主機命令。從機等待主機命令的中斷服務程序流程如圖6所示。

        按此在新窗口瀏覽圖片
        圖6 從機等待主機命令的中斷服務程序流程

          最后是主機讀數據時序,如圖7所示。主機總線在開始時刻從高電平拉至低電平時,總線只需保持低電平1~7 μs。之后在tLOWR時刻釋放總線,一般在tRDV時刻采樣總線(15 μs處),讀時間隙在tLOWR與tRDV之間有效。從機必須在tRDV時刻前拉高或拉低總線,主機在tRDV時刻采樣,并在60~120 μs內釋放總線。

        按此在新窗口瀏覽圖片
        圖7 主機讀數據時序

          對從機來說,則為發送64位ID處理。程序處理的難點在于從機必須在15 μs之前拉高或拉低總線,以供主機在15 μs處采樣總線。程序通過判斷位地址00H處的狀態來實現此功能。通過判斷位地址01H處的狀態來確定發送位0或發送位1。從機發送64位ID處理的中斷服務程序流程如圖8所示。

        按此在新窗口瀏覽圖片
        圖8 從機發送64位ID處理的中斷服務程序流程

          在完整地實現一次ROM功能的過程中,從機首先等待主機發送的復位脈沖,待檢測到后發圖9實現ROM功能的流程送存在脈沖應答。隨后,從機開始接收主機發送的ROM命令,并將其保存,以判斷隨后的操作。最后,從機發送卡的64位標識碼,完成一次ROM命令的執行。實現ROM功能的流程如圖9所示。

          的匯編程序如下:

            ORG0000H
            AJMPInit//跳到Init段
            ORG0003H
            AJMPJudge//跳到中斷服務程序
          Init: //初始化
            MOVDPTR,#ID//ID表地址
            MOVR5,#001H
            MOVR7,#000H
            CLR00H
            SETB01H
            SETBP3.2
            LCALLDelay10s
            CLRP3.2//拉低總線叫醒主機
            LCALLDelay100us
            SETBP3.2
            SETBEA
            SETBIT0
            SETBEX0
          MAIN: AJMPMAIN//主循環
          Judge:CLREX0//判斷執行動作,關中斷
            JNB00H,SecondJ//跳到二次判斷
          ID_IN:JB01H,SEND1//從機發送卡64位標識碼
            CLRP3.2//發送位0
          SEND1:SETBP3.2 //發送位1
            LCALLDelay30us
            MOVA,R5//R5循環左移
            RLA
            MOVR5,A
            MOVA,#00H
            MOVCA,@A+DPTR
            ANLA,R5
            CLR01H//設置01H狀態
            JZRelease1
            SETB01H
          Release1:SETBP3.2
            MOVA,R5
            ANLA,#080H//判斷字節發送完否



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乐都县| 肇东市| 邻水| 射洪县| 资溪县| 故城县| 新田县| 通许县| 丹寨县| 准格尔旗| 屏山县| 米脂县| 通辽市| 明光市| 遂昌县| 丹棱县| 岑溪市| 蕉岭县| 南召县| 建平县| 永吉县| 耿马| 金沙县| 祁东县| 屯留县| 共和县| 合山市| 泽州县| 施秉县| 湘潭市| 舟曲县| 宜春市| 陇川县| 东港市| 开封市| 长寿区| 安宁市| 靖边县| 隆化县| 苏尼特右旗| 南岸区|