1. Trang chủ
  2. » Giáo án - Bài giảng

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

82 417 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 82
Dung lượng 272,97 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hệ thống nhúng embedded system embedded system 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ẹ.. Hệ thống nhúng embedded system embedded system

Trang 1

Mechatronics DeptDept

http http://www.ntu.edu.vn/ ://www.ntu.edu.vn/

Trang 3

Hệ thống nhúng ((embedded system embedded system))

 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ẹ.

 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ẹ.

 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ềm

Trang 4

Hệ thống nhúng ((embedded system embedded system))

 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ỉ đọ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

Trang 5

Hệ thống nhúng ((embedded system embedded system))

 Thiết bị ngoại vi

 …

Trang 6

 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 (process process), để có thể chạy được trên các ), để có thể chạy được trên các máy tính khác

Trang 7

Ngôn ngữ lập trình ((tiếp tiếp))

 Ngôn ngữ máy Ngôn ngữ máy Machine languages Machine 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 languages Assembly languages

 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

 Ngôn ngữ cấp cao Ngôn ngữ cấp cao High High level languages level languages

 Pascal, C, C++, VB, VC, Java,…

Trang 8

Ngôn ngữ C

 Tại sao lại chọn C

 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)

 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)

 Tốc độ thực thi nhanh

 Là nền tảng nhiều ngôn ngữ khác ( Java, C++,

awk, Perl)

Trang 9

Ngôn ngữ C ((tiếp tiếp))

auto break case char continue continue default default

do double else extern float for

goto if int long register return short sizeof static struct switch typedef short sizeof static struct switch typedef union unsigne

Trang 10

Flow 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

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.

Trang 11

Flow chart (( tiếp ))

Trang 12

Mộ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

Trang 13

Ch02: Kiểu dữ liệu, biến và hằng

Trang 14

Kiể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ê

Trang 15

Biế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ệ

Trang 16

Biến và hằng, … (( tiếp ))

 Khai Khai báo báo biến biế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 kê 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;

Trang 17

Biến và hằng, … (( tiếp ))

 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 float gia_sp = 1,23;

Trang 19

Kiểu số nguyên

Kiểu dữ liệu Từ khóa Số byte Dải giá trị

Character char 1 128 128 ÷ ÷ 127 127

Integer int 2 32768 32768 ÷ ÷ 32767 32767

Short integer short 2 32768 32768 ÷ ÷ 32767 32767

Short integer short 2 32768 32768 ÷ ÷ 32767 32767

Long integer long 4 2147483648 2147483648 ÷ ÷ 2147483647 2147483647 Unsigned character unsigned char 1 0 0 ÷ ÷ 255 255

Unsigned integer unsigned int 2 0 0 ÷ ÷ 65535 65535

Unsigned short integer

Unsigned short integer unsigned short unsigned short 2 0 0 ÷ ÷ 65535 65535

Unsigned long integer unsigned long 4 0 0 ÷ ÷ 4294967295 4294967295

Trang 20

Kiểu số nguyên (( tiếp ))

Trang 21

Kiể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 đơn float 4 1.2E 1.2E 38 38 ÷ ÷ 3.4E38 3.4E38

Số thực có độ chính xác kép double 8 2.2E 2.2E 308 308 ÷ ÷ 1.8E308 1.8E308

Số thực có độ chính xác kép độ long float 10 3.4E 3.4E 4932 4932 ÷ ÷ 3.4E4932 3.4E4932

Số thực có độ chính xác kép độ

dài lớn

long float 10 3.4E 3.4E 4932 4932 ÷ ÷ 3.4E4932 3.4E4932

Trang 22

 Phép tính

 Cộng, trừ, nhân, chia, phép tăng giảm

 Phép chia sẽ cho số thực, không có phép %

Trang 24

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 = ?

Trang 25

Kiểu ký tự

Kiểu dữ liệu Từ khóa Số byte Dải giá trị

Kiểu có dấu char 1 128 128 ÷ ÷ 127 127 Kiểu không dấu unsigned char 2 0 0 ÷ ÷ 125 125

 Phân loại

 Các ký tự điều khiển 0 => 31

 Các ký tự văn bản 32 => 126

 Các ký tự đồ họa 127 => 255

Trang 26

 Chuyển ký tự thành ký tự thường

