tonghua19
03-07-2009, 07:11 PM
Chào các anh
Các anh có thể tìm giúp em lỗi của chương trình sau không:
Chuơng trình này em cũng chỉ chép từ một phần trong chuơng trình của một ai đó. Nhưng nó không chạy.
Các anh cho em hỏi thêm là tại sao trong Mplab không có lựa chọn loại chip, nguồn xung FRC, XT, giá trị thạch anh,... vậy. Có phải chỉ cần cái marco khai báo đầu chuơng trình là đủ hay không. Các đoạn chuơng trinh interrupt bắt đầu như thế nào vậy. Ví du trong bài này của em là void _ISR_PSV_T1Interrupt(); ngoài cách viết interrupt này còn nhiều cách viết khác nữa, chúng khác nhau cái gi vậy
#include <p30f4011.h>
_FOSC(CSW_FSCM_OFF & FRC_PLL4);
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);
int i,j;
void int_timer1()
{
TMR1 = 0;
PR1 = 0x0A12;
_T1IF = 0;
T1CON = 0x8030;
_T1IE = 1;
}
void _ISR_PSV_T1Interrupt()
{
_T1IF = 0;
LATB = 0;
}
int main()
{
ADPCFG=0xffff;
TRISB = 0;
LATB = 0xFFFF;
/* while(1)
{
for(i=0; i<5000; i++)
for(j=0; j<1474; j++);
LATB =~ LATB;
}*/
int_timer1();
while(1)
{
}
return 0;
}
Các anh có thể tìm giúp em lỗi của chương trình sau không:
Chuơng trình này em cũng chỉ chép từ một phần trong chuơng trình của một ai đó. Nhưng nó không chạy.
Các anh cho em hỏi thêm là tại sao trong Mplab không có lựa chọn loại chip, nguồn xung FRC, XT, giá trị thạch anh,... vậy. Có phải chỉ cần cái marco khai báo đầu chuơng trình là đủ hay không. Các đoạn chuơng trinh interrupt bắt đầu như thế nào vậy. Ví du trong bài này của em là void _ISR_PSV_T1Interrupt(); ngoài cách viết interrupt này còn nhiều cách viết khác nữa, chúng khác nhau cái gi vậy
#include <p30f4011.h>
_FOSC(CSW_FSCM_OFF & FRC_PLL4);
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);
int i,j;
void int_timer1()
{
TMR1 = 0;
PR1 = 0x0A12;
_T1IF = 0;
T1CON = 0x8030;
_T1IE = 1;
}
void _ISR_PSV_T1Interrupt()
{
_T1IF = 0;
LATB = 0;
}
int main()
{
ADPCFG=0xffff;
TRISB = 0;
LATB = 0xFFFF;
/* while(1)
{
for(i=0; i<5000; i++)
for(j=0; j<1474; j++);
LATB =~ LATB;
}*/
int_timer1();
while(1)
{
}
return 0;
}