中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ATMega16內(nèi)部EEPROM存儲器的應用

        ATMega16內(nèi)部EEPROM存儲器的應用

        作者: 時間:2012-10-09 來源:網(wǎng)絡 收藏

          位2-EEMWE:主機寫入允許。該位決定是否允許對進行寫入操作。當EEMWE被置位時,在EEWE為1的4個時鐘周期內(nèi),將寫數(shù)據(jù)到指定的地址;當EEMWE為0,設置EEWE為1不能觸發(fā)寫操作。

          位1-EEWE:EEPROM寫允許。 該位作為EEPROM的寫入觸發(fā)。當?shù)刂泛蛿?shù)據(jù)被正確設置以后,且EEMWE為1,則置位EEWE,將觸發(fā)數(shù)據(jù)寫入EEPROM。如果EEMWE不為1,EEWE不能觸發(fā)寫EEPROM的操作。寫EEPROM應該遵循以下步驟:

          (1)等待EEWE為0,即EEPROM為空閑狀態(tài);

          (2)等待SPMCR寄存器中的SPMEN位為0;

          (3)寫新的EEPROM地址到寄存器EEAR(視具體情況可選);

          (4)寫新的EEPROM數(shù)據(jù)到寄存器EEDR(視具體情況可選);

          (5)寫1到EEMWE,并同時寫0到EEWE;

          (6)在寫1到EEMWE后的4個時鐘周期內(nèi),寫1到EEWE位。

          步驟(2)一般情況下可以省略,還需要注意的是,在步驟(5)和步驟(6)之間發(fā)生中斷將使寫入過程失敗,因此建議在對EEPROM進行寫操作時清零全局中斷允許標志位以屏蔽所有中斷。

          位0-EERE:EEPROM讀允許。該標志作為讀取EEPROM操作的觸發(fā)。當EEAR寄存器被設置了正確的地址后,向EERE位寫入1,將觸發(fā)EEPROM的讀取操作。

          簡單的讀寫EEPROM的C代碼見本期配刊光盤的本文目錄。

          有了上述內(nèi)容,實現(xiàn)“密碼保管箱”實例的程序流程就比較簡單了。先完成單片機的初始化,其初始化代碼可以通過ICC AVR軟件自動生成。之后,程序開始檢測4×4小鍵盤上的輸入,如果小鍵盤的輸入與程序中設定的密碼管理箱密碼相同,則將存儲在EEPROM中的密碼送到串口中通過電腦或液晶顯示模塊進行顯示。當然,我們還需要考慮一些編程細節(jié),比如如何比較設定的密碼與用戶輸入的密碼等。關于小鍵盤的操作我們在今年第5期第39頁的文章中已經(jīng)用匯編語言實現(xiàn)過,本期配刊光盤中給出了采用C語言編寫的程序,代碼看起來更清晰易懂。

          設計好程序后,我們可以用上期介紹的ICC AVR軟件進行程序的編譯。打開ICC AVR,建立一個工程psmanager,并在工程選項里設定芯片為,然后選擇Tools→Application Builder,或者點擊菜單欄上的快捷圖標,進入應用程序生成器,可以幫助用戶快速生成初始化等相關代碼。

          如次啊圖所示,Target CPU選擇M16,Xtal speed根據(jù)實際使用情況選擇。在Ports項里面是端口初始狀態(tài)的設置。Timer0、Timer1、Timer2中分別是的3個定時器的設置。UART中是串口的設置。根據(jù)實際需要選擇合適的設置,然后點擊OK,ICC AVR會按照所設置的選項產(chǎn)生初始化代碼,用戶也可以自行編寫初始化代碼。

          將Application Builder。產(chǎn)生的代碼保存為main.c,并且加入工程。接下來將需要寫入EEPROM的密碼生成*.eep文件,假設有兩組密碼需要存儲,分別是建設銀行卡密碼(為123456)和EMAIL ABC@163.COM密碼(為ABCDEFG),并設定密碼保管箱的密碼為“567890”。

          ICC AVR用以下方法產(chǎn)生用于寫入EEPROM的eep文件:

          #pragma data:eeprom

         ?。O置數(shù)據(jù)區(qū)到EEPROM

          char key[]={‘5’,‘6’,‘7’,

          ‘8’,‘9’,‘O’}

          char password[]={“CBC:

          123456%ABC@163.COM:

          ABCDEFG$")

          //假設我們用“%”作為密碼之

          間的分割;“$”為密碼結束標志

          #pragma data:data

         ?。O置數(shù)據(jù)區(qū)回到數(shù)據(jù)

          將以上代碼添加在main.c中,注意必須緊跟著頭文件之后。這樣ICC AVR編譯完成后,除了生成單片機執(zhí)行文件}.hex,同時還將產(chǎn)生一個eep文件,可以通過Ponyprog軟件寫入ATMega16的EEPROM中。由于某種原因,在ATMega16的O~511共512個字節(jié)的EEPROM中,在地址O處的字節(jié)是不能使用的,所以上面的密碼將從EEPROM的地址1處依次存儲,即ATMega16可用的EEPROM為511個字節(jié)。

          本例程中將功能相關的函數(shù)放在一起構成一個C文件,因此在一個工程中會有多個C源文件,這樣做的好處是使得結構清晰,修改和擴充都很方便。但是要注意文件包含問題,可以查閱相關的C語言書籍。

          在完成所有的代碼后進行編譯,將編譯后生成的hex文件和eep文件一起寫入ATMega16。步驟如下:打開Ponyprog軟件,選擇File→OpenProgram(FLASH)File,選中生成的hex文件;再選擇File→Open Data(EEPROM)File,將文件類型更改為*.eep,然后選中eep文件。連接好硬件后,點擊Command→Write All,即可寫入。

          工作中的系統(tǒng)如上圖所示。 因為本文介紹的“密碼保管箱”要借助于電腦進行顯示,還不夠獨立,筆者將在下期介紹如何使用ATMega16控制液晶顯示屏,讓密碼保管箱可以獨立使用。

        存儲器相關文章:存儲器原理



        上一頁 1 2 下一頁

        關鍵詞: ATMega16 EEPROM 存儲器

        評論


        相關推薦

        技術專區(qū)

        關閉