Tổng Hợp Code Và Hướng Dẫn Lập Trình Pic Bằng Ccs Để Lập Trình Pic

[globalizethis.org]

Lập trình Pic là một cách để viết cho vi điều khiển các khai báo Biến, lệnh C cơ bản, lệnh truy xuất CCS

Mua linh kiện điện tử tạiĐiện tử Nhật Tùng

Khóa học Vi điều khiển có phí

*

Mục lục

1 Giới thiệu2 Các kiểu dữ liệu lập trình Vi điều khiển2.1 Một vài ví dụ cụ thể5 Các lệnh C cơ bản lập trình Pic5.1 Lệnh if và else trong lập trình pic5.4 Lệnh vòng lặp for trong lập trình pic6 Lệnh truy xuất trong phần mềm CCS

Giới thiệu

Lý do chọn lập trình Pic trên ngôn ngữ C

Ngôn ngữ lập trình pic là một ngôn ngữ lập trình được sử dụng phổ biến, là ngôn ngữ tạo mã hiệu quả, các phần tử lập trình có cấu trúc và một tập hợp phong phú các toán tử và được sử dụng khá nhiều trong lập trình Vi điều khiển.Ngôn ngữ C một ngôn ngữ lập trình thuận tiện và hiệu quả, nhiều ứng dụng có thể được giải quyết dễ dàng hơn và hiệu quả hơn bằng ngôn ngữ C so với các ngôn ngữ chuyên biệt khác.

Bạn đang xem: Hướng dẫn lập trình pic bằng ccs

Phần hổ trợ của ngôn ngữ C

Khi lập trình bằng ngôn ngữ C thì các vấn đề phức tạp được giải quyết một cách nhanh chóng và gọn gàng, tuy nhiên không thể biết chính xác thời gian thực hiện các lệnh, mã sau khi biên dịch thường chưa tối ưu vì trình biên dịch thường phải tạo 1 chương trình khung tổng quát để đáp ứng cho tất cả các dạng lập trình nên code biên dịch dài hơn, người lập trình có thể không cần hiểu biết nhiều về cấu trúc của vi điều khiển hơn.Do có nhiều họ vi điều khiển của nhiều hãng khác nhau nên các phần mềm lập trình Ccho vi điều khiển cũng khác nhau, phần này chỉ trình bày những kiến thức lập trình C chung vàcơ bản nhất và tùy thuộc vào từng phần mềm biên dịch mà các bạn tìm hiểu thêm.Sau khi kết thúc phần này sẽ giúp các bạn biết cấu trúc một chương trình, biết các lệnh C cơ bản để lập trình, biết khai báo các kiểu dữ liệu cho các biến, biết viết chương trình.

Các kiểu dữ liệu lập trình Vi điều khiển

Đối với phần mềm CCS hoặc các phần mềm khác và các họ vi điều khiển khác sẽ có cách khai báo dữ liệu tương đối giống nhau, nhưng đa phần sẽ khác nhau về số Bit của các kiểu dữ liệu.

Sau đây là bảng khai báo biến của phần mềm CCS lập trình Pic.

Kiểu Kích cỡ Unsigned (Không dấu) Signed (Có dấu)
int1 Số 1 bit = true hay false ( 0 hay 1) 0 đến 1  Không có
int8 Số nguyên 1 byte ( 8 bit) 0 đến 255 -128 đến 127 
int16 Số nguyên 16 bit 0 đến 65535  -32768 đến 32767 
int32 Số nguyên 32 bit 0 đến 4294967295  -2147483648 đến 2147483647 
float32 Số thực 32 bit -1.5 x 1045 đến 3.4 x 1038

Lưu ý: 

Khi khai báo int1,int8,int16,int32 chúng ta sử dụng được vì trong phần mềm CCS đã được định nghĩa trong thư viện của từng con Pic cụ thể.

Ví dụ các bạn mở thư viện của Pic16F887 các bạn chỉ việc khai báo

#include Sau đó các bạn nhấn chuột phải mở lên. Kéo tới dòng lệnh 24 đến 30 sẽ thấy được định nghĩa như sau:

#if (!defined(__PCM__)||defined(__ISNT_CCS__))#define _bif #define int8 char #define int16 long#define int32 long long#define float32 float#define int1 char #endif

Một vài ví dụ cụ thể

Kiểu dữ liệu có dấuSigned là kiểu dữ liệu có dấu nên giá trị sẽ có 1 nữa phần âm và 1 nữa phần dương.

Ví dụ: signed int8 dem; // biến đếm là 8bit, giá trị sẽ được tính như sau

Bit số 7 sẽ quy định dấu. nếu là số “1” thì mang dấu “-” còn lại 7 bit nên chỉ còn 2^7 = 128 giá trị.

sẽ chạy từ (-128 về -1).

