Thông báo

Collapse
No announcement yet.

Lập trình cho dsPIC như thế nào ?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Lập trình cho dsPIC như thế nào ?

    Các bác ơi, cho em hỏi lập trình cho dsPIC có khác gì so với PIC16 và PIC18 không ?

  • #2
    Có khác một chút thôi:
    Một ví dụ đơn giản cho dsPIC viết bằng HT dsPIC
    Code:
    //===============================================
    //Test dsPIC4012 and study HT dsPIC C compiler
    //Author:4MD
    //===============================================
    
    #include<dspic.h>
    __CONFIG(FOSC, HS);
    __CONFIG(FWDT, WDTEN&WDTPSA64);
    __CONFIG(FBORPOR, BOREN&PWRT64&BORV27&MCLREN);
    void delay_(void);
    //----------------------------------
    int main(){
    	TRISD	= 0x00;
    	PORTD	= 0xFF;
    	LATD	= 0xFF;
    	while(1)
    	{
    		PORTD	= 0xFF;
    		delay_();
    		PORTD	= 0x00;
    		delay_();
    		CLRWDT();
    		NOP();
    	}
    	return 0;
    }
    //---------------------------------
    void delay_(void)
    {
    	unsigned int i,j;
    	for(j=1;j<=2;j++)
    	{
    		for(i=0;i<65535;i++)
    		{
    			NOP();
    			NOP();
    			CLRWDT();
    		}
    	}
    }
    //=============================================

    Comment


    • #3
      Cảm ơn bác, Bác cho em một ví dụ cụ thể xem sao ? Dùng ngắt trong C30 thế nào bác ?

      Comment


      • #4
        Chương trình này mình viết cho dsPIC6014, Bạn chỉ nên tham khảo cách viết, vì mình cũng chưa có con dsPIC6014 để test thử. Viết bằng C30 thì bạn cần phải INCLUDE các file liên kết, header file của con bạn dùng vào...
        Code:
        //=============================================================
        //Test dsPIC and study Microchip MPLAB C30
        //Author: 4MD
        //=============================================================
        #define __p30f6014__
        #include<p30f6014.h>
        void init(void);
        void delay_(void);
        //inline int inc(int *a);
        //-------------------------------------------------------interrupt
        void __attribute__((__interrupt__)) _T2Interrupt(void)
        	{
        		IFS0bits.T2IF	= 0;
        		__asm("NOP");
        	}
        void __attribute__((__interrupt__)) _INT1Interrupt(void)
        	{
        		IFS1bits.INT1IF	= 0;
        		__asm("NOP");
        	}
        void __attribute__((__interrupt__)) _INT2Interrupt(void)
        	{
        		IFS1bits.INT2IF	= 0;
        		__asm("NOP");
        	}
        void __attribute__((__interrupt__)) _INT3Interrupt(void)
        	{
        		IFS2bits.INT3IF	= 0;
        		__asm("NOP");
        	}
        void __attribute__((__interrupt__)) _INT4Interrupt(void)
        	{
        		IFS2bits.INT4IF = 0;
        		__asm("NOP");
        	}
        //-------------------------------------------------------Var
        int *temp;
        //-------------------------------------------------------MAIN
        int main(){
        typedef struct tagACC {
        	unsigned int L;
        	unsigned int H;
        	unsigned char U;
        }ACCAU;
        	init();
        	PR2	= 8192;				/*Timer 2 period*/
        	SRbits.IPL	= 3;		/*CPU interrupt priority level*/
        	TRISD		= 0;
        	inc(temp);
        	while(1)
        	{
        		asm("NOP");	
        		_RD0			= 1;
        		PORTDbits.RD1	= 1;
        		delay_();
        		PORTDbits.RD0	= 0;
        		_RD1			= 0;
        		delay_();
        	}	
        	return 0;
        }
        //-------------------------------------------------------init
        void init(void)
        {
        	//-------------------------------init for Interrupt
        	IEC0bits.T2IE	= 1;
        	IEC1bits.INT1IE	= 1;
        	IEC1bits.INT2IE	= 1;
        	IEC2bits.INT3IE	= 1;
        	IEC2bits.INT4IE	= 1;
        	//-------------------------------init for TIMER2
        	T2CONbits.TON 	= 1;
        	T2CONbits.TCKPS	= 3;	
        	asm("NOP");
        	asm("NOP");
        }
        //-------------------------------------------------------inline
        inline int inc(int *a)
        {
        	(*a)++;
        }
        //-------------------------------------------------------delay
        void delay_(void)
        {
        	unsigned int i;
        	for(i=0;i<65535;i++)
        	{
        		__asm("NOP");
        	}
        }
        //============================THE END===========================
        Last edited by 4MD; 26-11-2005, 19:09.

        Comment


        • #5
          Anh có thể cho em 1 ví dụ về RS232,cách khai báo tốc độ truyền,dữ liệu và cách truyền,nhận dùng dsPic.

          Comment


          • #6
            Nó cũng tương tự như PIC16/18 thôi bạn ạ. Bạn tham khảo các appnote về dsPIC,đặc biệt là các project mà microchip cung cấp sẵn, nó cả sch, tài liệu(pdf),code đi kèm= C30.

            Comment


            • #7
              các bác ơi có thể cho em code mẫu lập trình dspic6014 được ko ạ, trên c30 hay hi tech gì cũng được, em cảm ơn

              Comment


              • #8
                cho em hỏi dspic4013 thi sao anh

                Comment


                • #9
                  em cũng đang tìm hiểu về dspic30F4013. có anh chị nào đã làm qua giúp e với, cụ thể là các tập lệnh giao tiếp với nó, trình biên dịch dùng CCS hay Mikro C có được không?
                  xin cảm ơn các anh chị !
                  Thân chào !

                  Comment

                  Về tác giả

                  Collapse

                  TrungDung Tìm hiểu thêm về TrungDung

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X