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 03-10-2012, 11:14 PM   #1
shoknshok
Nhập môn đệ tử
 
Tham gia ngày: Sep 2012
Bài gửi: 5
:
Cần Giúp đỡ về Pic 16f887

Tình hình là em đang làm mạch Led ma trận dùng Pic 16f887, không hiểu sao mắc mạch như thế này mà chạy một hồi lại bị lỗi.
Em đang xài Mikro C ạ! Mong các bác giúp đỡ!
P/s: các bác tải về sửa lại đường dẫn tới file hex để mạch nó nhận code nha!
File Kèm Theo
File Type: rar HELP.rar (144.7 KB, 52 lần tải)
shoknshok vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-10-2012, 11:41 AM   #2
shoknshok
Nhập môn đệ tử
 
Tham gia ngày: Sep 2012
Bài gửi: 5
:
Sao ko ai biết hết vậy??? (
shoknshok vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-10-2012, 03:59 PM   #3
handsometran
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 35
:
Trích:
Nguyên văn bởi shoknshok View Post
Sao ko ai biết hết vậy??? (
Chương trình của bạn sao lạ quá, mảng hinh[]-> không có kích thước.
Muốn P
//======================================//
unsigned long t, i;
unsigned int hinh[] =
{
0b11111111,
0b10010000,
0b10010000,
0b11110000,
};
void main()
{
ANSEL = 0; // CAU HINH NGO RA DIGITAL
ANSELH = 0;
trisc=0x00; //portc là output
portc=0; // xoá portc
trisb = 0xff;
trisd = 0;
portd=0;
LOOP: i = 0;
for(t = 1; t != 16 ; t = t * 2 )//????? vòng lặp này lạ quá chĩ thấy for(int i =0; i<10; i++)-> vòng lặp này thực hiện 10 lần.
{
portc = hinh[i];
portd = t;
i = i + 1;
delay_ms(100);
portc = portd = 0;
}
goto LOOP;
}

Bạn xem lại ngôn ngữ C có đúng không, và datasheet nữa.
handsometran vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-10-2012, 06:31 PM   #4
shoknshok
Nhập môn đệ tử
 
Tham gia ngày: Sep 2012
Bài gửi: 5
:
Em đang xài mikro C bác ạ!
Vòng lặp đó ý em muốn nó quét mã hình lên ma trận LED. Portc điều khiển hàng, portd điều khiển cột. Biến t nhảy từ 1 2 4 8 tương ứng với 4 pin đầu của portd, khi quét đến hết chân 4 thì t =16 => thì bắt đầu quét lại.
Mảng hình em tính còn nhiều nữa nên chưa kích thước, để khơi khơi luôn
Em mới chỉ học qua nhập môn lập trình = C++ trên trường dạy nên áp dụng qua đây thôi.
Đang cố tìm hiểu mà sao khó quá bác ạ (
Mong bác giúp em, thanks bác nhiều
shoknshok vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-10-2012, 11:25 AM   #5
shoknshok
Nhập môn đệ tử
 
Tham gia ngày: Sep 2012
Bài gửi: 5
:
Một tuần trôi qua mà vẫn không có ai giúp em hết?
shoknshok vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2012, 12:27 AM   #6
handsometran
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 35
:
Trích:
Nguyên văn bởi shoknshok View Post
Em đang xài mikro C bác ạ!
Vòng lặp đó ý em muốn nó quét mã hình lên ma trận LED. Portc điều khiển hàng, portd điều khiển cột. Biến t nhảy từ 1 2 4 8 tương ứng với 4 pin đầu của portd, khi quét đến hết chân 4 thì t =16 => thì bắt đầu quét lại.
Mảng hình em tính còn nhiều nữa nên chưa kích thước, để khơi khơi luôn
Em mới chỉ học qua nhập môn lập trình = C++ trên trường dạy nên áp dụng qua đây thôi.
Đang cố tìm hiểu mà sao khó quá bác ạ (
Mong bác giúp em, thanks bác nhiều
Ngôn ngữ cho VDK là C chứ không phải C++ bạn ah.
handsometran vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2012, 02:54 AM   #7
youaremylife
Đệ tử 2 túi
 
Tham gia ngày: Nov 2008
Bài gửi: 26
:
Send a message via AIM to youaremylife Send a message via Yahoo to youaremylife
cái mạch mở bằng cái gì mà sao mình mở không được vậy
youaremylife vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2012, 02:57 AM   #8
youaremylife
Đệ tử 2 túi
 
Tham gia ngày: Nov 2008
Bài gửi: 26
:
Send a message via AIM to youaremylife Send a message via Yahoo to youaremylife
Trích:
Nguyên văn bởi handsometran View Post
Chương trình của bạn sao lạ quá, mảng hinh[]-> không có kích thước.
Muốn P
//======================================//
unsigned long t, i;
unsigned int hinh[] =
{
0b11111111,
0b10010000,
0b10010000,
0b11110000,
};
void main()
{
ANSEL = 0; // CAU HINH NGO RA DIGITAL
ANSELH = 0;
trisc=0x00; //portc là output
portc=0; // xoá portc
trisb = 0xff;
trisd = 0;
portd=0;
LOOP: i = 0;
for(t = 1; t != 16 ; t = t * 2 )//????? vòng lặp này lạ quá chĩ thấy for(int i =0; i<10; i++)-> vòng lặp này thực hiện 10 lần.
{
portc = hinh[i];
portd = t;
i = i + 1;
delay_ms(100);
portc = portd = 0;
}
goto LOOP;
}

Bạn xem lại ngôn ngữ C có đúng không, và datasheet nữa.
Thứ nhất mảng hằng số thế này thì không cần phải ghi kích thước tự trình biên dịch nó xử lý.
Thứ hai for(t = 1; t != 16 ; t = t * 2 ) chẳng có gì là sai cả. cái này bác nên xem lại ý nghĩa các trường trong lệnh for. trường thứ hai chỉ là điều kiện có thể (t =1; i != 100;c++) cũng chẳng có gì sai.
youaremylife vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-11-2012, 10:36 AM   #9
lab.cdt
Đệ tử 1 túi
 
Tham gia ngày: May 2012
Bài gửi: 19
:
Nhờ giúp đỡ về thuật ngữ trong PIC

Tớ đọc tài liệu trên mạng thấy họ có sử dụng thuật ngữ là "kích âm" và "kích dương". Tớ thắc mắc không biết "kích âm" có phải là tích cực mức thấp không và "kích dương" có phải là tích cực mức cao không? Nhờ các cậu giải thích hộ tớ..Thanks...
lab.cdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-11-2012, 03:06 PM   #10
handsometran
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 35
:
Trích:
Nguyên văn bởi lab.cdt View Post
Tớ đọc tài liệu trên mạng thấy họ có sử dụng thuật ngữ là "kích âm" và "kích dương". Tớ thắc mắc không biết "kích âm" có phải là tích cực mức thấp không và "kích dương" có phải là tích cực mức cao không? Nhờ các cậu giải thích hộ tớ..Thanks...
Khác nhau chứ bạn, kích dương tức là >0V, kích âm là <0V. Khi dùng trans hay mosfet có loại thuận, loại nghịch tương ứng với xung dương và âm để nó hoạt động.
handsometran vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-11-2012, 03:47 PM   #11
handsometran
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 35
:
Trích:
Nguyên văn bởi youaremylife View Post
Thứ nhất mảng hằng số thế này thì không cần phải ghi kích thước tự trình biên dịch nó xử lý.
Thứ hai for(t = 1; t != 16 ; t = t * 2 ) chẳng có gì là sai cả. cái này bác nên xem lại ý nghĩa các trường trong lệnh for. trường thứ hai chỉ là điều kiện có thể (t =1; i != 100;c++) cũng chẳng có gì sai.
Vì mới tìm hiểu C có hơn 1 tháng nên chưa hiểu lắm. Bạn có biết cách nhóm bit bằng struct và union không. Đọc tài liệu nhiều nhưng do chỉ vắn tắt quá nên không nắm hết.
handsometran 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à 12:25 AM.


Đượ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