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 27-06-2012, 02:01 AM   #1
nickyshadow
Đệ tử 1 túi
 
nickyshadow's Avatar
 
Tham gia ngày: Jun 2012
Bài gửi: 16
:
Giúp đỡ newbie về led blinking trên Pic 18f8520

Xin chào các anh chị, em cũng đã đọc các bài tutorial của các anh chị trên picvietnam cũng như ở những nguồn khác, tất cả những gì em đã làm để không phải đăng một topic em cũng đã làm như đọc datasheet của Pic 18f8520, đọc lý thuyết về vi điều khiển, xem project mẫu,...blah blah blah.
Em là sinh viên ko phải chuyên ngành kĩ thuật, vì lý do cá nhân nên em có tự học 8051 và h em tiếp tục chuyển qua pic, nói ra không phải em khoe nhưng 8051 em có thể viết đc những chương trình cơ bản như LCD 4 bit, quang báo(bằng ngôn ngữ C thôi), và hiểu sơ lược về cách sử dụng vi điều khiển. Cũng lại một lần nữa vì lý do cá nhân nên em phải chuyển qua học PIC, em có trong tay bộ kit BigPic4 của Mikroelektronika với con pic18f8520, nạp chương trình bằng usb, em có chương trình nạp đi theo kit luôn, vấn đề là em có tham khảo code mẫu của project đơn giản nhất là led blinking của các nguồn và em code vào và build ra file hex nạp vào thì không chạy
code của em đây ah, có gì sai sót mong các anh chị chỉ em, hoặc là chỉ em một hướng đi rõ ràng trong việc học cái gì ở con pic em có, tại vì em chỉ có cái kit và con pic đó thôi. Code của em đây, thực sự em cũng mò mò chứ chưa hiểu hết