Bit số 7 sẽ quy định dấu. nếu là số “0” thì mang dấu “+” còn lại 7 bit nên chỉ còn 2^7 = 128 giá trị.

sẽ chạy từ (0 về 127).

Kiểu dữ liệu không dấuUnsigned là kiểu không dấu nên giá trị theo biến 

Ví dụ : biến 8bit thì 2^8 = 256 và sẽ được chạy từ 0 đến 255.

Có 4 cách khai báo lập trình Pic

int1 tt; //biến tt là kiểu dữ liệu 1bit chỉ có hai giá trị là 0 và 1.signed int8 dem //biến dem là kiểu số nguyên giá trị 8bit và có dấu.unsigned int8 tam // biến tam là kiểu số nguyên giá trị 8bit không dấufloat doc //biến doc là kiểu số thực tức có dấu , phía sau, VD: 1,12 và chỉ lấy được hai giá trị thập phân ở sau không lấy được nhiều hơn.

Các toán tử trong lập trình Pic

Toán tử gán (=). // sử dụng cho các toán gán giá trị như a=1;Toán tử số học (+, -, *, /, %). // sử dụng cho tính toán như các bài toán thông thườngToán tử gán phức hợp (+=, -=, *=, /=, %=, >>=, Toán tử tăng và giảm (++, –) // cách ghi gọn như a++ => a = a+1;Toán tử quan hệ (==, !=, > , =, Toán tử logic (!, && ,||) // sử dụng so sánh trong các cổng logic, tức nhiều điều kiện 1 lúcToán tử xử lý bit (&, |, ^, ~, >) // tính toán logic số học và dịch dữ liệu

Các ví dụ về toán tử các bạn xem trong file giáo trình sẽ chi tiết hơn.

Các lệnh C cơ bản lập trình Pic

Lệnh if và else trong lập trình pic

Có 4 loại cơ bản sau:

1. Chỉ có điều kiện if

*

Lệnh này chỉ thực hiện lệnh C khi đúng điều kiện còn nếu sau thì bỏ qua kết thúc lệnh đầu tiên.

2. Có if/else

*

Lưu đồ lệnh if,else

Lệnh này kiểm tra điều kiện có đúng không, nếu đúng thì thực hiện 1 và kết thúc, còn ngược lại nếu sai thì chạy tiếp chương trình thực hiện hai và kết thúc.

3. Có if/else if

*

Lưu đồ lệnh if, else if…

Lệnh này kiểm tra có đúng điều kiện 1 đúng không, nếu đúng thì thực hiện 1 sau đó kết thúc lệnh, nếu sai tiếp tục kiểm tra điều kiện 2 có đúng không, nếu đúng thực hiện 2 sau đó kết thúc còn nếu cả hai điều kiện đều không đúng thì kết thúc và không thực hiện gì cả.

4. Đầy đủ if/else if … else if /else

*

Lưu đồ lệnh if,else if,…,else if,else

Lệnh này kiểm tra điều kiện 1 có đúng không, nếu đúng thì thực hiện 1 sau đó kết thúc, nếu sai tiếp tục kiểm tra điều kiện 2 có đúng không, nếu đúng thì thực hiện 2 sau đó kết thúc, nếu sai kiểm tra đến điều kiện n+1, nếu vẫn sai thì thực hiện n sau đó kết thúc dòng lệnh.

Xem thêm: Oskar Fischinger Là Ai – Oskar Fischinger’S 117Th Birthday

Có nhiều điều kiện chổ else if, và chương trình sẽ kiểm tra theo thứ tự.

Lưu ý: Điều kiện if chỉ thực hiện 1 lần sau đó kết thúc dù đống hay sai và sẽ không quay lại chương trình.

Lệnh lặp while trong lập trình pic

*

Lưu đồ vòng lặp While

Lệnh while thực hiện theo chiều đúng, nếu chương trình không có điều kiện sai thì sẽ không có END sảy ra lúc đó được gọi là vòng lặp tuần hoàn thường sử dụng là while(1) hoặc while(true). 

Lệnh lặp Do While() trong lập trình pic

*

Lưu đồ vòng lặp Do while

Lệnh Do while là thực hiện trước rồi kiểm tra điều kiện sau, nếu đúng thì quay lại thực hiện tiếp vòng lặp đến khi điều kiện sai thì kết thúc chương trình.

Lệnh vòng lặp for trong lập trình pic

*

Lưu đồ vòng lặp FOR

Lệnh for thực hiện khi đúng điều kiện, ở ví dụ này ta có thể hiểu, 

n=0 là giá trị đầu của vòng lặp for 

n

n++ mỗi lần vòng lặp chạy sẽ tăng lên 1 đơn vị.

Số vòng lặp của for phụ thuộc vào 3 yếu tố trên.

Lưu ý: 

