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

GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 - CHƯƠNG I pdf

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 (85.58 KB, 6 trang )

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051


Biên soạn: Nguyễn Bá Thuận Page 1 of 6

CHƯƠNG 1: NGÔN NGỮ C CHO HỌ VI ĐIỀU KHIỂN 8051

1.1.C

u
trúc m

t ch
ư
ơ
ng trình:
//Đính

kèm

các

file

#include

<file.h>

#include

<file.c>



//Khai

báo

bi
ế
n

toàn

c

c
unsigned

char

x,y;

int

z;

long

n=0;

//Khai


báo



đ

nh

ngh
ĩ
a

các

hàm
void

Hàm1(void)

{

…//Các

câu

l

nh

}


void

Hàm2(unsigned

char

x)

{

…//Các

câu

l

nh

}

//Hàm

chính

b

t

bu


c

ch
ươ
ng

trình

nào

c
ũ
ng

ph

i


void

main(void)

{

…//Các

câu


l

nh

}

Các

câu

l

nh

trong

hàm

chính



th




l

i


g

i

các

hàm

đ
ã

khai

báo



trên

ho

c

không

Khi




l

i

g

i

hàm

nào

thì

ch
ươ
ng

trình

nh

y

đ
ế
n

hàm


đ
ó

th

c

hi

n

hàm

đ
ó

xong

con
tr


l

i

quay

v



ch
ươ
ng

trình

chính(hàm

main)

th

c

hi

n

ti
ế
p

các

hàm

ho

c


câu

l

nh.

Các

câu

l

nh

trong

C

k
ế
t

thúc

b

ng

d


u

“;”

Các

l

i

gi

i

thích

đ
ượ
c

đ

t

trong

d

u:


M


đ

u

b

ng

“/*”

k
ế
t

thúc

b

ng

“*/”
N
ế
u

l


i

gi

i

thích

trên

1

dòng

thì



th


dùng

d

u:

“//”


Khi

l

p

trình

nên

gi

i

thích

các

câu

l

nh

kh

i

l


nh

làm



đ


v


sau

khi

ch
ươ
ng

trình
l

n

d


s


a

l

i.

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051


Biên soạn: Nguyễn Bá Thuận Page 2 of 6
2.2.Các lo

i bi
ế
n trong C:

D

n
g

b
i
ế
n

S


B

it

S


B
y
t
e

M
i

n

g
i
á

t
r


c
h
a
r

8


1

-
128

đ
ế
n

+
127

un
s
i
g
n
e
d

c
h
ar

8

1

0
đ

ế
n 255

s
h
o
r
t

16

2

-
32
,
768

đ
ế
n

+
3
2
,
767

un
s

i
g
n
e
d

s
h
o
r
t

16

2

0

đ
ế
n

65
,
535

i
n
t


16

2

-32,768
đ
ế
n +32,767

un
s
i
g
n
e
d

i
n
t

16

2

0

đ
ế
n


65
,
535

long 32 4
-2,147,483,648
đ
ế
n+2,147,483,647
un
s
i
g
n
e
d

l
o
n
g

32

4

0

đ

ế
n

4
,
2
94
,
69
7
,
295


Khai báo bi
ế
n
C

u

trúc

:

Ki

u

bi

ế
n

Tên

bi
ế
n

VD:

unsigned

char

x;

Khi

khai

báo

bi
ế
n



th



gán

luôn

cho

bi
ế
n

giá

tr


ban

đ

u.
VD

:

Thay

vì:


unsigned

char

x;

x=0;

Ta

ch


c

n

:

unsigned

char

x=0;



th



khai

báo

nhi

u

bi
ế
n

cùng

m

t

ki

u

m

t

lúc

VD:


unsigned

int

x,y,z;

Ngoài

ra

đ


dùng

cho

vi

đ
i

u

khi

n

trình


d

ch

chuyên

d

ng

còn

h


tr


các

lo

i

bi
ế
n
sau:

D


n
g

b
i
ế
n

S


B
i
t

S


B
y
t
e

M
i

n

g

i
á

t
r


b
it

1

0

0

;

1

s
b
it

1

0

0


;

1

sfr

8

1

0

đ
ế
n

255

sf16

16

2

0

đ
ế
n


65,535


Ngoài

ra

,chúng

ta



th


đ

nh

nghĩa

bi
ế
n

ki

u


bít

hay

ki

u

SFR

(special

function register)

Bit

Kiemtra; Sfr

P10=0x90; VD:

Bit

Kiemtra; Sfr

P10=0x90;

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051


Biên soạn: Nguyễn Bá Thuận Page 3 of 6

Các

SFR

không

c

n

ph

i

h

c

thu

c

ch


c

n

bi

ế
t,



chúng

đ
ượ
c

khai

báo

trong

th
ư

vi

n

AT89X51.H



AT89X52.H


2.3.Hàm trong C:
Hàm

trong

C



c

u

trúc

nh
ư

sau



2

lo

i

hàm


Hàm

tr


l

i

giá

tr

:

C

u

trúc:

Ki

u

giá

tr



hàm

tr


l

ii

Tên

hàm

(Bi
ế
n

truy

n

vào

hàm)

{

//

Các


l

nh

x






đ
ây

}

VD

:

unsigned

char

Cong(unsigned

char

x,


unsigned

char

y)

{

//

Các

l

nh

x






đ
ây

}

Hàm


không

tr


l

i

giá

tr


C

u

