Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
放心吧,C的宣告其實也不會太難...曾百由老師的書第4章就是在說記憶體宣告的部分,當然如果你覺得有什麼不夠的地方也可以去看看microchip的data sheet會有更清楚的說明...
C Complier User's guide
發表於: 2007/7/9 21:02
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
中級會員
|
曾百由寫的C語言與PIC18微控制器
好像目前市面上 只有這一本是用C寫的 找了好多都是用組語! 其他的只可以來這裡問人!可是我的問題又很基本 ,問的我自己都很心虛!!其他的記憶體位址的宣告 我真的更搞不懂!! 身邊的同學又都是用 51作專題!但是PIC真的很方便
發表於: 2007/7/9 19:18
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
USA-LA,有夠遙遠的啦~可以問問版主那裡有沒有workshop,其實我之前為了學PIC也到處找PIC的書,可以找來找去真的沒幾本書十支手指頭都數的完了,右手邊的範例程式第8點,慮春林寫的那本我就看過,算是寫的不錯的中文書了,至於PIC C到目前為止我只看過一本,就是曾百由寫的C語言與PIC18微控制器,雖然筆誤的地方不少,但如果想用C的話還是可以看看的.其實如果沒有同事可以討論的話,那就是能多找些書來看或是網路上找一些範例程式來參考,右手邊也有一些中文參考書也有幾本不錯的可以買來看看或多或少都有幫助的,雖然大多書上的寫法都是教學的寫法在實際應用上有差不太一樣,但基本的原理是相同的不會差太遠.
呵呵~你都用10F,12F..我都用16F57..半斤8兩,57只有一個timer0,wdt和一堆I/O其它就全部靠自己了.想想公司的前輩也真是厲害,居然用57搞汽車防盜器,而且還有2WAY的功能...真是了不起,要不是參照他們的程式做小修改,我想我也是寫不出來的,但要看懂他們的程式也真的是費了不少時間..哈哈~ 另外MCU C和一般C是不太一樣的,老實講我覺得差性還蠻大的,除了基本指令if...else...,for(;;;),while(1)...這些指令的用法相同,一些記憶體位址的宣告及使用還真是一團亂呢,討厭的是不同版本的C,宣告及使用方式又有些不同,還是要找出相關datasheet來看,但大多又寫不清楚所以用起來還真是討厭,但用C的好處是換MCU程式幾乎不用改,用ASM就...XXOO@!#! 你在LA英文不用很好嗎??我想MCU那些簡單的英文難不倒你的,你還有問題的話可以在這問,我想還有很多比我強的可以回答你,而且你也要讓我偷翻一下datasheet ^^~. 說真的你還真有毅力,只憑著一本書,一個燒錄器就可以玩的那麼高興...自從我知道有ICE2000模擬器這種好東西以後,就過著不能沒有模擬器的日子了,雖然同行一再告戒我模擬器不要常用才會增加功力,但是中毒以深難無藥可救了...^^~
發表於: 2007/7/9 9:55
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
Yiming 所言甚是, 如果說能成孤獨英雄還好, 就怕變狗熊一隻...
每每百思不解最後就成了臭鼠一隻囉..... You are so lucky, 還有同事可請教,,我咧,,,就一本從台北帶來的16F877的葵花寶典, 但是呢, 我只會用10F, 12F系列所以哩...唉~ 有總比沒有好啦! 基本上公司還蠻空閒的啦!(大概快倒了, 嗚..嗚..). 所以才自己玩玩增加經驗囉 ! 奇怪的是, 我在附近的社區大學發現不到Micro Controller的課, 如有也都是C語言的 ,我就只會一些 Assembly (這似乎比較簡單), 還有呀, 去上課還要查一堆單字,唉~ 真不知去進修MicroP,還是上英文課呢....."><" 說真的, 真謝謝你的教導, 暫時還不知道要從哪兒問起,, 需要消化一下,再來請教嚕....3Q lor...haha~ 今年不回台北了,,若有機會到LA時請通知一下,,,偶一定問你到臭頭 (嘿嘿..不會嚇到你呗 haha.)
發表於: 2007/7/9 1:48
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
呵呵~不用客氣啦~~
想當初我第一次看這種架構的程式時也看的很辛苦,但我的運氣比較好有同事可以問,加上公司有模擬器可以用,所以對程式的了解和使用有很大的幫助,當你看懂這種程式架構之後就會覺得他很神奇也很好用,這可是公司很多前輩的心血,當然這種架構還有很多變種的型態,這是基本型的.但功能都大同小異,加裝一個RF模組可以收RF CODE,也可以做I/O DEBOUNCE和時間的處理(還蠻準的).. 但有些同行說這個架構的程式有限制會造成程式寫不大...因為timer的時間是100us所以100us(大約400行程式)之內一定要呼叫timer程式不然時間會不準,所以主程式不可以超過400行. 但實際在使用時不可能只呼叫一次timer,可以把程式分割成很多小部分,只要各個小部分的程式都不要超過400行就可以了.那麼程式也可以寫的很大的,至少我目前用起來是這樣子的,16F57有2K的ROM都寫到快滿了,當然我用了一些共用程式碼的副程式和特殊的手法來共用程式,不然只有2K也是不夠用的... 不曉得你是在公司做還是個人玩PIC,但我的感覺是在公司或是接案子的學習速度是最快的,加上有人可以討論感覺會比較好,一個人做孤獨的英雄是很難長久的...^^~
發表於: 2007/7/8 1:46
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
3Q.. 版大 & yiming ..謝謝啦 !!
在此領教, 話永遠不嫌多 ,只是打字會累死人啦.. 哈..哈.. PIC有個好處, 就是初學者很容易上手; 以笨鴨偶來說吧 , 買個 BFMP ( 好像US$20多), 也沒有IDE ,當漏個 MPLAB ,就醬子玩玩起來啦 ; 胡搞亂寫一通, 居然也會工作 ??哈..哈 還真有些成就感也. 也感謝個位大鍋大姐指導 , 給男生一個緊緊握手和擁抱, 給女生一個緊緊擁抱和...二硫碘化鉀(KISS).. 哈..哈.. 偶需要一些時間來消化一下, 希望能悟出一些道理來.. 再請教個位大鍋大姐囉 .... Have a nice weekend and take care ...
發表於: 2007/7/7 0:42
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
clrwdt 在幹啥? 如果已設定 WDT_OFF 還需要此指令嗎?
clrwdt是把watch dog timer歸零,這是一個硬體重置的保護裝置(大部分的MCU都有這個東東),當watch dog timer over時會重置MCU,但你把WDT_OFF就不必使用clrwdt. watch dog timer可以用來避免程式進入死迴圈出不來而造成當機的現象.如果不是擔心耗電的問題,建議把WDT_ON,但要記得用clrwdt來清楚避免MCU重置(建議至少5ms要清一次wdt) 當你進去sleep mode時,也可以利用wdt來喚醒MCU. 怎麼一個WDT講這麼多,真是多話...嘻嘻 一般的delay程式是延遲固定的程式所以時間的的總合是延遲時間+主程式的執行時間,麻煩的是主程式的時間並不固定,總不可能主程式一改就修改延遲時間去配合吧,而且要計算主程式的時間也太累人了. timer則是不論主程式使用了多少時間(不可以超過100us),在進入timer一定會等到100us才開始往下執行程式,也就是說你主程式所用的時間會包含在延遲的時間之內,有了這個特性之後就可以安心的寫主程式,不用計算主程式的時間了. 而且可以用來做來較大時間的延遲. ex: delay_10sec: clrf t250ms dly_lop: call timer movlw .10*4 ;10 sec 更改這裡就可以改變延遲時間 subwf t250ms,w btfss status,c goto dly_lop retlw .0
發表於: 2007/7/6 10:54
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
版主
|
If the Watch-Dog Timer has been disabled , you can ignore the CLRWDT instruction.
FSR 是 RAM 的 Index Address ( also call Point) , CLRF FSR 是將 FSR register 清零 將 Point 指向 RAM 0x00 的位址。 PIC10 & PIC12 & PIC16F5x 等系列的 PIC 因為不具有中斷的功能,所以 Timer0 只是提供一個基本的計數功能以取代需用軟體做 Delay 所浪費的CPU資源。
發表於: 2007/7/6 10:35
|
|||
|
Re: 關於Timer0...
|
||||
---|---|---|---|---|
資深會員
|
3Q yiming ...
笨鴨偶沒修過程式, 玩PIC也是近年來的事, 每次回台(10-15 DAYS) 都沒碰到課可以充電一下, 想請個短期家教也沒人理偶, 所以一路走來滿辛苦的.. 目前也一直還在用10F20X and 12F50X 而已.. 所以會問些笨笨問題 ??? clrwdt 在幹啥? 如果已設定 WDT_OFF 還需要此指令嗎? clrf fsr 又在幹啥呀 ?? 主程式在CALL timer後, 不是還是要等待timer完成後才又回到主程式, 那跟主程式寫的delay程式, 有何不同呢? 既然Timer0是獨立體, 那偶又如何去觸發它做delay程式, 而Timer0又如何通知主程式已經完成delay了呢? 3Q Lor ..
發表於: 2007/7/6 1:54
|
|||
|