新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種實用的PIC編程器的設計

        一種實用的PIC編程器的設計

        作者: 時間:2010-01-15 來源:網絡 收藏

        3.2 PC指針的處理及尋址方法
        在對其編程的過程中,需要知道當前的PC指針指向的Flash存儲區單元地址,也就是當前的操作單元。由于無法直接讀取其PC指針的值,故采用在 89C5l的RAM區定義一個變量用來記錄的PC指針(12位,占用2字節)。該變量的值始終和的PC指針一致,讀取該值便可取得當前所操作的PIC的Flash存儲單元地址。

        變量的操作應該遵循如下運算規則:
        ①只有“加1”這一種運算;
        ②03FF+1=0000(03FF為PIC10F202的存儲器末地址)}
        ③當變量的值不等于03FF時,其“加l”運算與指針值“加1”同步;
        ④初始情況下,指針的值指向03FF。
        PICl0F202的Flash單元地址為0000H~03FFH。在以上運算規則下,記錄PC指針的變量值也只能是0000H~03FFH,通過“加1”運算即可尋址到每一個Flash存儲單元。

        3.3 數據的讀取
        從Flash存儲單元中讀取數據位的方法:先是6個時鐘下降沿輸入6位命令字,在接收到這個命令字后,PIC將當前PC指針所對應ROM存儲單元的值按位由ISDAT輸出。在第6個下降沿結束后,經延時,在時鐘脈沖每個上升沿對ISDAT采樣,一共16個上升沿,輸出16位的數據。第2~13位是12位的數據;14、15位無效;首位和末位分別是起始位和結束位,如圖5所示。

        讀取數據時有兩點值得注意:
        ①命令字的輸入和其他操作相同,但數據輸出時是上升沿有效;
        ②由于01FFH和0204H是系統預定值單元,當尋址到這兩個單元時,執行讀取指令后必須保留其內容,以便編程時恢復。

        3.4 寫入Flash方法
        數據寫入Flash的過程如下:
        每次導入一個字節的數據(12位),輸入開始寫入的指令碼,經過一段時間參數的延時,再輸人結束寫入指令碼,就完成一個字節的寫入過程。但需要注意的是,無論是數據讀取還是寫入,都是對當前PC指針所指向的F1ash單元進行的;而且數據寫入只有在當前存儲單元已經被擦除的情況下才可以正確地實現。

        指令輸入形式(如芯片擦除、開始寫入、結束寫入和地址加1等)可以查得其命令宇,其輸入方法與圖4和圖5類似,每個指令都需要時鐘脈沖的6個下降沿輸入。僅有“導入數據”和“讀取數據”2條命令需要后跟數據字節,其他的指令在輸入完成后,經延時,便可以進行下一條指令的輸入。字節寫入流程如圖6所示。

        3.5 配置字編程及代碼保護的處理
        配置字是關于PIC的設置,包括是否使能看門狗,是否采用I/O弱上拉,以及MCLR引腳的配置等。配置字在03FFH單元,PIC進入編程模式時,配置字單元就是Pc指針所指向的單元。配置字的寫入方法與一般的代碼寫入方法一致。一旦設置了代碼保護,用戶代碼空間的0040H以上的字節讀出為“0”,其他的配置空間依舊可以正確讀出,包括配置字單元和用戶ID區。配置字可以被多次寫入,但是在任何情況下擦除配置字單元,用戶儲存區的代碼也同時被擦除。可以通過圖7的方法解除代碼保護,但是這樣的處理會將整個Flastl存儲空間全部清除,所以在代碼保護使能的情況下,是不可能正確讀取代碼值的。即使可以重寫配置字,但是重寫過程中代碼已經被清除。

        3.6 預定值的處理
        每個PIC芯片都沒有廠家設定的預定值。這些值是不應該被更改的,否則PIC芯片就無法正常工作。ROM區的01FFH單元保存復位向量,系統復位后,PC 指針將指向該單元。0204H單元保存著OSSCAL的值。這兩個單元的值應該先讀出并且保存在一個臨時單元(因為在芯片擦除的過程中會丟失),待到需要編程的代碼執行完畢,再從臨時單元讀出并寫入相應的位置。其實際過程就是一個“讀取保存恢復”的過程。

        要讀取預定值,首先必須尋址到預定值所在的單元。其尋址的過程如圖8所示:進入編程模式后,此時指向的存儲單元是03FFH,89C51中記錄PC指針的變量的值也應該設置成03FF。按照該變量的運算規則,執行地址加1指令,變量值也加1,并查詢當前變量的值,直到所需的存儲單元為止。恢復的過程是先尋址到01FF和0204單元,然后把保留的值寫入,具體流程與圖8類似。



        關鍵詞: 設計 編程器 PIC 實用

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 常熟市| 定陶县| 咸宁市| 南汇区| 那曲县| 通城县| 万全县| 吉首市| 通江县| 嘉义县| 庆元县| 通城县| 安多县| 康定县| 原平市| 龙海市| 明光市| 焉耆| 承德市| 海盐县| 四子王旗| 佛学| 普兰县| 崇仁县| 张掖市| 马关县| 汨罗市| 凉城县| 康马县| 凤城市| 九龙县| 万全县| 潜山县| 松潘县| 石泉县| 西安市| 承德县| 土默特右旗| 长沙市| 安宁市| 涟源市|