Phần 3: Chương trình biên dịch CCS cho vi điều khiển PIC

0
760

#error

Chỉ thị #error bắt chương trình biên dịch tạo ra một lỗi tại vị trí chỉ thị này bị bắt gặp trong quá trình biên dịch file nguồn

Cú pháp:

#error text

Bạn có thể sử dụng #error bên trong một điều kiện để phát hiện một điều kiện gây ra lỗi. Ví dụ:

#define buffer_size 18
#if  BUFFER_SIZE>16
#error  Buffer size is too large
#endif

Khi chương trình biên dịch bắt gặp chỉ thị #if , nó sẽ so sánh giá trị buffer_size với 16. Do ta định nghĩa buffer_size là 18, trình biên dịch sẽ thực thi tiếp câu lệnh phía sau #if và khi đó sẽ tạo ra một lỗi có thể đọc là  “Buffer size is too large”.

 

#WARNING

Chỉ thị #WARNING bắt chương trình biên dịch tạo ra một cảnh báo tại vị trí chỉ thị này bị bắt gặp trong quá trình biên dịch file nguồn

Cú pháp: #WARNING text

text: là đoạn cảnh báo bất kỳ

Ví dụ

 

#if  BUFFER_SIZE < 32

#warning  Buffer Overflow may occur // bộ đệm có thể tràn

#endif

 

#PRAGMA

Chỉ thị này được sử dụng để duy trì khả năng tương thích giữa các trình biên dịch C. Trình biên dịch này sẽchấp nhận chỉ thị này trước bất kỳ lệnh tiền xử lý khác..Trình biên dịch CCS hỗ trợ chỉ thị #pragma nhưng là một tùy chọn. Do vậy hai lệnh sau là như nhau đối với trình biên dịch CCS

#pragma device PIC16f877

#device PIC 6F877

 

#inline

Báo cho chương trình biên dịch biết hàm đi sau chỉ thị #inline sẽ thực thi INLINE.Tức là hàm này sẽ được sao chép và đặt tại những vị trí mà hàm được gọi. Việc làm này làm cho chương trình sau biên dịch dài hơn, nhưng chương trình thực thi nhanh hơn. Do vậy khi tốc độ hoặc không gian lưu trữ stack có hạn, thì chỉ thị này rất có ích. Nếu không có chỉ thị này chương trình biên dịch sẽ quyết định sử dụng INLINE tốt nhất trong những trường hợp nào.

Cú pháp:

#inline

void abd()

{

.

.

.

}

ví dụ:

#inline

swapbyte(int &a, int &b) {

   int t;

   t=a;

   a=b;

   b=t;

}

 

#separate

chỉ thị #separate hoạt động đối ngược với chỉ thị #inline .Chỉ thị này báo cho chương trình biên dịch hàm đặt sau chỉ thị này thực thi như là SEPARATELY. Nó được sử dụng để ngăn chặn chương trình biên dịch tự động thực thi hàm như là INLINE. Chỉ thị này làm cho chương trình biên dịch ra đoạn code với kích thước nhỏ hơn (giúp tiết kiệm ROM) nhưng tốn nhiều không gian stack hơn.

Ví dụ:

#separate

swapbyte (int *a, int *b) {

int t;

   t=*a;

   *a=*b;

   *b=t;

}

 

Leave a Reply