Tải bản đầy đủ (.pdf) (82 trang)

bài giảng lập trình hệ thống nhúng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (272.97 KB, 82 trang )

BÀI GIẢNGBÀI GIẢNG
LậpLập trìnhtrình hệhệ thốngthống nhúngnhúng
((Programming Embedded SystemProgramming Embedded System))
MÔN HỌC: MÔN HỌC: LậpLập trìnhtrình hệhệ thốngthống nhúngnhúng
GVGV: : TrầnTrần VănVăn HùngHùng
MechatronicsMechatronics DeptDept
http />Ch01: Tổng quanCh01: Tổng quan
 Hệ thống nhúngHệ thống nhúng
 Một số ngôn ngữ lập trìnhMột số ngôn ngữ lập trình

Ngôn ngữ CNgôn ngữ C

Ngôn ngữ CNgôn ngữ C
 Lưu đồLưu đồ
Hệ thống nhúng Hệ thống nhúng ((embedded systemembedded system))
 Một hệ thống có khả năng tự trị được nhúng vào Một hệ thống có khả năng tự trị được nhúng vào
trong một môi trường hay một hệ thống mẹ.trong một môi trường hay một hệ thống mẹ.
 Hệ thống nhúng có vai trò đảm nhận một phần Hệ thống nhúng có vai trò đảm nhận một phần
công việc cụ thể của hệ thống mẹ.công việc cụ thể của hệ thống mẹ.
công việc cụ thể của hệ thống mẹ.công việc cụ thể của hệ thống mẹ.
 Hệ thống nhúng có thể là một hệ thống phần cứng Hệ thống nhúng có thể là một hệ thống phần cứng
và cũng có thể là một hệ thống phần mềmvà cũng có thể là một hệ thống phần mềm
Hệ thống nhúng Hệ thống nhúng ((embedded systemembedded system))
 Đặc điểmĐặc điểm
 Các hệ thống nhúng được thiết kế để thực hiện một số Các hệ thống nhúng được thiết kế để thực hiện một số
nhiệm vụ chuyên dụng.nhiệm vụ chuyên dụng.
 Một hệ thống nhúng thường không phải là một khối Một hệ thống nhúng thường không phải là một khối
riêng biệt mà là một hệ thống các thiết bị.riêng biệt mà là một hệ thống các thiết bị.
riêng biệt mà là một hệ thống các thiết bị.riêng biệt mà là một hệ thống các thiết bị.
 Phần mềm được viết cho các hệ thống nhúng được gọi Phần mềm được viết cho các hệ thống nhúng được gọi
là firmware và được lưu trữ trong các chip bộ nhớ chỉ là firmware và được lưu trữ trong các chip bộ nhớ chỉ


đọc (readđọc (read only memory) hoặc bộ nhớ flash chứ không only memory) hoặc bộ nhớ flash chứ không
phải là trong một ổ đĩa.phải là trong một ổ đĩa.
Hệ thống nhúng Hệ thống nhúng ((embedded systemembedded system))
 Giao diệnGiao diện
 Kiến trúc CPUKiến trúc CPU
 Thiết bị ngoại viThiết bị ngoại vi
 ……
Ngôn ngữ lập trìnhNgôn ngữ lập trình
 Ngôn ngữ lập trình phải thỏa mãn được hai Ngôn ngữ lập trình phải thỏa mãn được hai
điều kiện cơ bản là:điều kiện cơ bản là:
 Nó phải dễ hiểu và dễ sử dụng đối với người lập Nó phải dễ hiểu và dễ sử dụng đối với người lập
trình, để con người có thể dùng nó giải quyết các trình, để con người có thể dùng nó giải quyết các
bài toán khác. bài toán khác.
bài toán khác. bài toán khác.
 Nó phải miêu tả một cách đầy đủ và rõ ràng các Nó phải miêu tả một cách đầy đủ và rõ ràng các
