Mình mới tập làm quen với C30 để lập trình cho DSPIC6010, nhưng sao mình thử dủng những VD đơn giản của Microchip như là dùng interrupt_timer1 để làm led chớp tắt, hoặc những VD khác mà ko chương trình nào chạy hết, mình nghĩ là do cách thiết đặt chương trìnhh biên dịch, nhưng đã kiễm tra nhiều lần mà ko tìm ra lỗi, mong những người đi trước có nhiều kinh nghiệm hướng dẫn lại dùm
VD chương trình mẫu của Microchip:
Code:
#define __dsPIC30F6010__
#include <p30f6010.h>
#include<timer.h>
unsigned int timer_value;
void _ _attribute_ _((_ _interrupt_ _)) _T1Interrupt(void)
{
PORTDbits.RD1 = 1; /* turn off LED on RD1 */
WriteTimer1(0);
IFS0bits.T1IF = 0; /* Clear Timer interrupt flag */
}
int main(void)
{
unsigned int match_value; TRISDbits.TRISD1 = 0;
PORTDbits.RD1 = 1; /* turn off LED on RD1 */ /* Enable Timer1 Interrupt and Priority to "1" */
ConfigIntTimer1(T1_INT_PRIOR_1 & T1_INT_ON);
WriteTimer1(0);
match_value = 0xFFF;
OpenTimer1(T1_ON & T1_GATE_OFF & T1_IDLE_STOP & T1_PS_1_1 & T1_SYNC_EXT_OFF & T1_SOURCE_INT, match_value);
/* Wait till the timer matches with the period value */
while(1)
{
timer_value = ReadTimer1();
if(timer_value >= 0x7FF)
{
PORTDbits.RD1 = 0; /* turn on LED on RD1 */
}
}
CloseTimer1();
}