新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機內部EEPROM讀寫程序

        PIC單片機內部EEPROM讀寫程序

        作者: 時間:2016-11-29 來源:網絡 收藏
        ;***********************************************
        ; 寫數據子程序
        ;***********************************************
        WR1 BSF STATUS,RP0;
        BSF STATUS,RP1;體3
        BTFSC EECON1,WR;判斷是否在寫數據
        GOTO $-1;
        BCF STATUS,RP0;
        BCF STATUS,RP1;體0
        MOVFW 60H;EEPROM目標地址
        BCF STATUS,RP0
        BSF STATUS,RP1;體2
        MOVWF EEADR;EEPROM目標地址寄存器
        BCF STATUS,RP0
        BCF STATUS,RP1;體0
        MOVFW 61H;需寫入數據
        BCF STATUS,RP0
        BSF STATUS,RP1;體2
        MOVWF EEDATA;EEPROM數據寄存器
        BSF STATUS,RP0
        BSF STATUS,RP1;體3
        BCF EECON1,EEPGD;選擇為EEPROM模式
        BSF EECON1,WREN;允許使能
        ;***************************************************
        ; 寫數據5指令序列PIC特定沒有為什么不允許能改變
        MOVLW 55H ;
        MOVWF EECON2 ;55H送EECON2
        MOVLW 0AAH;
        MOVWF EECON2 ;AAH送EECON2
        BSF EECON1,WR ;啟動寫操作
        ;
        ;**************************************************
        BTFSC EECON1,WR;判斷是否學完成
        GOTO $-1;
        BCF STATUS,RP0;恢復體0
        BCF STATUS,RP1;
        RETURN;
        ;**************************************************
        ; 讀EEPROM數據子程序
        ;**************************************************
        RD01 BCF STATUS,RP0;
        BSF STATUS,RP1;體2
        MOVLW 0;目標地址
        MOVWF EEADR;目標地址寄存器
        BSF STATUS,RP0;
        BSF STATUS,RP0;體3
        BCF EECON1,EEPGD;選擇EEPROM模式
        BSF EECON1,RD;啟動讀操作
        BTFSC EECON1,RD;判斷是否讀取完
        GOTO $-1;
        BCF STATUS,RP0;
        BSF STATUS,RP1;體2
        MOVFW EEDATA;將數據存到W中
        BCF STATUS,RP0;
        BCF STATUS,RP1;體0
        MOVWF 53H ;將讀取數存到55H
        RETURN
        ;********************************************************
        ; 定時中斷程序
        ;********************************************************
        ZD01 BCF INTCON,GIE;關總中斷
        BTFSS INTCON,T0IF;判斷是否產生定時中斷
        GOTO ZD03;否跳出是繼續執行
        ;***************************************************
        ; 保護現場
        MOVWF W_TEMP;W備份到W_TEMP中
        SWAPF STATUS,0;STATUS半字交換后送W
        CLRF STATUS;選擇體0為當前體備份
        MOVWF STATUS_TEMP;將原來的STATUS送體0上的
        MOVF PCLATH,0;PCLATH送W
        MOVWF PCLATH_TEMP;W送備份寄存器中
        CLRF PCLATH ;設置為0頁
        ;***************************************************
        BCF INTCON,T0IF
        BSF STATUS,RP0;體1
        BCF STATUS,RP1;
        MOVLW 0;
        MOVWF TRISC;RB口設為輸出口
        MOVWF TRISD;RD口設為輸出口
        BCF STATUS,RP0;體0
        BCF STATUS,RP1;
        MOVLW 0FFH;
        MOVWF PORTC;RB口輸出高電平
        MOVLW 0
        MOVWF PORTD;RD口輸出低電平起清屏作用
        MOVFW INDF;間接尋址顯示數據
        CALL Q1;查數據表
        MOVWF PORTC;顯示斷碼輸出到RB口
        INCF FSR,1;間接尋址地址加1
        MOVFW 41H ;位碼
        MOVWF PORTD;位碼輸出到RD口
        RLF 41H,0;處理C
        RLF 41H,1;左移位碼
        DECFSZ 40H,1;判斷是否顯示完4位
        GOTO ZD02;否則繼續顯示
        MOVLW 4;顯示位數
        MOVWF 40H;
        MOVLW B00000001;位碼
        MOVWF 41H;
        MOVLW 50H;
        MOVWF FSR ;間接尋址
        ZD02 MOVLW 0FFH;
        MOVFW TMR0;重裝初值
        ;***************************************************
        ; 恢復現場
        CLRF STATUS;恢復到體0
        MOVF PCLATH_TEMP,0;開始恢復數據
        MOVWF PCLATH;恢復PCLATH
        SWAPF STATUS_TEMP,0
        MOVWF STATUS;恢復STATUS
        SWAPF W_TEMP,1;半字交換后放回
        SWAPF W_TEMP,0;再半字交換后送W
        ;***************************************************
        ZD03 BSF INTCON,GIE;開總中斷
        RETFIE ;中斷返回
        ;********************************************
        ; 數據表
        ;********************************************
        END
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 长宁县| 淳化县| 昔阳县| 剑阁县| 且末县| 仙桃市| 江口县| 五大连池市| 南京市| 鸡西市| 广丰县| 漳州市| 绥宁县| 会同县| 永嘉县| 五常市| 桑日县| 临颍县| 灵丘县| 宁城县| 旬邑县| 蓬莱市| 静宁县| 德阳市| 七台河市| 巴塘县| 湖州市| 黄骅市| 招远市| 晴隆县| 安达市| 修水县| 潮安县| 四川省| 乐都县| 边坝县| 平凉市| 南投县| 太白县| 马边| 天峻县|