C trong vi điều khiển
Ôn lại tập lệnh và cấu trúc của ngôn ngữ lập trình c
Các nội dung chính
Các chỉ thị trước xử lý
Các kiểu dữ liệu
Toán tử
Cấu trúc cơ bản của một chương trình
Các cấu trúc điều khiển
Cấu trúc rẽ nhánh
Cấu trúc lặp
Break và Continue
Hàm
Các chỉ thị
•#include “tên thư viện.h” hoặc #include <tên thư viện.h> :
o
o
Nhập nội dung (bao gồm hàm và biến) từ một tệp khác và chèn vào chương trình hiện tại.
Ví dụ : #include <stdio.h>, #include <msp430.h>
•#define tên dãy ký tự
o
Thay thế tên bằng dãy ký tự đằng sau
o
•
Ví dụ : #define N 100, #define LED_ON 1, #define data P1OUT
#ifdef và ifndef
o Nếu đã định nghĩa và nếu chưa định nghĩa
#ifndef _GRANDPARENT_H
#define _GRANDPARENT_H
// Nội dung của grandparent.h
#endif
•
#prasma: biên dịch chương trình theo một số tùy chọn đặc biệt, phụ thuộc vào từng compiler khác nhau
Các kiểu dữ liệu
Các kiểu dữ liệu chuẩn
Tên
Dung lượng (byte)
Độ lớn dữ liệu
char
1
-128 đến 127
unsigned char
1
0 đến 255
enum
2
-32768 đến 32767
short
2
-32768 đến 32767
unsigned short
2
0 đến 65535
int
2
-32768 đến 32767
unsigned int
2
0 đến 65535
long
4
-2^31 đến 2^31-1
unsigned long
4
0 đến 2^32-1
Toán tử
Toán tử số học
Toán tử phức hợp
Toán tử thao tác bit
Toán tử quan hệ
Toán tử logic
Cộng +
Gán =
AND các bit &
==
NOT !
Trừ -
Cộng rồi gán +=
OR các bit |
!=
AND &&
Nhân *
Trừ rồi gán -=
XOR các bit ^
>
OR ||
Chia /
Nhân rồi gán *=
NOT bit ~
<
Lấy phần dư %
Chia rồi gán /=
Dịch trái <<
<=
Lấy dư rồi gán %=
Dịch phải >>
>=
Cộng thêm 1 ++
Trừ đi 1 --
Toán tử thao tác bit
char a = 0x01, b = 0x0f; // 0x01 = 0000 0001, 0x0f = 0000 1111
•
a & b = 0x01 = 0000 0001
•
a | b = 0x0f = 0000 1111
•
a ^ b = 0x0e = 0000 1110
•
a << 1 = 0x02 = 0000 0010
•
b >> 2 = 0x03 = 0000 0011
Các phép toán thao tác bit quan trọng trong vi điều khiển
•
Set bit: P1DIR |= 0x01: Cho bit tại vị trí 0 lên giá trị bằng 1, các bit còn lại không đổi
•
Clear bit: P1OUT &=~ 0x08: Cho bit tại vị trí 3 xuống giá trị bằng 0, các bit còn lại không đổi
•
Reverse bit: P2OUT ^= 0x02: Đảo bit tại vị trí 1, các bit còn lại không đổi
Cấu trúc cơ bản của một chương
trình C
#include <msp430.h>
#define IN P1OUT
int bien1, bien2;
int ham(){
//Nội dung hàm
}
int main(){
bien1 = ham();
//Nội dung chương trình
}
Cấu trúc cơ bản của một chương
trình C
#include <msp430.h>
#define IN P1OUT
int bien1, bien2;
int ham();
int main(){
bien1 = ham();
//Nội dung chương trình
}
int ham(){
//Nội dung hàm
}
Cấu trúc điều khiển – rẽ nhánh
if (điều kiện) thực hiện lệnh…
◦ Ví dụ: if(x < 3) x = 5;
if (điều kiện) thực hiện lệnh 1… else thực hiện lệnh 2
◦ Ví dụ: if(a < b) max = b; else max = a;
Switch(biến) case Giá trị 1: thực hiện lệnh 1; case Giá trị 2: thực hiện lệnh 2
◦ Ví dụ: switch(a){
case 0: num0 ++; break;
case 1: num1 ++; break;
}
Cấu trúc lặp
while(điều kiện) {
// Khối lệnh lặp
}
Ví dụ: while(1) { P1OUT ^= 0x01; delay(); }
for(khởi tạo; điều kiện; câu lệnh sau mỗi lần lặp) { khối lệnh lặp };
Ví dụ: for(i = 0; i < 100; i++){ if (i %2 == 0) countEven ++; }
Break và Continue
break và continue được sử dụng trong khối lệnh lặp
◦ break có tác dụng dừng ngay lập tức vòng lặp đang thực hiện
◦ continue có tác dụng tiếp tục vòng lặp và bỏ qua tất cả các lệnh ở sau nó
Bài tập
In ra màn hình tất cả các số nguyên tố trong khoảng từ 1 đến 100
Bài tập 1