View Single Post
Old 10-08-2008, 12:44 AM   #1
lcd_amptech
Đệ tử 2 túi
 
lcd_amptech's Avatar
 
Tham gia ngày: Feb 2008
Bài gửi: 35
:
Angry Có phải do lỗi trình biên dịch???

Xin chào cả nhà!
Em xài MPLAD C30 cho con dsPIC33FJ32MC202 và có một lỗi sau, không biết là do trình biên dịch hay do MCU mà nó không chạy đúng hay chương trình em viết có sai gì không. Mong các bác chỉ giáo.

Đoạn chương trình như sau:

Code:
#include <p33FJ32MC202.h>
//su dung thach anh ngoai 8MHz
_FOSCSEL(FNOSC_PRIPLL);
_FOSC(POSCMD_XT);
_FWDT(FWDTEN_OFF & WINDIS_OFF);
void delay_ms(unsigned int n);
#define a PORTBbits.RB5
#define b PORTBbits.RB6
#define c PORTBbits.RB7
#define d PORTBbits.RB12
#define e PORTBbits.RB13

//-----------------------------------
int main (void)
{
	TRISB=0;
	while(1)
	{
		a=0;
		b=0;
		c=0;
		d=0;
		e=0;
		delay_ms(500);
		a=1;
		b=1;
		c=1;
		d=1;
		e=1;		
		delay_ms(500);
	}
	return 0;

}

void delay_ms(unsigned int n)
{
	unsigned int n1;
	while (n!=0)
	{
		n1=12000;
		while(n1!=0)
		{
			n1--;
		}
		n--;
	}
	
}
dịch đoạn chương trình trên, nạp vào IC thì chỉ có a,c,e dao động còn b và d đứng yên.
Em thử đổi lại hàm main trên như sau:
Code:
int main (void)
{
	TRISB=0;
	while(1)
	{
		b=0;
		a=0;
		c=0;
		d=0;
		e=0;
		delay_ms(500);
		b=1;
		a=1;
		c=1;
		d=1;
		e=1;		
		delay_ms(500);
	}
	return 0;

}
 lúc này b,c,e dao động còn a,d đứng yên. Em tiếp tục lại đổi:
int main (void)
{
	TRISB=0;
	while(1)
	{
		a=b=c=d=e=0;
		delay_ms(500);
		a=b=c=d=e=1;
		delay_ms(500);
	}
	return 0;

}
lúc này tất cả đều dao động.
Mong các bác cứu em. Thansk!!!

thay đổi nội dung bởi: namqn, 10-08-2008 lúc 01:00 AM.
lcd_amptech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn