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 12-11-2010, 03:16 PM   #1
caovanhuong
Đệ tử 2 túi
 
caovanhuong's Avatar
 
Tham gia ngày: Jul 2009
Bài gửi: 40
:
mấy bác cho em hỏi là nếu mình tạo chương trình con là như thế này
void comwrt(void)
{
RS=1;
RW=0;
E=1;
E=0;
delay_ms(1);
}
thì khi gọi chương trình con thì phải ghi là
lcd_data=0x06;
comwrt();
nhưng khi em chuyển lại là
void comwrt(lcd_data)
{
RS=1;
RW=0;
E=1;
E=0;
delay_ms(1);
}
và gọi là comwrt(0x0c);
thì chương trình lại không chạy, mấy anh chĩ giùm em làm sao để viết gọp lại như hàng dưới được không
comwrt(0x0c);
cho em hỏi thêm là hàm này dùng làm gì ạ
#separate
__________________
Cao Văn Hưởng
SĐT: 01672754113
Email: caovanhuong@webdien.com
Nhận thiết kế mạch điện tử, PCB (Orcad)

caovanhuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2010, 04:09 PM   #2
knd07
Nhập môn đệ tử
 
Tham gia ngày: Nov 2010
Bài gửi: 4
:
Hàm comwrt () mà bạn ghi không sử dụng bất cứ tham số nào truyền từ chương trình chính nên bạn ghi comwrt (0x06) là vô nghĩa . Bạn thử viết lại thế này xem :
void comwrt (int8 data )
{
lcd_data = data ;
RS=1;
RW=0;
E=1;
E=0;
delay_ms(1);
}
Khi đó trong chương trình chính bạn có thể gọi comwrt (0x06)

Còn #separate theo mình biết áp dụng khi function của bạn có quá nhiều hàm , dẫn tới số lượng chỉ lệnh vượt quá mức chịu được của 1 page code PIC ( hình như là 512 instructions) . Khi đó khai báo chỉ thị này sẽ tách các hàm riêng biệt ở các page code riêng biệt , làm tiết kiệm ROM hơn .

thay đổi nội dung bởi: knd07, 12-11-2010 lúc 04:46 PM.
knd07 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2010, 10:14 PM   #3
caovanhuong
Đệ tử 2 túi
 
caovanhuong's Avatar
 
Tham gia ngày: Jul 2009
Bài gửi: 40
:
Trích:
Nguyên văn bởi knd07 View Post
Hàm comwrt () mà bạn ghi không sử dụng bất cứ tham số nào truyền từ chương trình chính nên bạn ghi comwrt (0x06) là vô nghĩa . Bạn thử viết lại thế này xem :
void comwrt (int8 data )
{
lcd_data = data ;
RS=1;
RW=0;
E=1;
E=0;
delay_ms(1);
}
Khi đó trong chương trình chính bạn có thể gọi comwrt (0x06)

Còn #separate theo mình biết áp dụng khi function của bạn có quá nhiều hàm , dẫn tới số lượng chỉ lệnh vượt quá mức chịu được của 1 page code PIC ( hình như là 512 instructions) . Khi đó khai báo chỉ thị này sẽ tách các hàm riêng biệt ở các page code riêng biệt , làm tiết kiệm ROM hơn .
rất cảm ơn bạn! đã nhấn nút cảm ơn rồi nhưng vẫn muốn viết thêm bài này để cảm ơn, mình đã nghĩ là làm như thế này rồi nhưng hồi sáng này viết cấu trúc nó sai nên nó không chạy.
__________________
Cao Văn Hưởng
SĐT: 01672754113
Email: caovanhuong@webdien.com
Nhận thiết kế mạch điện tử, PCB (Orcad)

caovanhuong 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à 10:44 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