實驗10 實時時鐘設計實驗

2021-06-06 05:26:39 字數 1331 閱讀 4936

訪問 rtc 模組的暫存器,首先要設rtccon 的bit0 為1,cpu 通過讀取rtc 模組中暫存器bcdsec、bcdmin、bcdhour、bcdday、bcdmon 和bcdyear 的值,得到當前的相應時間值,然而,由於多個暫存器依次讀出,所以有可能產生錯誤。例如:使用者依次讀取年(1989)、月(12)、日(31)、時(23)、分(59)、秒(59)。當秒數為1 到59 時沒有任何問題,但是當秒數為0 時,但前時間和日期就變成了1990 年1 月1 日0 時0 分。這種情況下(秒數為0),使用者應該重新讀取年份到分鐘的值。

rtc 要由外部晶振提供32.768khz 的外部時鐘。rtc 也可以提供鬧鐘定時的功能。rtc 單元可以使用後備電池通過管腳rtcvdd 供電。當系統關閉電源以後,cpu 和rtc 的介面電路被阻斷,後備電池驅動晶體和bcd 計數器,從而達到最小的功耗。

中斷週期按照下列公式計算:

10.1 設定鬧鐘時間

void setrtcalm(u8 almyear,u8 almmon,u8 almdate,

u8 almhour,u8 almmin,u8 almsec)//年、月、日、時、分、秒

10.2 設定時鐘時間

void setrtctime(u8 wrtcyear,u8 wrtcmon,u8 wrtcdate,

u8 wrtcday,u8 wrtchour,u8 wrtcmin,u8 wrtcsec)//年、月、日、星期、時、分、秒

10.3 時鐘和鬧鐘的開關操作

//開實時時鐘

void openrtc(void)

//關實時時鐘

void closertc(void)

//開鬧鐘函式

void openalarm()

//關鬧鐘函式

void closealarm(void)

10.4 利用實時時鐘中斷,顯示當前時間

void __irq tick_isr(void)

void get_rtc(void)

10.5 實時時鐘鬧鐘中斷

void __irq isralarm(void)

10.6 主程式

void xmain(void)

RTC實時時鐘

rtc的英文全稱是real time clock,翻譯過來是實時時鐘晶元.rtc是pc主機板上的晶振及相關電路組成的時鐘電路的生成脈衝,rtc經過8254電路的變頻產生乙個頻率較低一點的os 系統 時鐘tsc,系統時鐘每乙個cpu週期加一,每次系統時鐘在系統初起時通過rtc初始化。8254本身工作也...

RTC實時時鐘

系統在斷電後 需要rtc電池計時間並在系統啟動後 將這個時間給到系統時間。以此維護系統斷電後與現實時間同步 一般rtc電池需要3v的電壓 若經過擴充套件板連線 需要測量此電壓是否給到主控晶元 然後date命令可以檢視系統時間 date s 2008 08 08 12 00 00 可以通過這個命令修改...

實時時鐘RTC

1.簡述 外圍裝置控制器晶元 ich 內部,整合了實時時鐘電路 rtc 以及兩個cmos組成的靜態儲存器 cmos ram 通常為128b rtc負責計時,由1個32.768khz的石英晶體振盪器驅動,經分頻後用於cmos ram進行每秒一次的時間重新整理 cmos ram中時間資訊如下表所示,前1...