Nếu các bạn sử dụng vòng phải đảm bảo được chương trình không thực hiện gì ngoài vòng lặp vì khi vòng lặp chạy nó không thể thực hiện các lệnh khác.

Điều kiện của vòng lặp phải chắt chắn sẽ có một lúc nào đó chương trình kết thúc nếu không sẽ bị treo chương trình không lối thoát.

Lệnh truy xuất trong phần mềm CCS

Ở đây mình chỉ sử dụng các lệnh truy xuất đơn giản nhất để có thể viết được các bài toán.

Giúp cho người học không cảm giác bị rối khi xử dụng.

Lệnh OUTPUT_LOW(pin)

Lệnh OUTPUT_LOW(pin): có chức năng cho 1 chân của port xuống mức 0.

Ví dụ: output_low(Pin_A0); // cho chân A0 xuống mức thấp;

Lệnh OUTPUT_HIGH(pin)

Lệnh OUTPUT_HIGH(pin): có chức năng cho 1 chân của port lên mức 1. 

Ví dụ: OUTPUT_HIGH(Pin_A0); //cho chân A0 lên mức cao.

Lệnh OUTPUT_BIT (pin, value)

Lệnh OUTPUT_BIT (pin, value): có chức năng xuất giá trị value ra 1 chân của port.

Ví dụ: OUTPUT_BIT(Pin_A0,1); //xuất tín hiệu mức cao cho chân A0.

Nếu value là 1 thì giống OUTPUT_HIGH(PIN);

Nếu value là 0 thì giống OUTPUT_LOW(PIN); 

Để thuận tiện trong việc sử dụng người ta định nghĩa cho mình giúp tối ưu chương trình khi cần thiết.

Lệnh OUTPUT_X(value):

Chức năng: có chức năng xuất dữ liệu 8 bit ra port X

Ví dụ: OURPUT_A(0x0f); // xuất tín hiệu 0000 1111 cho Port A.

Lệnh SET_TRIS_X(value)

Lệnh SET_TRIS_X(value): có chức năng định cấu hình cho port X .

Vì các chân vi điều khiển có chức năng hai chiều là I/O nên phải quy định trước chiều cho vi điều khiển, hầu hết vi điều khiển chỉ xử lý chân theo một chiều tại một thời gian nhất định.

Ví dụ: SET_TRIS_A(0xf0); // định cấu hình cho port A là 1111 0000 có nghĩa là từ chân A7 – A4 là tín hiệu đi vào vi điều khiển, từ chân A3 – A0 là tín hiệu đi ra vi điều khiển.

Lệnh INPUT(pin)

Lệnh INPUT(pin): có chức năng đọc giá trị 1 chân của port gán cho biến.

Ví dụ: INPUT(PIN_A0); // đọc tín hiệu vào vi điều khiển là mức thấp hay mức cao.

Nguồn : Sưu tầm

Related Posts

Xem 9+ vẽ chữ 3d theo tên được đánh giá cao

Xem 9+ vẽ chữ 3d theo tên được đánh giá cao

Globalizethis tổng hợp và liệt ra những vẽ chữ 3d theo tên dưới đây hi vọng sẽ giúp các bạn có thêm những sự lựa chọn phù…

Xem 9+ vẽ chồng sách được đánh giá cao

Xem 9+ vẽ chồng sách được đánh giá cao

Globalizethis tổng hợp và liệt ra những vẽ chồng sách dưới đây hi vọng sẽ giúp các bạn có thêm những sự lựa chọn phù hợp và…

Xem 9+ vẽ chị hằng nga chibi được đánh giá cao

Xem 9+ vẽ chị hằng nga chibi được đánh giá cao

Globalizethis tổng hợp và liệt ra những vẽ chị hằng nga chibi dưới đây hi vọng sẽ giúp các bạn có thêm những sự lựa chọn phù…

Xem 9+ vẽ chậu mai được đánh giá cao

Xem 9+ vẽ chậu mai được đánh giá cao

Globalizethis tổng hợp và liệt ra những vẽ chậu mai dưới đây hi vọng sẽ giúp các bạn có thêm những sự lựa chọn phù hợp và…

Xem 9+ vẽ chậu cây dễ thương được đánh giá cao

Xem 9+ vẽ chậu cây dễ thương được đánh giá cao

Globalizethis tổng hợp và liệt ra những vẽ chậu cây dễ thương dưới đây hi vọng sẽ giúp các bạn có thêm những sự lựa chọn phù…

Xem 9+ vẽ chạm khắc đình làng việt nam được đánh giá cao

Xem 9+ vẽ chạm khắc đình làng việt nam được đánh giá cao

Globalizethis tổng hợp và liệt ra những vẽ chạm khắc đình làng việt nam dưới đây hi vọng sẽ giúp các bạn có thêm những sự lựa…

Leave a Reply