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

論壇索引


Board index » All Posts (p886222)




Re: 程式 燒錄問題
資深會員
資深會員


只是小問題,但是就想問清楚

發表於: 2009/11/9 16:43
頂部


Re: 程式 燒錄問題
資深會員
資深會員


我懂你意思,但我是說上一個程式要怎麼抹除掉,不然會不會占太多記憶體!但我想法是下一個會蓋掉前一個範例啦!這樣對嗎?

發表於: 2009/11/9 10:50
頂部


程式 燒錄問題
資深會員
資深會員


我想這是觀念,但我有點問題!我是用icd2
debugger因該是沒有把程式燒到晶片,只是模擬對嗎?
但我每做一個範例程式,到下一個範例程式,我怎麼會知道上一個範例程式占的記憶體有被清楚掉呢!

發表於: 2009/11/8 21:36
頂部


Re: 計時器/計數器問題
資深會員
資深會員


#include <p18f4520.h> //納入微控制器定義檔
#include <timers.h> //納入計時器函式庫定義檔

// 結構位元定義
#pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF

#define TMR1_VAL 65536-16384 // Timer1 設定為 500ms 中斷一次

//宣告函式原型
//void Init_TMR1(void);
void timer1_isr (void);

//宣告並安排中斷執行程式記憶體位置
#pragma code low_vector=0x18
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interruptlow timer1_isr

void timer1_isr (void)
{
PIR1bits.TMR1IF = 0; // 清除中斷旗標
WriteTimer1(TMR1_VAL); // 當將計數器觸發次數歸零寫入預設值
PORTD++; // 遞加PORTD
}

void main (void) {

PORTD = 0x00; // 將PORTD清除關閉LED
TRISD = 0; // 將TRISD設為0,PORTD設定為輸出

//Init_TMR1();
T1CON=0x8B;
WriteTimer1(TMR1_VAL); // 寫入預設值
PIR1bits.TMR1IF = 0; // 初始化設定Timer1函式
RCONbits.IPEN=1;
IPR1bits.TMR1IP=0;
INTCONbits.PEIE = 1; // 開啟周邊中斷功能
INTCONbits.GIE = 1; // 開啟全域中斷控制

while (1) Sleep(); // 無窮迴圈
}

/*void Init_TMR1 (void){
/*OpenTimer1( TIMER_INT_ON & // 使用C18編譯器timer函式庫
T1_16BIT_RW & // 初始化設定Timer1
T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_OFF );*/ // 欲使用TIMER1喚醒CPU時必須關閉同步功能
// WriteTimer1(TMR1_VAL); // 寫入預設值
// PIR1bits.TMR1IF = 0;* // 清除中斷旗標


回樓上大大,我試出來了,可以用像組語的寫法,我又改了一個方式就是把它下面副程式,直接搬到了主程式,但它會停在這句WriteTimer1(TMR1_VAL);我想opertimer1那用組語的寫法ok,但writetimer1這句如果不是放在下面,想直接放在主程式,我觀念那錯了,或是語法錯了!

發表於: 2009/11/8 20:28
頂部


Re: 計時器/計數器問題
資深會員
資深會員


謝謝各位,這段給了我位新手很多經驗,和啟發,我之後又式了如果一定要用0x18的話我加了兩行
RCONbits.IPEN=1
IPR1bits.TMR1IP=0
這樣就可以了!
但是在這個程式我又試了一個東西,

OpenTimer1( TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_EXT &T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_ON );


這段我想改成T1CON=0xXX
就是像組語的寫法一樣,結果答案不行,翻了很多例子,發現在c方面的寫法都會寫成上面的型態,而不能像組語那樣子,請問這個觀念是對的嗎?

發表於: 2009/11/8 13:07
頂部


Re: 計時器/計數器問題
資深會員
資深會員


但我的問題是上面那個範例啊他的RCONbits.IPEN=0
題目原本是到0x18,所以我程式run了,燈沒跑!
但只改了0x08後就可以跑了!我在想他並沒有設高優先中斷才對不是嗎?

發表於: 2009/11/5 18:10
頂部


Re: 計時器/計數器問題
資深會員
資深會員


我玩到他的計時/計數那個單元時!它的程式
//* Ex9_1_TMR1_INT.c
//* 設計一個0.5秒讓 PORTD 的 LED 所顯示的二進位數字自動加一的程式

#include <p18f4520.h> //納入微控制器定義檔
#include <timers.h> //納入計時器函式庫定義檔

// 結構位元定義
#pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF

#define TMR1_VAL 65536-16384 // Timer1 設定為 500ms 中斷一次

//宣告函式原型
void Init_TMR1(void);
void timer1_isr (void);