tiến trình (tiến trình (processprocess), để có thể chạy được trên các ), để có thể chạy được trên các
máy tính khác. máy tính khác.
Ngôn ngữ lập trình Ngôn ngữ lập trình ((tiếptiếp))
 Ngôn ngữ máy Ngôn ngữ máy Machine languagesMachine languages
 Ngôn ngữ duy nhất của máy tính Ngôn ngữ duy nhất của máy tính –– CPUCPU
 Hợp ngữ Hợp ngữ Assembly languagesAssembly languages
 Sử dụng các từ khóa tiếng Anh cho các lệnh hay Sử dụng các từ khóa tiếng Anh cho các lệnh hay
nhóm lệnh của mã máy.nhóm lệnh của mã máy.
nhóm lệnh của mã máy.nhóm lệnh của mã máy.
 Ngôn ngữ cấp cao Ngôn ngữ cấp cao HighHigh level languageslevel languages
 Pascal, C, C++, VB, VC, Java,…Pascal, C, C++, VB, VC, Java,…
Ngôn ngữ CNgôn ngữ C
 Tại sao lại chọn CTại sao lại chọn C
 Từ khóa ít (khoảng 32 từ khóa).Từ khóa ít (khoảng 32 từ khóa).
 Thông dụng (hầu hết code đều viết bằng C)Thông dụng (hầu hết code đều viết bằng C)


