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

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 (93.62 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















×