Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
資深會員
|
施主,這問題應該要問您自己吧?
不過PIC16的goto指令跳的距離只有2K的距離,如果要跳超過這距離的話,要注意PCLATH的值有沒有也是0,不然goto 0會跳到錯誤的地方。
movlw 0
C語言的goto要對應goto的標記,goto 0應該會編譯錯誤,所以要用內嵌組語的方式完成。 PICC沒在用,所以您參考看看就好。 C30的話,大概是類似這樣。
#include<p30f4011.h>
發表於: 2008/8/4 9:30
Edited by master on 2008年08月04日 09:56:46
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
資深會員
|
請問master先進:
我使用PICC16,而使用goto 0; 但不知 0 該要放至置在那兒為佳? 煩請詳說. Thanks.
發表於: 2008/8/4 8:41
|
|||
|
Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
資深會員
|
直接goto 0,讓啟動模組重新接手管理初始化就可以了。
不要用外部硬體RESET,可能是有些周邊設置需要先離線,這樣RESERT才比較安全。
發表於: 2008/8/2 11:30
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
初級會員
|
參照:
我想它的意思是該如何寫"軟體reset"雖然他廠有些高階處理器有此功能,但是這顆好像沒有,我覺得直接將switch一端串接MCLR另一端接至地,比較單純,還有一種辦法,就是啟動WATCHDOG時,在switch觸發後,不要清除WATCHDOG,等待自動RESET。
發表於: 2008/8/2 8:39
|
|||
|
Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
版主
|
啟動模組只要 Reset 後就會跳去先執行。要攔它就需修改修改 crt0.s
,在 C:\Program Files\Microchip\MPLAB C30\src\pic30 裡。 你可以參考檔案下載裡的 dsPIC30F Architecture 教材裡的 ASM30 章節裡的說明。 crt0.s 的功能: Reset 後,控制權會先交給 Crt0.o 裡的 _reset 設定堆疊指標 (W15 & SPLIM) 設定 PSVPAG 及 CORCON ( .const ) 處理初始值的設定 將控制權交給 User’s 程式裡的 main 標記
發表於: 2008/8/1 14:13
|
|||
|
Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
資深會員
|
大家好:
我也想知道該程式中要如何跳至啟動模組之前(C18及PICC16), 假設如下: start_action: start_module(); main(void) { if(PORTBbits.RB0) goto start_action; } Thanks.
發表於: 2008/8/1 13:41
|
|||
|
Re: 程式重置撰寫問題
|
||||
---|---|---|---|---|
版主
|
不是很了解你的需求,而且也沒看到友 main( ) 函數,所以程式是不會編譯成功的。到下載中心下載底下幾個教材看一下:
dsPIC101 ( 一天,免費,英文教材,級數:2 ) dsPIC30F基礎課程 以基本的dsPIC配合 C30 compiler 及使用dsPIC v1.1 Demo board為教材,主要介紹dsPIC的基本C程式的撰寫,介紹如何設定I/O、中斷優先權、巢狀式中斷控制、A/D的自動掃描及轉換、UART 及基本的FIR濾波器的設計。同時也會說明如何用 dsPIC Filter Design來產生係數及介紹使用dsPICworks Tool來觀察Time domain 及 Frequency domain 的資料分析。 203 PRC 課程內容說明 203PRC ( 一天,免費,,英文教材,級數:2 ) PIC24F基本週邊課程 介紹基本C30 的使用及 dsPIC24F 的基本架構。周邊介紹及實驗涵蓋 PSV 原理、中斷處理、I/O 設定、ADC、Timer、Output Comparator、Input Capture、I2C、SPI及 Power Management。課程使用 MPLAB ICD2 及 Explorer-16 (PIC24FJ128GA010) 為實驗工具。
發表於: 2008/8/1 7:45
|
|||
|
程式重置撰寫問題
|
||||
---|---|---|---|---|
新會員
|
各位大大,請問在程式中想要寫一個語法按下SW1後,可以跳到前面程式未執行前的狀態,即是從頭開始動作,該如何撰寫?
如下所示: #include <p30F4011.h> #include "C30EVM_LCD.h" int main( void ) { LATE=0xffff; ADPCFG=0Xffff; TRISE=0xffc0; OpenLCD( ); int a=2; while(1) { if( (PORTEbits.RE8==0) && (a%2==0) ) { a=a+1; setcurLCD(0,1); putrsLCD("1"); while(PORTEbits.RE8==0); } else if( (PORTEbits.RE8==0) && (a%2==1) ) { a=a+1; setcurLCD(0,1); putrsLCD("A"); while(PORTEbits.RE8==0); } if(PORTBbits.RB8==0) { if(PORTBbits.RB8==0) goto Line ???????; } } }
發表於: 2008/7/31 17:28
|
|||
|