Tính ổn định (không thay đổi nhiều lắm theo thời Tính ổn định (không thay đổi nhiều lắm theo thời

Tính ổn định (không thay đổi nhiều lắm theo thời Tính ổn định (không thay đổi nhiều lắm theo thời
gian)gian)
 Tốc độ thực thi nhanhTốc độ thực thi nhanh
 Là nền tảng nhiều ngôn ngữ khác ( Java, C++, Là nền tảng nhiều ngôn ngữ khác ( Java, C++,
awk, Perl).awk, Perl).
Ngôn ngữ C Ngôn ngữ C ((tiếptiếp))
 Từ khóaTừ khóa
autoauto breakbreak casecase charchar continuecontinue defaultdefault
dodo doubledouble elseelse externextern floatfloat forfor
gotogoto ifif intint longlong registerregister returnreturn
shortshort
sizeofsizeof
staticstatic
structstruct
switchswitch
typedeftypedef
shortshort
sizeofsizeof
staticstatic
structstruct
switchswitch
typedeftypedef
unionunion
unsigneunsigne
dd
voidvoid volatilevolatile whilewhile
_cs_cs _ds_ds _es_es _ss_ss

_AH_AH _AL_AL _AX_AX _BH_BH _BL_BL _BX_BX
_CH_CH _CL_CL _CX_CX _DH_DH _DL_DL _DX_DX
_BP_BP _DI_DI _SI_SI _SP_SP
Flow chartFlow chart
Start
• Start /Begin bắt đầu giải thuật. Chỉ có 1 và chỉ 1 điểm START.
• Input / Output dữ liệu
xuất/nhập
• Dòng xử lý
• Đặc tả thao tác xử lý hay tính toán dữ liệu
• Điều khiển rẽ nhánh
Điều kiện
Yes
No
• Phát biểu rẽ nhánh khác
Giá trị xét phân nhánh
Trường hợp 1 Trường hợp i Khác
Stop
• Stop/End kết thúc của giải thuật. Có thể có một hoặc
nhiều điểm STOP.
Flow chart Flow chart ((tiếptiếp))
Start
Nhập a, b
Giải phương trình ax + b = 0
a=0 ?
Yes
No
b=0 ?
Yes
No

X=-b/a
Không có nghiệm
Vô số nghiệm
Stop
Một chương trình bằng CMột chương trình bằng C
#include <stdio.h>

/* My first C program which prints Hello World */

Khai báo thư viện
Chú thích
/* My first C program which prints Hello World */


int main()
{
printf ("Hello World!\n");
return 0;
}

Lệnh
Chương trình chính
Giá trị trả về của một hàm
Bắt đầu và kết thúc một khối lệnh
Ch02: Kiểu dữ liệu, biến và hằngCh02: Kiểu dữ liệu, biến và hằng
 Kiểu dữ liệuKiểu dữ liệu
 Biến và hằng, các phép gán cơ bảnBiến và hằng, các phép gán cơ bản
 Kiểu số nguyênKiểu số nguyên
 Kiểu số thựcKiểu số thực
 Kiểu BooleanKiểu Boolean

 Kiểu ký tựKiểu ký tự
Kiểu dữ liệuKiểu dữ liệu
Vô hướng
Kiểu dữ
Cơ sở
Tự định nghĩa
Kiểu số nguyên
Kiểu số thực
Kiểu ký tự
Kiểu logic
Kiểu liệt kê
Kiểu dữ
liệu
Có cấu trúc
Con trỏ
Tự định nghĩa
Kiểu liệt kê
Array
Struct
File
Biến và hằng, các phép gán cơ bảnBiến và hằng, các phép gán cơ bản
 Tên biến và hằng là một chuỗi kí tự liên tục gồm: Kí tự, chữ,
số, dấu gạch dưới. Khi đặt tên biến, cần phải tuân theo những
quy định sau:
 Tên biến phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới.
 Trong tên biến không được có các khoảng trống ở giữa tên.
 Không được đặt tên biến trùng với từ khóa.
 Ví du:
 name_1, _name2, sample32… là các tên biến hợp lệ.
 name 1, char, 34sample,… là các tên biến không hợp lệ

 Chú ý:
 Độ dài tối đa của tên là không giới hạn, tuy nhiên chỉ có 31 ký tự đầu
tiên là có ý nghĩa.
 Trong tên biến có phân biệt chữ hoa và chữ thường.
Biến và hằng, …. Biến và hằng, …. ((tiếptiếp))
 KhaiKhai báobáo biếnbiến::
 Kiểu_dữ_liệu tên_các_biến;
 Kiểu_dữ_liệu: tên kiểu dữ liệu của các biến cần khai báo.
 Tên_các_biến: Các biến có cùng kiểu dữ liệu có thể được
khai
báo
bằng
cách
liệt

danh
sách
tên
các
biến
.
Các
biến
khai
báo
bằng
cách
liệt

danh

sách
tên
các
biến
.
Các
biến
được phân cách nhau bởi dấu phẩy (,), cuối danh sách các
biến cần khai báo là dấu chấm phẩy
 Ví dụ
 char ten1, ten2;
 int a, b, c;
Biến và hằng, …. Biến và hằng, …. ((tiếptiếp))
 Khai báo hằng:Khai báo hằng:
 const Kiểu_dữ_liệu tên_các_hằng = giá_trị_hằng;
 Ví dụ

const int he_so = 123;
const int he_so = 123;
 const float gia_sp = 1,23;
Biến và hằng, …. Biến và hằng, …. ((tiếptiếp))
 Phép gán:Phép gán:
 Lệnh gán (assignment statement) dùng để gán giá trị
của một biểu thức cho một biến.
 tên_biến = biểu_thức;
 Ví dụ:
 a = 3;
 t = b+2
 x = Tong(y, z);
Kiểu số nguyênKiểu số nguyên

Kiểu dữ liệu Từ khóa Số byte Dải giá trị
Character Character char char 1 1 128 128 ÷÷ 127127
Integer Integer int int 2 2 32768 32768 ÷÷ 3276732767
Short integer Short integer
short short
2 2

32768 32768
÷÷
3276732767
Short integer Short integer
short short
2 2

32768 32768
÷÷
3276732767
Long integer Long integer long long 4 4 2147483648 2147483648 ÷÷ 2147483647 2147483647
Unsigned character Unsigned character unsigned char unsigned char 1 1 0 0 ÷÷ 255 255
Unsigned integer Unsigned integer unsigned int unsigned int 2 2 0 0 ÷÷ 65535 65535
Unsigned short integer Unsigned short integer unsigned short unsigned short 22 0 0 ÷÷ 6553565535
Unsigned long integer Unsigned long integer unsigned longunsigned long 44 0 0 ÷÷ 4294967295 4294967295
Kiểu số nguyên Kiểu số nguyên ((tiếptiếp))
Phép toánPhép toán Ký hiệuKý hiệu Ví dụVí dụ
CộngCộng ++ x + yx + y
TrừTrừ x x –– yy
NhânNhân
**
x * yx * y
NhânNhân

**
x * yx * y
ChiaChia // x / yx / y
Lấy phần dưLấy phần dư %% x % yx % y
Lấy phần nguyênLấy phần nguyên // x / yx / y
TăngTăng ++++ x++ or ++xx++ or ++x
GiảmGiảm xx or or xx
Kiểu số thựcKiểu số thực
Kiểu dữ liệu Từ khóa Số byte Dải giá trị
Số thực có độ chính xác đơnSố thực có độ chính xác đơn floatfloat 44 1.2E1.2E 38 38 ÷÷ 3.4E38 3.4E38
Số thực có độ chính xác képSố thực có độ chính xác kép doubledouble 88 2.2E2.2E 308 308 ÷÷ 1.8E3081.8E308
Số thực có độ chính xác kép độ Số thực có độ chính xác kép độ
long floatlong float
1010
3.4E3.4E

4932 4932
÷÷
3.4E4932 3.4E4932
Số thực có độ chính xác kép độ Số thực có độ chính xác kép độ
dài lớndài lớn
long floatlong float
1010
3.4E3.4E

4932 4932
÷÷
3.4E4932 3.4E4932
Kiểu số thựcKiểu số thực
 Biểu diễnBiểu diễn

 Ở dạng thập phânỞ dạng thập phân
12.345678;12.345678; 98.765432198.7654321
 Ở dạng khoa họcỞ dạng khoa học
12.334e15 = 12.334*1012.334e15 = 12.334*10
1515
;;
98,765e98,765e 45 = 98,765*1045 = 98,765*10
4545
;;
 Phép tínhPhép tính
 Cộng, trừ, nhân, chia, phép tăng giảmCộng, trừ, nhân, chia, phép tăng giảm
 Phép chia sẽ cho số thực, không có phép %Phép chia sẽ cho số thực, không có phép %
Kiểu BooleanKiểu Boolean
 Trong C không định nghĩa rõ, nó tồn tại dưới Trong C không định nghĩa rõ, nó tồn tại dưới
dạng số nguyên.dạng số nguyên.
 Giá trị 0 được hiểu là FALSE, giá trị khác 0 Giá trị 0 được hiểu là FALSE, giá trị khác 0
được hiểu là TRUE.được hiểu là TRUE.
được hiểu là TRUE.được hiểu là TRUE.
 Các phép toánCác phép toán
 And (&&); OR (||); NOT (!).And (&&); OR (||); NOT (!).
 Các phép toán quan hệCác phép toán quan hệ
 != , == , >= , <= , > , <!= , == , >= , <= , > , <
Kiểu BooleanKiểu Boolean
1.1. 0xF0 0xF0 &&&& 0x1F = ?0x1F = ?
2.2. 0b1000.1110 0b1000.1110 |||| 0b0100.0100 = ?0b0100.0100 = ?
3.3. !!0b1000.1110 = ?0b1000.1110 = ?
4.4. 0b1010.1010 0b1010.1010 !=!= 0b0100.0100 = ?0b0100.0100 = ?
5.5. 0b1011.0010 0b1011.0010 ==== 0b0100.0100 = ?0b0100.0100 = ?
6.6. 0b1100.0100 0b1100.0100 >=>= 0b0100.0100 = ?0b0100.0100 = ?
7.7. 0xA5 0xA5 >> 0b1011.0001 = ?0b1011.0001 = ?

Kiểu ký tựKiểu ký tự
Kiểu dữ liệu Từ khóa Số byte Dải giá trị
Kiểu có dấuKiểu có dấu charchar 11 128 128 ÷÷ 127 127
Kiểu không dấuKiểu không dấu unsigned char unsigned char 22 0 0 ÷÷ 125125
 Phân loạiPhân loại
 Các ký tự điều khiển 0 => 31Các ký tự điều khiển 0 => 31
 Các ký tự văn bản 32 => 126Các ký tự văn bản 32 => 126
 Các ký tự đồ họa 127 => 255Các ký tự đồ họa 127 => 255

×