Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
資深會員
|
1. 使用太多 call (12f510 只有兩層 堆疊 )
2.timer 0 不是 timer ? movlw .100 movwf time_x movlw 0x82 ; tmr0 預除 8 option clrf tmr0 while_t: movf tmr0 ,f btfss status , z ; over 1 ms ? goto while_t goto $ + 1 goto $ + 1 goto $ + 1 decfsz time_x , f goto while_t ; not over 100 ms movlw .100 movwf time_x ~~~~ your program..... ~~~~~ ~~~~ ~~ 不要超過 2000個指令時間 goto while_t 如時脈為8mhz , tmr0 預除 8 ( 256 * 8 = 2048 ) 如 2000個指令時間 不夠用 也可將預除時間 加大 , time_x 的預設值減小........
發表於: 2009/4/1 18:01
|
|||
|
Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
資深會員
|
這就怪了,DataSheet Page15 Reset Vector寫的是0x000...還是我有漏看了什麼?
發表於: 2009/4/1 15:48
|
|||
|
Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
版主
|
在補充一下,PIC12F510 一開機時,Reset Vector 是在 0x3FF 的,Microchip 在12F510出廠時就將內部RC振盪器的校正值燒在0x3FF (MOVLW oxNN) 執行完此行指令後程式計數器自 0x3FF --> 0x000 歸零後就直接將校正值寫入 OSCCAL 暫存器。
發表於: 2009/4/1 10:39
|
|||
|
Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
資深會員
|
3FFH內存放OSCCAL的校正值,把校正值放到OSCCAL裡,MCU就可以固定RUN 1MIPS的速度。
發表於: 2009/3/31 17:21
|
|||
|
Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
初級會員
|
參照:
請問為什麼要在OSCCAL前一行寫CALL 3FFH ???
發表於: 2009/3/31 17:09
|
|||
|
Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
版主
|
如果用軟體方式做 Delay 的話,建議使用MPLAB SIM 軟體模擬的方式來做,先選MPLAM SIM 並在 Setting 下設定工作頻率,配合中斷點的使用只要用 SOTPWATCH 視窗就可以輕鬆的算出軟體的執行時間了。當然 長時間的 Delay Routine 是需從最底層建立的,也許先建個 1mS 後確定時間正確再建 100mS 的 Delay 這樣一層一層疊上去。
當然用 Timer0 使用 Polling 的方式會比用純軟體方式來的有效率。
發表於: 2009/3/31 11:38
|
|||
|
Re: PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
資深會員
|
1.請在movwf OSCCAL的前一行寫CALL 3FFH
2.有TMR0,可以用POLLING的方式數時間
發表於: 2009/3/31 9:08
|
|||
|
PIC12F510的Delay_Time(組語)
|
||||
---|---|---|---|---|
初級會員
|
使用PIC12F510寫PORT的控制。但Delay_Time一直寫不出。
如果我想delay100ms ~ 5000ms 請問又該如何寫呢?? (我主要要控制 GPIO,O 和 GPIO,1) 請各方高手幫忙求助,謝謝大家 PIC12F510好像沒有計數器吧?? ============================
程式如下
發表於: 2009/3/30 22:36
Edited by Ryang on 2009年03月31日 11:07:26
|
|||
|