PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 09-08-2008, 06:13 PM   #1
dark_electron
Đệ tử 2 túi
 
Tham gia ngày: Feb 2008
Bài gửi: 27
:
Mới học CCS C nhờ giúp đỡ

Hi các bác,
Em mới chuyển qua C để viết cho nhanh nhưng đọc manual của CCS thấy có vài chỗ thắc mắc như sau: chỗ đặt biến trong CCS, có 2 kiểu đặt là #define và #byte. Vậy cho em hỏi khi nào thì dùng #define và khi nào thì nên dùng #byte? Em thấy đa số trong file .h bản thân CCS nó hay dùng #define còn trong file def_877a.h các bác lại dùng #byte.
Nhờ các bác giải đáp giúp, cám ơn các bác nhiều.
dark_electron vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2008, 12:45 AM   #2
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi dark_electron View Post
Hi các bác,
Em mới chuyển qua C để viết cho nhanh nhưng đọc manual của CCS thấy có vài chỗ thắc mắc như sau: chỗ đặt biến trong CCS, có 2 kiểu đặt là #define và #byte. Vậy cho em hỏi khi nào thì dùng #define và khi nào thì nên dùng #byte? Em thấy đa số trong file .h bản thân CCS nó hay dùng #define còn trong file def_877a.h các bác lại dùng #byte.
Nhờ các bác giải đáp giúp, cám ơn các bác nhiều.
#define là định nghĩa 1 macro, ví dụ:
PHP Code:
#define IN_LOW !input(PIN_A0)
//lúc sử dụng nó trong chương trình

if(IN_LOWoutput_high(PIN_A1);
//có nghĩa trình dịch sẽ thay thế IN_LOW = !input(PIN_A0) trong quá trình dịhc 
còn chỉ thị #byte là đặt địa chỉ, ví dụ PORTB có địa chỉ là 0x06, và TRISB có địa chỉ 0x86 với PIC16 thì thay vì mình viết trong CCS C
PHP Code:
ouput_b(0xAA); //có nghĩa là xuất ra PORTB giá trị 0xAA

//tương đương với
#byte  CONG_B               0x06
#byte  DKXUAT_NHAP_B       0x86

DKXUAT_NHAP_B 0x00;
CONG_B 0xAA
phamminhtuan 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:11 AM   #3
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
Trích:
Nguyên văn bởi phamminhtuan View Post
#define là định nghĩa 1 macro, ví dụ:
...
#define là một directive (chỉ dẫn) dùng để thay thế một nhóm ký tự (bất kể đó là biểu thức hay phát biểu) bằng một tên gọi mang ý nghĩa hơn đối với chương trình. Trước khi biên dịch chương trình, trình biên dịch chỉ thay thế các tên gọi này bằng nhóm ký tự mà nó đại diện, rồi mới phân tích cú pháp trong bước biên dịch.

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, 11:16 AM   #4
dark_electron
Đệ tử 2 túi
 
Tham gia ngày: Feb 2008
Bài gửi: 27
:
Trích:
Nguyên văn bởi namqn View Post
#define là một directive (chỉ dẫn) dùng để thay thế một nhóm ký tự (bất kể đó là biểu thức hay phát biểu) bằng một tên gọi mang ý nghĩa hơn đối với chương trình. Trước khi biên dịch chương trình, trình biên dịch chỉ thay thế các tên gọi này bằng nhóm ký tự mà nó đại diện, rồi mới phân tích cú pháp trong bước biên dịch.

Thân,
Cám ơn các bác, nhân tiện cho em hỏi directive #byte chỉ dùng để đặt địa chỉ thôi hả các bác hay còn làm mục đích gì khác hơn? Có thể dùng directive #define để thay cho directive #byte hay ko vậy? Với lại #byte có thể dùng để đặt biến hay ko? Ví dụ như thế này: #byte LED_DATA0 = 0xxx ? Thanks.
dark_electron vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2008, 02:15 PM   #5
tallht
Đệ tử 5 túi
 
tallht's Avatar
 
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
:
#BYTE

--------------------------------------------------------------------------------



Syntax:
#byte id = x



Elements:
id is a valid C identifier,

x is a C variable or a constant



Purpose:
If the id is already known as a C variable then this will locate the variable at address x. In this case the variable type does not change from the original definition. If the id is not known a new C variable is created and placed at address x with the type int (8 bit)



Warning: In both cases memory at x is not exclusive to this variable. Other variables may be located at the same location. In fact when x is a variable, then id and x share the same memory location.

đây là phần help của CCS
__________________
-------------------------------------------------------------------
Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo.
Mời tham quan: https://www.facebook.com/eshop1109

Cung cấp dịch vụ order hàng từ Aliexpress
Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/
tallht vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-08-2008, 02:23 PM   #6
tallht
Đệ tử 5 túi
 
tallht's Avatar
 
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
:
#define dùng để đặt tên gợi nhớ cho 1 hàm hay 1 số mà bạn khó nhớ,hay làm cho đoạn code dễ hiểu hơn!
chẳng hạn như bạn muốn xuất led ra port b thì bạn có thể viết như sau: #define led_out portb(trong trường hợp portb đã được định nghĩa trước)
như vậy người đọc code của bạn có thể sẽ dễ hiểu hơn!
__________________
-------------------------------------------------------------------
Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo.
Mời tham quan: https://www.facebook.com/eshop1109

Cung cấp dịch vụ order hàng từ Aliexpress
Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/
tallht 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à 04:07 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