tolower (int c) tolower (‘

Trang 27

Khai báo các hằng tượng trưng

#define tên_ban_đầu dãy_thay_thế

Trang 28

Ch03: Câu lệnh, biểu thức và toán tử

Trang 33

 i = i + 1;   i++ hoặc ++i i++ hoặc ++i

 i = i i = i 1; 1;   ii hoặc hoặc ii

 …

 a = ++i;   i = i + 1; i = i + 1; a = i;

 a = i++;   a = i; a = i; i = i + 1;

Trang 34

Toán tử

 Toán tử quan hệ

Là các phép so sánh

 Toán tử sizeof()

 Tính số byte mà biến (kiểu dữ liệu) đó chiếm

 sizeof (sizeof (intint) = 2) = 2

 sizeof (sizeof (longlong) = 4) = 4

 Toán tử điều kiện

 biểu_thức_1 ? biểu_thức_2 : biểu_thức_3

 a = b>c ? m:n;

Trang 35

Thứ tự ưu tiên giữa các phép toán

 Các phép toán có mức ưu tiên khác nhau

 Nếu không nhớ thứ tự thì ta có thể dùng dấu ngoăc đơn

 f = 2*(a+b) f = 2*(a+b) –– ( (x + y)/(a+x) );( (x + y)/(a+x) );

 f = 3* ( n f = 3* ( n –– (2*m) );(2*m) );

Trang 36

Sự hiệu chỉnh khi tính toán

 Trong C cho phép sự trộn lẫn các toán hạng

thuộc các kiểu dữ liệu khác nhau.

 Việc chuyển đổi dữ liệu tự động có thể mất dữ liệu trong quá trình chuyển đổi.

 Ưu tiên chuyển đổi về kiểu dữ liệu số nguyên chuẩn

 Chuyển đổi các ký tự về số nguyên dựa vào

bảng mã ASCII

Trang 38

Các hàm chuẩn số học

 Các hàm số học nằm trong thư viện “ Các hàm số học nằm trong thư viện “math.h math.h””

 int int abs abs(int i);(int i);

 double double sin sin((double ddouble d))

Trang 40

Nhập dữ liệu

 Hàm scanf()

 int scanf(“xâu định dạng”, dãy địa chỉ các biến);

 scanf(“%d%d”, &a, &ch);

Trang 41

 int puts(const char *st);

 int puts(const char *st);

 puts(“puts(“MechatronicsMechatronics”);”);

 int putchar(int ch);

 putchar(putchar(4848), putchar (‘), putchar (‘00’)’)

 …

Trang 42

Các hàm trình bày màn hình

 Hàm di chuyển con trỏ

 gotoxy(int x, int y);

 gotoxy(gotoxy(2020, , 1010););

 void textcolor(int newcolor);

 void textcolor(int newcolor);

 textcolor(textcolor(00); textcolor(); textcolor(1515))

 void textbackground(int color);

 textbackground(textbackground(00); textbackground(); textbackground(55););

 …

Trang 43

Ch05: Các câu lệnh điều khiển

Trang 44

No

Trang 53

case 0: printf("%d la so chan ",songuyen); break; case 1: printf("%d la so le ",songuyen); break; }

getch();

return 0;

}

Trang 60

No

Trang 61

1 Điều kiện? (Đúng→B2; Sai kết thúc)

Trang 62

return 0;

}

Trang 64

Cấu trúc trúc vòng vòng lặp lặp ((while while and do … while and do … while))

Yes

N o

Trang 66

ch = getch();

clrscr();

printf("Ky tu vua nhap: %c", ch);

} while(ch!=27);

return 0;

}

Trang 69

if (i==3) break;

} getch();

return 0;

}

Trang 70

for(i=1;i<5;i++) {

printf(“\n%d”,i);

if (i==3) break;

} printf(“j: %d”, j);

if (j==6) break;

} getch();

return 0;

}

Trang 71

if ((i%2)!=0)

continue;

printf(“\n%d”,i);

} getch();

return 0;

}

Trang 72

for(i=1;i<5;i++) {

return 0;

}

Trang 74

Hàm ((chương chương trình trình con) con)

 Khái niệm Khái niệm: : hàm là một đoạn chương trình có tên và được gọi thực hiện ở nhiều nơi trong chương trình

 Tại sao phải dùng chương trình con:

 Phân đoạn, module chương trình để thuận tiện trong

quản lý, trình bày và phát triển (“chia để trị”)

 Có công việc cần phải được thực hiện tại nhiều nơi

trong chương trình => tách công việc đó thành chương trình con

 Các loại chương trình con: Function

Trang 75

Hàm ((chương chương trình trình con) con)

<kiểu_dl> tên(kiểu_dl1 biến1,…)

void void Ve_tam_giac Ve_tam_giac(int (int n n)) float

float Can_bac_hai Can_bac_hai(float (float n n)) float

float Can_bac_hai Can_bac_hai(float (float n n)) float

float Dien_tich_h_thang Dien_tich_h_thang(int (int aa, int , int b b, int , int h h))

Trang 76

Hàm ((chương chương trình trình con) con)

printf(“\nNhap chieu dai:”);scanf(“%d”,&x);

printf(“\nNhap chieu rong:”);scanf(“%d”,&y); dientich=tich(x,y);

printf(“\nDien tich hinh chu nhat: %d”,dientich); getch();

return 0;

}

Trang 77

Hàm ((chương chương trình trình con) con)

Trang 78

 Khai Khai báo báo mảng mảng::

 Kiểu_dữ_liệu tên_các_biến[số lượng];

 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 kê 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

 Số lượng: Số phần tử của mảng

 Ví dụ

 char ten1[10], ten2[5];

 int a[12], b[6], c[8];

Trang 81

 Ví dụ

char route[20] = “7R4L6R3R4L1L2”

n = strlen(route); // get length of route

for(i=n-1; i>=0; i )

if(ch==L)

Quaytrai();

else {

for(j=0; j<(ch-48); j++)

Chaythang1vach(); {

} }

Trang 82

 Ví dụ

char route[20] = “7R4L6R3R4L1L2”

n = strlen(route); // get length of route

for(i=n-1; i>=0; i )

{

ch = route[i];

switch(ch) {

case ‘R’: Quayphai(); break; case ‘L’: Quaytrai(); break; default:

for(j=0; j<(ch-48); j++)

Chaythang1vach(); }

}

Ngày đăng: 10/02/2015, 09:55

TỪ KHÓA LIÊN QUAN

w