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ị•#include “tên thư viện.h” hoặc #include : o Nhập nội dung bao gồm hàm và b
Trang 1C 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
Trang 2Các nội dung chính
Trang 3Các chỉ thị
•#include “tên thư viện.h” hoặc #include <tên thư viện.h> :
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.
o 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
Trang 4Cá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
Trang 5Toá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
Trang 6Toán tử thao tác bit
char a = 0x01, b = 0x0f; // 0x01 = 0000 0001, 0x0f = 0000 1111
• a & b = 0x01 = 0000 0001
• 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
Trang 7Cấ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
}
Trang 8Cấ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
}
Trang 9Cấ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;
}
Trang 10Cấ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 ++; }
Trang 11Break 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ó
Trang 12Bà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
Trang 13Bài tập 1