//Project Ledblinking em viết trong CCS
#include <18F8520.H> //con pic em đang dùng
#ifdef __pch__ //em nghe nói cái này là dành cho dòng pic 18 chứ em cũng không hiểu
#endif
#use delay (clock=10000000) //cái này để sử dụng hàm delay
void main()
{
set_tris_b(0x00); //thiết lập port xuất là b

while(1) //lặp vô hạn
{
output_b(0x0f); //cho port b =0x0f
Delay_ms(1000);//delay 1s
output_b(0xf0); //port b=0xf0
Delay_ms(1000);

}// cuối cùng là code này em build ra và nạp thì không chạy, ccs báo là rom ram 0%
nickyshadow vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-06-2012, 09:20 PM   #2
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi nickyshadow View Post
Xin chào các anh chị, em cũng đã đọc các bài tutorial của các anh chị trên picvietnam cũng như ở những nguồn khác, tất cả những gì em đã làm để không phải đăng một topic em cũng đã làm như đọc datasheet của Pic 18f8520, đọc lý thuyết về vi điều khiển, xem project mẫu,...blah blah blah.
Em là sinh viên ko phải chuyên ngành kĩ thuật, vì lý do cá nhân nên em có tự học 8051 và h em tiếp tục chuyển qua pic, nói ra không phải em khoe nhưng 8051 em có thể viết đc những chương trình cơ bản như LCD 4 bit, quang báo(bằng ngôn ngữ C thôi), và hiểu sơ lược về cách sử dụng vi điều khiển. Cũng lại một lần nữa vì lý do cá nhân nên em phải chuyển qua học PIC, em có trong tay bộ kit BigPic4 của Mikroelektronika với con pic18f8520, nạp chương trình bằng usb, em có chương trình nạp đi theo kit luôn, vấn đề là em có tham khảo code mẫu của project đơn giản nhất là led blinking của các nguồn và em code vào và build ra file hex nạp vào thì không chạy
code của em đây ah, có gì sai sót mong các anh chị chỉ em, hoặc là chỉ em một hướng đi rõ ràng trong việc học cái gì ở con pic em có, tại vì em chỉ có cái kit và con pic đó thôi. Code của em đây, thực sự em cũng mò mò chứ chưa hiểu hết

//Project Ledblinking em viết trong CCS
#include <18F8520.H> //con pic em đang dùng
#ifdef __pch__ //em nghe nói cái này là dành cho dòng pic 18 chứ em cũng không hiểu
#endif
#use delay (clock=10000000) //cái này để sử dụng hàm delay
void main()
{
set_tris_b(0x00); //thiết lập port xuất là b

while(1) //lặp vô hạn
{
output_b(0x0f); //cho port b =0x0f
Delay_ms(1000);//delay 1s
output_b(0xf0); //port b=0xf0
Delay_ms(1000);

}// cuối cùng là code này em build ra và nạp thì không chạy, ccs báo là rom ram 0%
*****************************************8
#include <18f8520.h>
# fuses NOWDT, Hs, NOPROTECT, NOLVP, PUT//cấu hình cho pic thì mới chạy được
#use delay (clock=10000000) //cái này để sử dụng hàm delay
void main()
{
set_tris_b(0x00); //thiết lập port xuất là b
while(1) //lặp vô hạn
{
output_b(0x0f); //cho port b =0x0f
Delay_ms(1000);//delay 1s
output_b(0xf0); //port b=0xf0
Delay_ms(1000);
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-06-2012, 05:49 PM   #3
nickyshadow
Đệ tử 1 túi
 
nickyshadow's Avatar
 
Tham gia ngày: Jun 2012
Bài gửi: 16
:
Cảm ơn bạn tdm nhiều lắm, code bạn sửa cho mình thì chạy rồi, nhưng mình có thêm một thắc mắc là trong một tài liệu hướng dẫn dùng ccs c tiếng việt có hướng dẫn là dùng
#use fast_io(port) để thiết lập cổng vào ra, nhưng bạn sửa cho mình thì không đả động đến, vậy fast_io(port) để làm gì
Thứ 2 là mình muốn viết hàm lcddata, sử dụng lệnh output_, vậy mình sẽ phải set_tris trước hàm lcddata, nhưng khi mình để set_tris ngoài hàm main thì build không được, vậy mình phải làm sao để có thể viết hàm?
nickyshadow vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-06-2012, 10:15 PM   #4
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi nickyshadow View Post
Cảm ơn bạn tdm nhiều lắm, code bạn sửa cho mình thì chạy rồi, nhưng mình có thêm một thắc mắc là trong một tài liệu hướng dẫn dùng ccs c tiếng việt có hướng dẫn là dùng
#use fast_io(port) để thiết lập cổng vào ra, nhưng bạn sửa cho mình thì không đả động đến, vậy fast_io(port) để làm gì
Thứ 2 là mình muốn viết hàm lcddata, sử dụng lệnh output_, vậy mình sẽ phải set_tris trước hàm lcddata, nhưng khi mình để set_tris ngoài hàm main thì build không được, vậy mình phải làm sao để có thể viết hàm?
gửi code lên đây.
Hình Kèm Theo
File Type: jpg use_fast_i0.jpg (133.6 KB, 1 lần tải)
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.

thay đổi nội dung bởi: tdm, 29-06-2012 lúc 10:29 PM.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-06-2012, 05:42 PM   #5
nickyshadow
Đệ tử 1 túi
 
nickyshadow's Avatar
 
Tham gia ngày: Jun 2012
Bài gửi: 16
:
/*ý của mình hỏi chỉ là làm sao để viết function mà dùng được các hàm xuất nhập port thôi bạn ah*/

#include <18f8520.h>
# fuses NOWDT, Hs, NOPROTECT, NOLVP, PUT/?u+o+.c
#use delay (clock=10000000)
#use fast_io(C)
#use fast_io(D)
set_tris_c(0x00);
set_tris_d(0x00);
void ledblinking()
{
output_c(0x00);
output_d(0xff);
delay_ms(1000);
output_c(0xff);
output_d(0x00);
delay_ms(1000);
}

void main()
{

while(1) //la(.p vô ha.n
{
ledblinking;
}
}
nickyshadow vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-07-2012, 09:58 AM   #6
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi nickyshadow View Post
/*ý của mình hỏi chỉ là làm sao để viết function mà dùng được các hàm xuất nhập port thôi bạn ah*/

#include <18f8520.h>
# fuses NOWDT, Hs, NOPROTECT, NOLVP, PUT/?u+o+.c
#use delay (clock=10000000)
#use fast_io(C)
#use fast_io(D)
set_tris_c(0x00);
set_tris_d(0x00);
void ledblinking()
{
output_c(0x00);
output_d(0xff);
delay_ms(1000);
output_c(0xff);
output_d(0x00);
delay_ms(1000);
}

void main()
{

while(1) //la(.p vô ha.n
{
ledblinking;//cú pháp gọi hàm như thế này là sai
}
}
code:
Code:
#include <18f8520.h>
# fuses NOWDT, Hs, NOPROTECT, NOLVP, PUT//?u+o+.c
#use delay (clock=10000000)
#use fast_io(C)
#use fast_io(D)
void ledblinking()
{
output_c(0x00);
output_d(0xff);
delay_ms(1000);
output_c(0xff);
output_d(0x00);
delay_ms(1000);
}

void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
while(1) //la(.p vô ha.n
{
ledblinking();
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm 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:41 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