//宣告並安排中斷執行程式記憶體位置
#pragma code low_vector=0x18=>0x08
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interruptlow timer1_isr

void timer1_isr (void)
{
PIR1bits.TMR1IF = 0; // 清除中斷旗標
WriteTimer1(TMR1_VAL); // 當將計數器觸發次數歸零寫入預設值
PORTD++; // 遞加PORTD
}

void main (void) {

PORTD = 0x00; // 將PORTD清除關閉LED
TRISD = 0; // 將TRISD設為0,PORTD設定為輸出

Init_TMR1(); // 初始化設定Timer1函式

INTCONbits.PEIE = 1; // 開啟周邊中斷功能
INTCONbits.GIE = 1; // 開啟全域中斷控制

while (1); // 無窮迴圈
}

void Init_TMR1 (void){

OpenTimer1( TIMER_INT_ON & // 使用C18編譯器timer函式庫
T1_16BIT_RW & // 初始化設定Timer1
T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_ON );
WriteTimer1(TMR1_VAL); // 寫入預設值
PIR1bits.TMR1IF = 0; // 清除中斷旗標

}

雖然沒有人直接回答我的問題,但我在中斷向量那改成0x08後,程式就可以run了,請問是書錯了嗎?還有請問各位0x18和0x08到底是在各什麼樣狀況下去選擇得,

發表於: 2009/11/4 14:19
頂部


Re: 計時器/計數器問題
資深會員
資深會員


板子不在手邊,不能確定,但我在build的地方,並沒錯誤,所以,表示這個程式是可以run的嗎?

發表於: 2009/10/24 11:31
頂部


Re: 計時器/計數器問題
資深會員
資深會員


恩,或許我因該,我對整體架構真的不熟,你說的debug模式要怎麼進去?我想我因該有把程式寫入,按run時,他有在run但是燈都沒反應,有用watch看portd的變化,沒變,因為那個綠色指標停在while好像中斷沒做的感覺!

tcy的部分在書上,並沒有教我怎麼算,所以像前除器,和後除器,有時他用了 ,但我也不是很清楚他是怎麼算的,不知道有人給可以簡單給我算的例子,讓我清楚一下!謝謝各位

發表於: 2009/10/23 20:57
頂部


計時器/計數器問題
資深會員
資深會員


小弟 剛學 pic也才一個月左右,有去上過教育訓練課,但我想那個課對於完全新手來說,因該只是讓你了解怎麼按而以,因為上課的內容還是太多要的,小弟我自己手邊的書,是曾老師寫的pic 18那本,雖然很多方寫的還不太清楚,但也是盡量自己摸,但書上某些地方的註解寫的太少了,難懂
我用的是pic18f4520 and app001的版子

我玩到他的計時/計數那個單元時!它的程式
//* Ex9_1_TMR1_INT.c
//* 設計一個0.5秒讓 PORTD 的 LED 所顯示的二進位數字自動加一的程式

#include <p18f4520.h> //納入微控制器定義檔
#include <timers.h> //納入計時器函式庫定義檔

// 結構位元定義
#pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF

#define TMR1_VAL 65536-16384 // Timer1 設定為 500ms 中斷一次

//宣告函式原型
void Init_TMR1(void);
void timer1_isr (void);

//宣告並安排中斷執行程式記憶體位置
#pragma code low_vector=0x18
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interruptlow timer1_isr

void timer1_isr (void)
{
PIR1bits.TMR1IF = 0; // 清除中斷旗標
WriteTimer1(TMR1_VAL); // 當將計數器觸發次數歸零寫入預設值
PORTD++; // 遞加PORTD
}

void main (void) {

PORTD = 0x00; // 將PORTD清除關閉LED
TRISD = 0; // 將TRISD設為0,PORTD設定為輸出

Init_TMR1(); // 初始化設定Timer1函式

INTCONbits.PEIE = 1; // 開啟周邊中斷功能
INTCONbits.GIE = 1; // 開啟全域中斷控制

while (1); // 無窮迴圈
}

void Init_TMR1 (void){

OpenTimer1( TIMER_INT_ON & // 使用C18編譯器timer函式庫
T1_16BIT_RW & // 初始化設定Timer1
T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_ON );
WriteTimer1(TMR1_VAL); // 寫入預設值
PIR1bits.TMR1IF = 0; // 清除中斷旗標

}

這個程我在版子上跑不起來,是我用的版子跟書指定的不同的關係嗎?

再請教大家幾個問題,delay 的語法Delay100TCYx=>為什麼時40us!怎麼算的

發表於: 2009/10/23 16:46
頂部



« 1 ... 14 15 16 (17)



:::

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... ]

教育訓練中心

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