trúc:

void

Tên

hàm

(Bi
ế
n


truy

n

vào

hàm)

{

//

Các

câu

l

nh

x






đ
ây


}


VD:

void

Cong(unsigned

char

x,

unsigned

char

y)

{

//

Các

câu

l


nh

x






đ
ây

}

Hàm



th


truy

n

vào

bi
ế
n


ho

c

không

VD

Hàm

không



bi
ế
n

truy

n

vào:

unsigned

char

Tênhàm(void)


{

//

Các

câu

l

nh

x






đ
ây

}

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051


Biên soạn: Nguyễn Bá Thuận Page 4 of 6
Hàm




bi
ế
n

truy

n

vào:

void

Tênhàm(unsigned

char

x)

{

//

Các

câu

l


nh

x






đ
ây

}

S


bi
ế
n

truy

n

vào

tùy


ý(mi

n

đủ

b


nh

),

ng
ă
n

cách

b

i

d

u

“,”



d

:


Void

TênHàm(unsigned

char

x,

unsigned

char

y,

unsigned

char

z)

{

//

Các


câu

l

nh

x






đ
ây

}

Ngoài

ra

riêng

cho

vi

đ

i

u

khi

n

ph

n

ph

m

Keil

C

còn



m

t

lo


i

hàm

đ
ó



hàm ng

t:

C

u

trúc:

Void

Tênhàm(void)

interrupt

ngu

nng

t


using

b
ă
ngthanhghi

{

}

Hàm

ng

t

không

đ
ượ
c

phép

tr


l


i

giá

tr


hay

truy

n

tham

bi
ế
n

vào

hàm.
Tên

hàm

b

t




Interrupt



t


khóa

ch


hàm

ng

t

Ngu

n

ng

t

t



0

t

i

5

theo

b

ng

vector

ng

t
Interrupt Flag Vector Address
System Reset RST 0000H
External 0 IE 0 0003H
Timer 0 TF 0 000BH
External 1 IE 1 0013H
Timer 1 TF 1 001BH
Serial Port R1 or T1 0023H
Timer 2 TF2 or EXF2 002BH

Không


tính

ng

t

reset

h


th

ng

b

t

đ

u

đ
ế
m

t



ng

t

ngoài

0

B
ă
ng

thanh

ghi

trên

ram

ch

n

t


0


đ
ế
n

3

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051


Biên soạn: Nguyễn Bá Thuận Page 5 of 6
2.4.Các toán t

c
ơ
b

n:
Phép gán
:

=

V
D
:

x
=
y;


//

x

p
h

i

l
à

bi
ế
n

y



th




bi
ế
n

ho


c

giá

tr


nh
ư
ng

ph

i

phù

h

p

ki

u

Phép

c


ng:

+
Phép

tr

:

-
Phép

nhân:

*
Phép

chia:

/

Các

toán

t


logic:


B

ng

:

== And:

&& Or:

||

Not:

!

D

ch

trái:

<< D

ch

Ph

i:


>>

2.5.Các c

u trúc l

nh r

nhánh, ki

m tra th
ư

ng dùng:
Câu

l

nh

r


nhánh

if:

C

u


trúc:

if

(Đi

uki

n)

{

//

Các

câu

l

nh

x




}


Gi

i

thích:

N
ế
u

Đi

uki

n

đ
úng

thì

x




các

câu


l

nh

bên

trong

còn

sai

thì

nh

y qua

Câu

l

nh

l

a

ch


n

switch:

C

u

trúc:

switch(Bi
ế
n)

{

case

giatr

1:

{

//

Các

câu


l

nh

break;

}
case

giatr

2:

{

//

Các

câu

l

nh

break;

}
case


giatr

3:

{

//

Các

câu

l

nh

break;

}



case

giatr

n:

{


//

Các

câu

l

nh

break;

}

}

Giải thích: tùy vào biến có giatri1 thì thực hiện các câu lệnh sau đó tương ứng rồi thoát
khỏi cấu trúc nhờ lệnh break.
Câu

l

nh

vòng

l

p


xác

đ

nh

for:

C

u

trúc:

for(

n=m;

n<l;

n++)

{//

Các

câu

l


nh

x




}
Gi

i

thích:

Trong

đ
ó

m,l



giá

tr


(m>l),


còn

n



bi
ế
n

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051


Biên soạn: Nguyễn Bá Thuận Page 6 of 6
Th

c

hi

n

l

p

các

câu


l

nh

(l-m)

l

n

Câu

l

nh

vòng

l

p

không

xác

đ

nh


while:
C

u

trúc:

While(

Đi

u

ki

n)

{

//Các

câu

l

nh

}

Gi


i

thích:

Th

c

hi

n

l

p

các

câu

l

nh

khi

đ
i


u

ki

n

đ
úng,

n
ế
u

câu

l

nh

sai

thi

thoát

kh

i vòng

l


p

2.6. B

ti

n x

lý:
#define

:

Dùng

đ


đ

nh

nghĩa.



d

:


#define

dung

1

#define

sai

0



nghĩa



dung



giá

tr


b


ng

1.

Trong

ch
ươ
ng

trình



th




đ
o

n

code

nh
ư

sau:


bit

kiemtra

if

(bit==dung)

{

//

Các

câu

l

nh}

if

(bit==sai)

{

//

Các


câu

l

nh}

Vi

c

này

giúp

l

p

trình

d


s

a

l


i

h
ơ
n














×