最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

(原創(chuàng))PICC實(shí)現(xiàn)24小時(shí)時(shí)鐘程序

作者:石魚wleen 欄目:單片機(jī)
(原創(chuàng))PICC實(shí)現(xiàn)24小時(shí)時(shí)鐘程序
//*******************************************************************************
//程 序 名:高精度時(shí)鐘
//設(shè) 計(jì) 者:丫蛋
//設(shè)計(jì)說明:設(shè)置TMR0預(yù)分頻系數(shù)為16,一次計(jì)數(shù)中斷溢出時(shí)間為4096us(0x1000)
//          每次TMR0中斷服務(wù)中對(duì)時(shí)間累計(jì)變量microsecond加上4096
//          程序主循環(huán)中不停地查詢變量microsecond,看是否超過50ms,如果時(shí)間超過
//          50ms,則microsecond=microsecond-50000,同時(shí)50ms計(jì)數(shù)器MS50加1
//          基于50ms計(jì)數(shù)器的累加值,更新秒,分和小時(shí)值
//          雖然每一個(gè)50ms的變化時(shí)間略有偏差,但所有偏差值都保留在microsecond
//          中,并得到累計(jì)修正,所以長(zhǎng)時(shí)間跨度計(jì)時(shí)精確
//*******************************************************************************
#include<pic.h>

//*******************//variable define//**********************************

LONG int microsecond;               //microsecond accumulative unit
int MS50;                           //50ms counter
int second;                         //second counter
int minute;                         //minute counter
int hour;                           //hour counter


main()
{

//*******************//initialize//**************************************
T0CS=0;                             //timer0 work at timer mode
T0IF=0;                             //clear timer0 flag
PSA=0;
PS2=1;
PS1=0;
PS0=0;                              //psa=0,ps2:ps0=100,1:16 prescale VALUE
T0IE=1;                             //timer0 overflow interrupt enable
GIE=1;                              // GLOBAL interrupt enable

//*******************//main loop//**************************************
while(1)
{
CLRWDT();                           //clear the watchdog
T0IE=0;                             //temporarily forbid  the timer0 to interrupt
                                    //to KEEP the VALUE of microsecond

microsecond-=50000;
if(microsecond>=50000)              //deal with microsecond>=50000
{
MS50=+1;                            //50ms counter increase 1
if(MS50!=20) T0IE=1;                //the time is not one second, resume t0ie
MS50=0;                             //the time is  one second,clear MS50
second++;                           //second counter
if(second!=60) T0IE=1;              //the time is not one minute, resume t0ie
second=0;                           //the time is one minute,clear second
minute++;                           //minute counter
if(minute!=60) T0IE=1;              //the time is not one hour, resume t0ie
minute=0;                           //the time is  one hour,clear minute
hour++;                             //hour counter
if(hour!=24) T0IE=1;                //the time is not 24h, resume t0ie
hour=0;                             //the time is 24 hour,clear hour
}
else microsecond+=50000;
T0IE=1;                             //resume t0ie
}
}

void interrupt timer(void)
{
microsecond+=4096;
}

參考張工的書上的思路設(shè)計(jì)的C語言實(shí)現(xiàn)的高精度時(shí)鐘程序,編譯通過,未實(shí)際運(yùn)行,請(qǐng)大家指點(diǎn)錯(cuò)誤。謝謝了。



2樓: >>參與討論
OYGGJ
思路可以,試試吧
思路可以,試試吧

3樓: >>參與討論
石魚wleen
正在試行,有結(jié)果了一定和大家分享
 
4樓: >>參與討論
lanyong
斷電了,怎么辦呢?
 
5樓: >>參與討論
OYGGJ
電池了,或者是超級(jí)電容了.
電池了,或者是超級(jí)電容了.

6樓: >>參與討論
石魚wleen
斷電?
還沒有考慮這個(gè)問題呢?這只是為我的設(shè)計(jì)中的延時(shí)做的一個(gè)程序。要是真要用來做時(shí)鐘的話,可以用電池。時(shí)鐘一般都是用電池。

7樓: >>參與討論
martin
如果你用的型號(hào)有Timer1
如果你用的型號(hào)有Timer1,在Timer1引腳上接32768的晶體做實(shí)時(shí)時(shí)鐘更簡(jiǎn)單些,而且關(guān)鍵是用Timer1計(jì)時(shí),單片機(jī)可以Sleep。對(duì)于一些新出的PIC,Timer1的功耗有很大改善,小于3微安,這樣做就真的可以用電池供電來實(shí)現(xiàn)一個(gè)低功耗的時(shí)鐘了。

8樓: >>參與討論
滕海波
我看你不如有時(shí)鐘芯片來讀取不就好。我試過,程序很簡(jiǎn)單易上手!
我看你不如有時(shí)鐘芯片來讀取不就好。我試過,程序很簡(jiǎn)單易上手!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
菜鳥一問:如何實(shí)現(xiàn)DC 5V 轉(zhuǎn) DC 3.3V?
FLASH 不能擦除?!
pic16f84的OSC1、OSC2引腳無振蕩波形,是不是芯片壞了?
請(qǐng)教無線發(fā)射接收IA4220+IA4320
#use FAST_IO()的作用
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)