深圳市英銳恩科技有限公司(www.cdweigu.cn)為單片機技術服務\開發設計和產品代理商,授權MDT(麥肯 MICON)單片機A級代理商,MICROCHIP產品全系列單片機與模擬器件授權推廣
商。同時A級代理分銷NOVACAP、Syfer、Voltronics精密可調電容、DLI寬帶隔直微波電容,專注分銷AIC沛亨半導體(電源管理IC)、IR(場效應管)。
如:
MDT2005、MDT10P05(完全兼容PIC16C54c、PIC16F54、CF745直接替換,不要任何硬軟與軟件修改)
特性:ROM:0.5K,腳位:18PIN,I/O:13PIN,復位時間極快.2V,低電壓工作.低功耗,溫度范圍寬。
MDT2010、MDT10P10(完全兼容PIC16C56A,直接替換,不要任何硬軟與軟件修改,媲美EMC78P156,HT48R06)
特性:ROM:1K,腳位:18PINI/O:13PIN,復位時間極快.2V,低電壓工作.低功耗,溫度范圍寬。
菜鳥學PIC單片機(二):LCD 時鐘 (功能設計過程中的致命bug)
結合昨天LCM的驅動編寫過程,小弟今天準備利用定時器用LCM來顯示時鐘.
呵呵,下午邊調變改,有些收獲和疑問,現一并寫出來,請行家指點.
功能很明確:利用TMR0實現精確定時,_clock子程序更新時間,LCM顯示時間
但是,遇到了一些問題:
1.在ICD和demo板上調試運行,結果顯示應為
HH MM SS
00:00:00
且ss對應下的秒區字符應該每1秒改變一次.但是,運行的結果如下:
1) 參考本例的源程序,其他一切不變,只是預分頻為1:8(原來設計為1:16)
那么,應該是每0.5秒變化一次,但是據小弟多次觀察,運行的時候,SS的秒區
為每分鐘(人工大概估計)計數一次,及秒表變成了分表,另外,在每分鐘里,SS區的字符會有2到3次調變
比如0x(x為當前計數顯示值)變成24,一晃而過,又恢復顯示0x.
(a)小弟仔細檢查定時,轉換,顯示的程序流程,沒有發現為何沒半秒顯示計數變成了每分鐘顯示計數的原因;
(b)至于SS秒區的字符會跳變,小弟認為可能是LCM的控制問題.
2. 在主程序main中,loop循環中的第一條指令clrwdt會引起一些問題:
main
nop
call _init ; 調用初始化子程序
call _disp1 ; 調用顯示字符" HH MM SS "的子程序
loop clrwdt ; ★★★注意!!該語句的功能,小弟很疑惑
call _clock ; 調用時鐘計算子程序
call _convert ; 調用時鐘的小時,分,秒的BCD碼轉換子程序
call _disp2 ; 調用轉換后的小時:分:秒字符的顯示子程序
goto loop
所引起的問題如下:
1)首先,我在ICD燒錄時,在option選項中是關掉WDT的;
2)若去掉該語句,程序仍然同前文1.所描述的情況,唯一變化的是,時間顯示區的字符跳變
從SS區換成HH區,即小時區下的00會在分鐘之內,好幾次跳變成52.
3)以為是偶然,于是禁用和啟用該語句兩次,現象沒變.
小弟認為,既然分頻器給了TMR0,燒錄時也關了WDT,那么,該語句所起的作用是什么呢?
3. 其實該程序存在一個致命的問題,吃晚飯時,小弟想到了癥結所在.
呵呵,小弟先不點出來,愿意和大家一起商討解決的好辦法......
請各位PIC單片機愛好者看過來...