PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
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
Old 10-08-2008, 01:02 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Vấn đề này đã được đề cập trên diễn đàn, khi xuất dữ liệu, bạn không nên tác động vào thanh ghi PORTx (hay các bit của nó), mà nên tác động vào thanh ghi LATx (và các bit của nó).

Vấn đề của bạn sẽ được giải quyết bằng việc đơn giản thay các PORT thành LAT trong các #define của bạn.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2008, 09:43 AM   #3
lcd_amptech
Đệ tử 2 túi
 
lcd_amptech's Avatar
 
Tham gia ngày: Feb 2008
Bài gửi: 35
:
Em đã sửa các define theo chỉ dẫn của bác và đã chạy được.
Cảm ơn bác namqn nhiều.
lcd_amptech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 02:13 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam