• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users




« 1 (2) 3 4 5 »


Re: Regarding to Timer0
#32
資深會員
資深會員


查看用戶資訊
3Q yiming! 程式如此快速完成啦....
笨鴨會仔細瞧瞧.... 有沒有打錯字lor .... hahaha.

有個想法 ????
可不可以直接把大鍋腦袋內容直接燒錄到笨鴨腦袋呀?? hahaha...
天龍八部中, 不是都可以直接把功力傳送咩....
笨鴨只要COPY功力就好啦!!! 不需傳送.... hahaha...

Happy Day ....


發表於: 2007/9/3 23:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#31
資深會員
資深會員


查看用戶資訊
這次有建專案測試過了,應該不會有太大的錯誤了...
1.雖然有人建議我寫程式要分大小寫,來增加可讀性,但由於一下大寫一下小寫打字上實在很麻煩,所以我還是習慣全部用大寫.
2.但有些好習慣確實是要建立的,像_lable: 前面加底線後面加冒號,這是標記的好習慣,如果程式變大了,要找特定的程式就很快,像_timer:用搜尋一下子就找到了.
3.在程式的最開頭設定IC燒錄也是好習慣,能節省不少時間.
4.養成程式分段的好習慣,對程式的可讀性也是有很幫助的.
5.在程式最前面註明程式修改的時間及修改項目,供日後追查什麼時候鋳下大錯的.
PIC12F508                     FOR    TIMER0                                     08-27-2007
        
#INCLUDE                <P12F508.INC>                   ; PROCESSOR SPECIFIC VARIABLES
CONFIGURECONTROLS THE RESET PINCODE PROTECTOSCILLATOR SELECTIONWDT.
        
__CONFIG _MCLRE_OFF _CP_OFF _WDT_OFF &_INTRC_OSC
;FUNCTION ADDTION
;20070831 MP752 CS:
;
ADD T5MS,T250MS,T1MIN,T1HOURS[color=00CC00]
;
20070903 MP752
;ADD 倒數計時器,DEBOUNCE I/O[/color]
;*******[
DEFINES VARIABLE ASSIGNMENTS]
  
CBLOCK 0X08
        T64US                   
; FOR TIMER  REGISTER.
        
T5MS                    ; FOR TIMER  REGISTER.
        
T250MS                  ; FOR TIMER  REGISTER.
        
T1MINS                  ; FOR TIMER  REGISTER.
        
T1HOURS                 ; FOR TIMER  REGISTER.
        
TEMP                    TEMP
        OGPIO                   
OLD GPIO
        TGPIO                   
TEMP GPIO
        LED1_TMR                
LED1 TIMER
        LED2_TMR                
LED2 TIMER
        LED3_TMR                
LED3 TIMER
        ENDC
;*******[DEFINE GPIO PIN]***************
LED1            EQU     0
LED2            EQU     1
SW1             EQU     2
SW2             EQU     3
SW3             EQU     4
SW4             EQU     5
;*******[RESET VECTOR]******************
        
