專利名稱:一種由mcu控制運(yùn)行的時(shí)鐘電路的誤差修正方法
技術(shù)領(lǐng)域:
本發(fā)明涉及誤差修正領(lǐng)域,特別是一種對(duì)由MCU控制運(yùn)行的時(shí)鐘電路的誤差修正方法。
本發(fā)明解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為①在設(shè)置有時(shí)鐘電路的鐘控產(chǎn)品出廠之前先試運(yùn)行一段時(shí)間,觀察并記錄下其時(shí)鐘電路的系統(tǒng)誤差值;②根據(jù)所述誤差值按時(shí)鐘產(chǎn)品的精確度要求確定修正周期,如每日、每星期、每月或每年;③確定二個(gè)時(shí)間值,即第一時(shí)間值a和第二時(shí)間值b,分別對(duì)應(yīng)修正周期內(nèi)的二個(gè)不同時(shí)間如修正周期為每年的,則分別為二個(gè)不同的月份,如修正周期為每月的,則分別為一個(gè)月中的二個(gè)不同的日期,如修正周期為每星期的,則分別為一個(gè)星期中的二天,以此類推
④在微控制器(MCU)中設(shè)置二個(gè)存儲(chǔ)地址,用來(lái)存儲(chǔ)分別與上述第一時(shí)間值和第二時(shí)間值對(duì)應(yīng)的時(shí)間標(biāo)志,并置初始值為對(duì)應(yīng)邏輯“假”的數(shù)值;⑤將第一時(shí)間值與時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值比較,如相同,則置第一時(shí)間標(biāo)志為對(duì)應(yīng)邏輯“真”的數(shù)值;將第二時(shí)間值與時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值比較,如相同,則置第二時(shí)間標(biāo)志為對(duì)應(yīng)邏輯“真”的數(shù)值;當(dāng)?shù)谝粫r(shí)間標(biāo)志和第二時(shí)間標(biāo)志均為“真”時(shí),將時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)根據(jù)步驟①中確定的系統(tǒng)誤差值進(jìn)行補(bǔ)償處理,并將修正后的時(shí)鐘數(shù)據(jù)重新寫入時(shí)鐘電路中,同時(shí),將第一時(shí)間標(biāo)志和第二時(shí)間標(biāo)志重新置為對(duì)應(yīng)邏輯“假”的數(shù)值;⑥按設(shè)定的時(shí)間間隔重復(fù)進(jìn)行步驟⑤。
上述中的步驟③具體可以采用以下方式實(shí)現(xiàn)在MCU中設(shè)置三對(duì)存儲(chǔ)地址,其中存放的數(shù)值分別代表二個(gè)月份、一個(gè)月中的二個(gè)不同的日期及一個(gè)星期中的二天,一般地,每對(duì)數(shù)值一般分別可選1~12、1~28及1~7中的二個(gè);根據(jù)在步驟②中確定的修正周期,將相應(yīng)的一對(duì)地址中存入該周期內(nèi)不同的數(shù)值,即作為第一時(shí)間值和第二時(shí)間值,另二對(duì)地址則分別存入一對(duì)相同的數(shù)值;步驟⑤中的“當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值”可通過(guò)以下方式確定查詢所述三對(duì)存儲(chǔ)地址中的數(shù)值并比較,存放有二個(gè)不同數(shù)值的該對(duì)地址其對(duì)應(yīng)的周期即為修正周期,其中的二個(gè)數(shù)值即為第一時(shí)間值和第二時(shí)間值,并以此確定與之比較的當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值;在步驟⑥中的“設(shè)定的時(shí)間間隔”為比步驟②中所確定的“修正周期”更小的一個(gè)周期如所確定的“修正周期”為每年的,則“設(shè)定的時(shí)間間隔”至少為每月;如所確定的“修正周期”為每月的,則“設(shè)定的時(shí)間間隔”至少為每天;如所確定的“修正周期”為每日的,則“設(shè)定的時(shí)間間隔”至少為每小時(shí);以此類推。
應(yīng)用本發(fā)明的方法編寫相應(yīng)的軟件固化在智能鐘控設(shè)備的MCU中,即可實(shí)現(xiàn)智能鐘控設(shè)備的時(shí)鐘自動(dòng)校正,使其更為準(zhǔn)確、可靠地運(yùn)行。
圖2為實(shí)現(xiàn)
圖1所示實(shí)施例的一個(gè)程序流程圖。
如圖1、圖2所示,為發(fā)明的一個(gè)實(shí)施例,其包括以下步驟①在設(shè)置有時(shí)鐘芯片的鐘控產(chǎn)品出廠之前先試運(yùn)行一段時(shí)間,觀察并記錄下其時(shí)鐘芯片的系統(tǒng)誤差值m(在本實(shí)施例中為秒級(jí)誤差);
②根據(jù)所述誤差值m按時(shí)鐘產(chǎn)品的精確度要求確定修正周期,在本實(shí)施例中假設(shè)為每月一次;③根據(jù)每月一次的修正周期,確定第一時(shí)間值a和第二時(shí)間值b應(yīng)為一個(gè)月中的二個(gè)不同的日期值,即a、b為1~28的兩個(gè)不同數(shù)值,如a設(shè)定為2(代表2號(hào)),b設(shè)定為5(代表5號(hào));④在微控制器(MCU)中設(shè)置二個(gè)存儲(chǔ)地址,用來(lái)存儲(chǔ)分別與上述第一時(shí)間值a對(duì)應(yīng)的第一時(shí)間標(biāo)志Time1和與上述第二時(shí)間值b對(duì)應(yīng)的第二時(shí)間標(biāo)志Time2,并置初始值為“0”(代表邏輯“假”);⑤至少每小時(shí)一次重復(fù)以下步驟將第一時(shí)間值a與時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)中的日期值比較,如相同,則置第一時(shí)間標(biāo)志Time1為“1”(代表邏輯“真”);將第二時(shí)間值b與當(dāng)前時(shí)鐘數(shù)據(jù)中的日期值比較,如相同,則置第二時(shí)間標(biāo)志Time2為“1”(代表邏輯“真”);當(dāng)?shù)谝粫r(shí)間標(biāo)志Time1和第二時(shí)間標(biāo)志Time2均為“1”時(shí),將時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)根據(jù)所述系統(tǒng)誤差值m進(jìn)行補(bǔ)償處理,并將修正后的時(shí)鐘數(shù)據(jù)重新寫入時(shí)鐘電路中,同時(shí),將第一時(shí)間標(biāo)志Time1和第二時(shí)間標(biāo)志Time2重新置為“0”。
以下為依據(jù)圖2的程序流程圖所編寫的一段源程序(MCU為80C51),其中TIME即為所讀出的時(shí)鐘數(shù)據(jù)中的日期值。
INIT_0CLK EQU 90H;DS1302的CLK接P1.0IO EQU 91H;DS1302的I/O接P1.1RST EQU 92H;DS1302的RST接P1.2DATA EQU 26H;存放DS1302的數(shù)據(jù)ADDR EQU 27H;存放DS1302的地址SEC EQU 50H;秒的緩沖區(qū)MIN EQU 51H;分的緩沖區(qū)HR EQU 52H;時(shí)的緩沖區(qū)DATE EQU 53H;日的緩沖區(qū)MONTH EQU 54H;月的緩沖區(qū)DAY EQU 55H;星期的緩沖區(qū)YEAR EQU 56H;年的緩沖區(qū)Time1 EQU 2AH;第一時(shí)間輔助標(biāo)志位Time2 EQU 2BH;第二時(shí)間輔助標(biāo)志位ELECT EQU 2CH;偏快或偏慢選擇標(biāo)志位COMP EQU 2DH;讀數(shù)比較與否標(biāo)志位INIT_1MOV 25H,#00H;初始化位″2AH″、″2BH″為邏輯″0″SETB ELECT;若是偏慢置選擇位″2CH″為邏輯″1″,LOOP0MOV R5,#5FH若偏快則置選擇位″2CH″為邏輯″0″LOOP1MOV R6,#68HLOOP2DJNZ R6,LOOP2DJNZ R5,LOOP1JNB COMP,LOOP0 ;要讀數(shù)比較否LCALL REDS ;讀出DS1302中時(shí)分秒及年月日等數(shù)據(jù)CLR COMP;清″0″讀數(shù)比較標(biāo)志位MOV A,TIME;讀出當(dāng)前時(shí)間TIME數(shù)據(jù)CJNE A,#a,LOOP3;讀出的時(shí)間是否aSETB Time1;Time1為時(shí)間a輔助標(biāo)志位LOOP3CJNE A,#b,LOOP5;讀出的時(shí)間是否bSETB Time2;Time2為時(shí)間b輔助標(biāo)志位MOV A,SEC;將SEC(秒)數(shù)據(jù)送累加器AJNB Time1,LOOP0JNB Time2,LOOP0JNB ELECT LOOP4CJNE A,#00H LOOP0 ;假設(shè)時(shí)鐘偏慢了m秒MOV SEC,#m;在″0″秒數(shù)據(jù)″加″為″m″LJMP LOOP5LOOP4CJNE A,#m,LOOP0;假設(shè)時(shí)鐘偏快了m秒MOV SEC,#00H;將″m″秒數(shù)據(jù)″減″為″0″LOOP5LCALL WRDS;將修正了偏差量后的數(shù)據(jù)寫入DS1302CLR Time1;置″0″兩個(gè)時(shí)間標(biāo)志位CLR Time2LJMP LOOP0
權(quán)利要求
1.一種由MCU控制運(yùn)行的時(shí)鐘電路的誤差修正方法,其特征在于包括以下步驟①在設(shè)置有時(shí)鐘電路的鐘控產(chǎn)品出廠之前先試運(yùn)行一段時(shí)間,觀察并記錄下其時(shí)鐘電路的系統(tǒng)誤差值;②根據(jù)所述誤差值按時(shí)鐘產(chǎn)品的精確度要求確定修正周期,如每日、每星期、每月或每年;③確定二個(gè)時(shí)間值,即第一時(shí)間值(a)和第二時(shí)間值(b),分別對(duì)應(yīng)修正周期內(nèi)的二個(gè)不同時(shí)間如修正周期為每年的,則分別為二個(gè)不同的月份,如修正周期為每月的,則分別為一個(gè)月中的二個(gè)不同的日期,如修正周期為每星期的,則分別為一個(gè)星期中的二天,以此類推;④在微控制器(MCU)中設(shè)置二個(gè)存儲(chǔ)地址,用來(lái)存儲(chǔ)分別與上述第一時(shí)間值(a)和第二時(shí)間值(b)對(duì)應(yīng)的時(shí)間標(biāo)志,并置初始值為對(duì)應(yīng)邏輯“假”的數(shù)值;⑤將第一時(shí)間值(a)與時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值比較,如相同,則置第一時(shí)間標(biāo)志為對(duì)應(yīng)邏輯“真”的數(shù)值;將第二時(shí)間值(b)與時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值比較,如相同,則置第二時(shí)間標(biāo)志為對(duì)應(yīng)邏輯“真”的數(shù)值;當(dāng)?shù)谝粫r(shí)間標(biāo)志和第二時(shí)間標(biāo)志均為“真”時(shí),將時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)根據(jù)步驟①中確定的系統(tǒng)誤差值進(jìn)行補(bǔ)償處理,并將修正后的時(shí)鐘數(shù)據(jù)重新寫入時(shí)鐘電路中,同時(shí),將第一時(shí)間標(biāo)志和第二時(shí)間標(biāo)志重新置為對(duì)應(yīng)邏輯“假”的數(shù)值;⑥按設(shè)定的時(shí)間間隔重復(fù)進(jìn)行步驟⑤。
2.根據(jù)權(quán)利要求1所述的由MCU控制運(yùn)行的時(shí)鐘電路的誤差修正方法,其特征在于所述的步驟③中第一時(shí)間值(a)和第二時(shí)間值(b)的確定采用以下方式實(shí)現(xiàn)在MCU中設(shè)置三對(duì)存儲(chǔ)地址,其中存放的數(shù)值分別代表二個(gè)月份、一個(gè)月中的二個(gè)不同的日期及一個(gè)星期中的二天,一般地,每對(duì)數(shù)值一般分別可選1~12、1~28及1~7中的二個(gè);根據(jù)在步驟②中確定的修正周期,將相應(yīng)的一對(duì)地址中存入該周期內(nèi)不同的數(shù)值,即作為第一時(shí)間值(a)和第二時(shí)間值(b),另二對(duì)地址則分別存入一對(duì)相同的數(shù)值。
3.根據(jù)權(quán)利要求2所述的由MCU控制運(yùn)行的時(shí)鐘電路的誤差修正方法,其特征在于此時(shí),步驟⑤中的“當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值”通過(guò)以下方式確定查詢所述三對(duì)存儲(chǔ)地址中的數(shù)值并比較,存放有二個(gè)不同數(shù)值的該對(duì)地址其對(duì)應(yīng)的周期即為修正周期,其中的二個(gè)數(shù)值即為第一時(shí)間值(a)和第二時(shí)間值(b),并以此確定與之比較的當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值。
4.根據(jù)權(quán)利要求1所述的由MCU控制運(yùn)行的時(shí)鐘電路的誤差修正方法,其特征在于在步驟⑥中的“設(shè)定的時(shí)間間隔”為比步驟②中所確定的“修正周期”更小的一個(gè)周期如所確定的“修正周期”為每年的,則“設(shè)定的時(shí)間間隔”至少為每月;如所確定的“修正周期”為每月的,則“設(shè)定的時(shí)間間隔”至少為每天;如所確定的“修正周期”為每日的,則“設(shè)定的時(shí)間間隔”至少為每小時(shí);以此類推。
全文摘要
一種由MCU控制運(yùn)行的時(shí)鐘電路的誤差修正方法,包括以下步驟:①確定系統(tǒng)誤差值;②確定修正周期;③確定二個(gè)時(shí)間值,即第一時(shí)間值(a)和第二時(shí)間值(b),分別對(duì)應(yīng)修正周期內(nèi)的二個(gè)不同時(shí)間;④在微控制器(MCU)中存儲(chǔ)分別與上述第一時(shí)間值(a)和第二時(shí)間值(b)對(duì)應(yīng)的時(shí)間標(biāo)志,并置初始值為對(duì)應(yīng)邏輯“假”的數(shù)值;⑤將第一時(shí)間值(a)、第二時(shí)間值(b)分別與時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)的相應(yīng)數(shù)值比較,如相同,分別將第一時(shí)間標(biāo)志、第二時(shí)間標(biāo)志置為對(duì)應(yīng)邏輯“真”的數(shù)值;當(dāng)兩者均為“真”時(shí),則將時(shí)鐘電路當(dāng)前時(shí)鐘數(shù)據(jù)根據(jù)系統(tǒng)誤差值進(jìn)行補(bǔ)償修正,并重新寫入時(shí)鐘電路中,同時(shí),將第一時(shí)間標(biāo)志和第二時(shí)間標(biāo)志重新置為對(duì)應(yīng)邏輯“假”的數(shù)值;⑥按設(shè)定的時(shí)間間隔重復(fù)進(jìn)行步驟⑤。本發(fā)明可實(shí)現(xiàn)智能鐘控設(shè)備的時(shí)鐘自動(dòng)校正,使其更為準(zhǔn)確、可靠地運(yùn)行。
文檔編號(hào)G04G5/00GK1385769SQ0211224
公開日2002年12月18日 申請(qǐng)日期2002年6月26日 優(yōu)先權(quán)日2002年6月26日
發(fā)明者張春峰 申請(qǐng)人:寧波天安(集團(tuán))股份有限公司