ORG     0X000           PIC GOES HERE (ORIGIN OF CODEAFTER RESET.
        
MOVWF   OSCCAL          LOAD THE OSCILLATOR CALIBRATION FACTOR.
        
MOVLW   B'11000101'     DISABLE WAKE ON PION CHANGE AND ENABLE PULL-UPS RESISTER,PRESCALER=1:64.
        OPTION                          
;
        
MOVLW   B'00111100'     SET GP 2,3,4,5 TO AN INPUTGPIO 0,1 TO OUTPUTS.
        
TRIS    GPIO            GP0LED1,GP1 =LED2.
_INIT:
        
MOVLW   .78
        MOVWF   T64US
        MOVLW   .50
        MOVWF   T5MS
        MOVLW   .60
*4
        MOVWF   T250MS
        MOVWF   T1MINS
        CLRF    T1HOURS
        MOVLW   .1
        MOVWF   LED1_TMR
        MOVWF   LED2_TMR
        MOVWF   LED3_TMR
;-----[MAIN ROUTINE]--------------------
;
主程式太簡單,沒什麼好說明的
_CHK_SW1
:
        
CALL    _TIMER
        BTFSS   GPIO
,SW1
        
GOTO    _CHK_SW2
        BSF     GPIO
,LED1
        MOVLW   .5
*4            ;5 SEC
        MOVWF   LED1_TMR
        CLRF    T250MS
_CHK_SW2
:
        
BTFSS   GPIO,SW2
        
GOTO    _CHK_SW3
        BSF     GPIO
,LED2
        MOVLW   .8
*4            ;8 SEC
        MOVWF   LED2_TMR
        CLRF    T250MS
_CHK_SW3
:
        ;
        ;
_NO_KEY_INPUT:
        
MOVLW   .60*4           ;60 SEC
        SUBWF   T250MS
,W
        BTFSS   STATUS
,Z
        
GOTO    _CHK_SW1
_KILL_DUCK
:
        
BSF     GPIO,LED1
        BSF     GPIO
,LED2
        
GOTO    _KILL_DUCK
;******* TIMER ROUTINE *****************
_TIMER:   
        
BTFSC   TMR0,0          ;
        GOTO    
_T64US_1        ;
_T64US_0:
        
BTFSS   TMR0,0          ;
        GOTO    
_T64US_0        ;
        GOTO    
_T64US          ;
_T64US_1:
        
BTFSC   TMR0,0          ;
        GOTO    
_T64US_1        ;
_T64US:
        ;
IN THIS SECTION EVEN 64US DO 1 TIMES
        
;YOU CAN DO SOME IN HERE
        
;
        
DECFSZ  T64US,F         [color=00CC00];上次這裡錯了[/color]
        GOTO    
_MQ1
        MOVLW   .78
        MOVWF   T64US
_T5MS
:
;---------------------------------------[
color=00CC00]
;
DEBOUNCE
        MOVF    GPIO
,W
        MOVWF   TEMP 
        XORWF   TGPIO
,W
        BTFSS   STATUS
,Z
        
GOTO    _TRAB2
        MOVF    TEMP
,W
        MOVWF   OGPIO
_TRAB2
:
        
MOVF    TEMP,W
        MOVWF   TGPIO
[/color]
;---------------------------------------
        
DECFSZ  T5MS,F
        
GOTO    _MQ1
        MOVLW   .50
        MOVWF   T5MS            
[color=00CC00];上次這裡錯了[/color]
        
INCF    T250MS,F
_T250MS
:
        
MOVLW   .60*4           
        SUBWF   T250MS
,F
        BTFSS   STATUS
,C
        
GOTO    _T250

        INCF    T1MINS
,F
        MOVLW   .60
*4
        SUBWF   T1MINS
,F
        BTFSC   STATUS
,C
        INCF    T1HOURS
,F
;---------------------------------------[color=00CC00]
;
倒數計時器
_T250
:
        
DECFSZ  LED1_TMR,F
        
GOTO    _T2501
        INCF    LED1_TMR
,F
_T2501
:
        
DECFSZ  LED2_TMR,F
        
GOTO    _T2502
        INCF    LED2_TMR
,F
_T2502
:
        
DECFSZ  LED3_TMR,F
        
GOTO    _T2503
        INCF    LED3_TMR
,F
_T2503
:
        ;[/
color]
;---------------------------------------
_MQ1:
        
RETLW   .0    
;***************************************
        
END





發表於: 2007/9/3 14:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#30
資深會員
資深會員


查看用戶資訊
想知道他怎麼貼圖的嗎??很簡單,回覆/引用文章,就可以看到.
1.先申請個網路硬碟,然後把圖片放上去.
2.[img algin=left ]http://圖片的網路位置 [/img ]
ps:中括弧最後面沒空格

上全部的課??依你目前的功力,除了USB/CAN/C18..一些特殊的應用之外,其它都只是去吃便當而已,把便當留給有需要的人吧.

我不是老板啦~只是個小小的歹命的軟體工程師,只是太無聊常上來逛逛.

debounce的程式沒幾行,但是很好用,能解決彈跳的問題,省了一些消除彈跳的硬體費用,簡單來說,在按鍵按下或放開的瞬間在MCU I/O用示波器能看到hi lo的變化,在這段時間MCU並沒有辨法確定此時的I/O狀態,最簡單的方式就是延遲一段時間等I/O狀態穩定再來讀取,所以把debounce程式加在timer的T5ms來做判斷是很合適的.

大部分的產品都會有按鍵的功能,也就會用到類似的程式來解決彈跳的問題,ex:手機,電話,..舉凡有按鍵的電子產品都有會彈跳的問題.

倒數計時器,也是常常會用到的功能,我舉個例子吧,像斷電延遲器,以前我去過一個同學的家裡,他家的廁所在門上裝了一個開關,在關門時會點亮廁所的燈,很省電又方便的設計對吧,鴨子家要不要也弄一個,但缺點是一開門,但還沒離開燈就滅了,一片漆黑...%$^#$^#&...

所以如果開門在3秒後才關燈,是不是就很理想了...

那個只是小考啦~粉簡單的,如果用一般call delay的方式來做時間反而不容易算的很準確.


12F629
縮圖
?>

發表於: 2007/9/3 11:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#29
資深會員
資深會員


查看用戶資訊
3Q Ryang ...
嗯.. 資料滿豐富的 ,可以好好 研究一下...

不是笨鴨鍾情於 PIC10Fxxx , 12F5xx..
而是笨鴨功力有限, 正好這幾顆傻瓜型PIC對笨鴨而言還挺麻吉的.. 呵.. 呵..
亂寫一通居然也會工作, 還真捷克, 太神奇啦 ! 哈..哈...
3Q , PIC , I love you , 嫁給偶吧!(目前只能當細姨, 二奶囉!)haha...

發表於: 2007/9/3 11:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#28
版主
版主


查看用戶資訊
鴨先生這麼鍾情於 PIC10Fxxx 參考一下這個 pdf 檔,練練功還不錯。
http://ww1.microchip.com/downloads/en/DeviceDoc/41283B.pdf

發表於: 2007/9/3 11:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#27
資深會員
資深會員


查看用戶資訊
Good Morning yiming ....
大鍋上班啦 ! 看來大鍋是老板呦, 哈.. 哈...

隔壁台有廣告耶, 只是好奇他是如何貼的圖?

不用錢又有免費便當吃??? 真好耶!!
有機會回去一定要上全部的課,, 哈.. 哈...

笨鴨只有一個最基本的 Baseline Flash MCU Programmer.
其他全沒有, 所以能燒錄的PIC有限, 將就用囉...

簡單的題目??? 笨鴨只是剛剛看懂大鍋的程式而已...
就要月烤啦 !!! 可不可以直接選重修呀??? 呵...呵...

這個程式如果用一般 Call Delay 方法 是不難,
如果用Timer0嘛 ?? 笨鴨又要頭大啦 !!
好吧? 先開個拔辣票, 不豬何時完成囉! 哈.. 哈...
先研究一下 I/O debounce 的程式吧 !! 這個比較重要,對不?


發表於: 2007/9/3 10:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#26
資深會員
資深會員


查看用戶資訊
開補習班和microchip workshop搶生意嗎???我想大家會去不用錢又有免費便當吃的地方吧....呵呵~我自己也常去那吃便當,吃到講師都快不收我了.

嗯,12F675也是不錯的學習IC,只是如果想用ICD2模擬,還要接一個head,不然就只能用燒錄的方式來除錯了,用燒錄的方式來除錯對一些"簡單"的小程式是沒問題,但要玩通訊或是接收就有點累了,只是到目前為止都是簡單的小程式,無所謂啦~

開新專題來討論,可以呀.

鴨,你對timer0的使用方法了解不少了,但還有一些東西要加進去的,不然寫起程式來還是會問題多多...
ex:
I/O debounce 可以加在T5MS那一段.(大多會用到按鍵輸入,就需要加入這段程式)

I/O debouce我想你應該知道原理,忘記的話再提出來討論.

;暫存器定義說明
;ORB OLD RB 記錄上一次SAMPLE RB 狀態(連續10ms狀態相同,表示I/O的狀態是一個穩定值了)
;TRB TEMP RB 用來記錄上一次SAMPLE RB狀態(不一定是穩定值)
;WORK 暫時存放RB的狀態.
;WORK,TRB 只是拿來做記錄,真正可在主程式使用的是ORB.

DEBOUNCE_IO:
        
MOVF    RB,W
        MOVWF   WORK
        XORWF   TRB
,W
        BTFSS   STATUS
,Z
        
GOTO    _TRAB2
        MOVF    WORK
,W
        MOVWF   ORB
_TRAB2
:
        
MOVF    WORK,W
        MOVWF   TRB


倒數計時用的暫存器,可以加在T250Ms那一段.(這部分可有可無,有用到才加)
這個部分我出個"簡單的題目,讓給你想想要怎麼做吧.
Q.做一按鍵1,每按一下則LED1亮5秒後熄減,做一按鍵2,每按一下則LED2亮8秒後熄減,做一按鍵3,每按一下則LED3亮13秒後熄減,如果60秒內沒有任何按鍵,則LED1/LED2/LED3 全亮.


發表於: 2007/9/3 9:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#25
資深會員
資深會員


查看用戶資訊
yiming大鍋, 指導有方囉!
大鍋應該去開個補習班 或是函授班呀?小A點$嘛 ?? Hahaha..

笨鴨認為是該進化啦 ! 所以挑個12F675 來玩玩...

選它的理由嘛 ?
是因為只有兩個PAGE, 有10Bit的A/D 可以練習;
有EEPROM可以練習存資料,還有中斷可以用 ...
看起來滿適合笨鴨的 ;
不知道 yiming大鍋認為如何呀 ???
正好利用 Long weekend 來看 DATA "Shit",,,haha..
反正外面熱的要死 一百多度F耶!!!
我想再開個專題來討論可以嗎?3Q lar,yiming大鍋.



發表於: 2007/9/3 0:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#24
資深會員
資深會員


查看用戶資訊
連我打錯字都看的出來,功力進步很多了哦~
可以玩玩更難的東西了...

發表於: 2007/9/2 16:29
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Regarding to Timer0
#23
資深會員
資深會員


查看用戶資訊
哇晒的... 光是一個Timer0 就可以變如此多戲法來呀???
笨鴨要學到何時呀? 是誰創造Timer0這麼個咚咚.. 累屎人囉!!

還有呀? 大鍋的程式不只是有病毒, 好像時間也有問題耶?
算起來, 笨鴨每四分鐘就被痛宰一次, 這也太狠了吧!! haha.

哦... 偶知道了, 大鍋是要烤笨鴨有沒有做功課對不? 哈..哈..
修改如下....不豬到 有沒有對耶...
;**************************
           
T64us     ;for timer register.
           
T5ms       ;
           
T250ms   ;
           
T1mins    ;
           
T1hours  ;
           
T4hours  ;
           
endc
;****************************
          
org
          
..
 
init
          movlw      .78
          movwf      T5ms
          movlw      .50
          movwf      T250ms
          movlw       .60
*4
          movwf      T1mins
          movlw       .60
          movwf      T1hours
          CLRF         T4hours
;*********************************
start
          
..
          
movlw       .4
          xorwf        T4hours
,w
          btfsws       STATUS
,Z
          
goto          start
          
..
烤鴨
          
goto           init
;*******************Timer Toutine ***************
timer
          
..
 
_T64us_0
          
..
_T64us_1
          
..
 
_T64us
          
.. do something here.
          
decfsz     T5ms,f    64us X 78 =4.992ms.
          goto       
_mq1
          movlw    .78
          movwf    _T5ms 
;( 原本T64us)
_T5ms
          
.. do something here.
          
decfsz     T250ms,f  ;( 原本T5ms)
          goto       
_mq1
          movlw    .50            
5ms X 50 250ms.
          
movwf    T250ms
_T250ms
          
.. .. do something here.
          
decfsz     T1mins,f   250ms X 240 =60s.
          goto       
_mq1
          movlw    .60
*4
          movwf    T1mins
_T1hours
          
..do something here.
          
decfsz      T1hours,f  1min X 60 60 mins.
          goto        
_mq1
          movlw     .60
          movwf     T1hours
_T4hours
          incf          T4hours
,f
           
.. do something here.
_mq1
          retlw       .0
          end





發表於: 2007/9/2 11:24
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------