8051 Week2

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

LP TRNH H THNG

NHNG

BI QUC BO

Vi iu khin 8051

BM K Thut in T - H Bch Khoa TP.HCM

Vi iu khin 8051

BM K Thut in T - H Bch Khoa TP.HCM

Phn mm
KEIL
 PROTEUS


BM K Thut in T - H Bch Khoa TP.HCM

Cu trc b nh ca 8051

BM K Thut in T - H Bch Khoa TP.HCM

BM K Thut in T - H Bch Khoa TP.HCM

Cu trc b nh ca 8051
8051 c 3 vng nh ring bit (b nh
chng trnh, b nh d liu trong, b
nh d liu ngoi). Mi vng nh c
truy cp bng cc cu lnh khc nhau.
 Khi khai bo cc bin, ta phi xc nh
vng nh cho cc bin .


BM K Thut in T - H Bch Khoa TP.HCM

Cu trc b nh ca ARM7
LPC2000
Cc vi x l c kin trc VonNewman (VD: ARM) dng
chung 1 khng gian nh cho
b nh chng trnh v d
liu.

BM K Thut in T - H Bch Khoa TP.HCM

Khng gian b nh chng trnh


c gi l code space
 Cha chng trnh v cc hng s
 VD: khai bo hng s cha bnh phng
cc s t 0 n 3:


code char square[4] = {0,1,4,9};




Lnh assembly: MOVC A, @A+DPTR

BM K Thut in T - H Bch Khoa TP.HCM

Khng gian b nh d liu ni




Vng nh ni truy xut trc tip (00H-7FH) c k


hiu l data


Lnh assembly: MOV A, 7FH

Vng nh ni truy xut gin tip (00H-FFH), c k


hiu idata


Lnh assembly:






MOV
MOV

R0, #80H
A, @R0

Hai vng nh ny dng cha cc bin thng


dng v bin tm
VD: khai bo mt bin integer:


idata unsigned int temp;

BM K Thut in T - H Bch Khoa TP.HCM

10

Khng gian b nh d liu ngoi





c gi l external data space (xdata)


Lnh assembly:






MOV
DPTR, #2000H
MOVX A,@DPTR

Cha cc bin t dng, cc khi d liu ln


hoc ngoi vi theo kiu memory-mapped
VD:


xdata unsigned int[1000] ADC_value;

BM K Thut in T - H Bch Khoa TP.HCM

11

VD:
 Vit hm c prototype nh sau:
unsigned int checksum (unsigned int
start, unsigned int end)
tnh checksum ca vng nh
ch*+ng trnh t a ch start n end
(code)


BM K Thut in T - H Bch Khoa TP.HCM

12

unsigned int checksum (unsigned int start, unsigned int end)


 {

unsigned int code *codeptr, *codeend;

unsigned int data checksum = 0;


codeptr = (unsigned int code *)start;


codeend = (unsigned int code *)end;




while (codeptr <= codeend)


{
checksum = checksum + (unsigned int data)*codeptr;
codeptr++; /* go to the next address */
}
return (checksum);








BM K Thut in T - H Bch Khoa TP.HCM

13

Cc ki thng dng
Type

Bits

Bytes

Range

char

-128 to +127

unsigned char

0 to 255

enum

16

-32,768 to +32,767

short

16

-32,768 to +32,767

unsigned short

16

0 to 65,535

int

16

-32,768 to +32,767

unsigned int

16

0 to 65,535

long

32

-2,147,483,648 to 2,147,483,647

unsigned long

32

0 to 4,294,697,295

BM K Thut in T - H Bch Khoa TP.HCM

14

Ki float v double


Trong C51, kiu float v double ging


nhau, gm 4 byte theo chun EEE-754

BM K Thut in T - H Bch Khoa TP.HCM

15

Cc kiu c bit ca C51


Type

Bits

Bytes

Range

bit

0 or 1

sbit

0 or 1

sfr

0 to 255

sf16

16

0 to 65,535

BM K Thut in T - H Bch Khoa TP.HCM

16

Thanh ghi
Keil cho php khai bo cc thanh ghi
bng t kha sfr
 VD:


sfr P0 = 0x80;

P0 = 0x0F;

//khai bo thanh ghi P0


//a ch 80H

BM K Thut in T - H Bch Khoa TP.HCM

17

Tc ng n bit trong SFR


8051 c cc lnh tc ng n bit.
tc ng n bit trong thanh ghi ta dng
khai bo sbit
 sbit name = sfr-name ^ bit-position;
 sbit name = sfr-address ^ bit-position;
sbit name = sbit-address;


BM K Thut in T - H Bch Khoa TP.HCM

18

Tc ng n bit trong SFR


sfr PSW = 0xD0;
 sbit CY = PSW^7;
 sbit CY = 0xD0^7;
 sbit CY = 0xD7;


BM K Thut in T - H Bch Khoa TP.HCM

19

Tc ng n bit trong SFR












sfr char P0 = 0x80;


sbit SW = P0^0;
void main(void)
{
while(1)
{
SW = !SW;
}
}

a ch ca cc bin sfr,
sfr16, sbit phi nm bn
ngoi hm.

BM K Thut in T - H Bch Khoa TP.HCM

20

10

Vng nh c nh a ch bit







8051 c vng nh c nh a ch bit.


tc ng n vng nh ny ta dng khai bo
bdata
bdata
char temp _at_ 0x2F;
bit flag = temp ^0;
void main(void)
{
flag = 1;
}
BM K Thut in T - H Bch Khoa TP.HCM

21

Lu :
 Cc khai bo code, idata, xdata, bdata,
sfr, sbit l c bit cho trng hp lp
trnh 8051.


BM K Thut in T - H Bch Khoa TP.HCM

22

11

VD:
 Vit chng trnh cho 8051 to hm nh
sau:
 P1.0 = P1.1 AND P1.2


BM K Thut in T - H Bch Khoa TP.HCM

23

Cu trc vng lp v tn (endless


loop)
void main(void)
{
Task1_init();
Task2_init();
While(1) //m/t vng l2p v t4n th5c hin task1 v task2
{
Task1();
Task2();
}

}
BM K Thut in T - H Bch Khoa TP.HCM

24

12

Endless loop


u im:
n gin.
 D thc hin, sa li v bo tr
 Khng cn s dng nhiu ti nguyn h
thng (VD: timer)
 D dng thay i chy vi cc vi x l
khc (portable)


BM K Thut in T - H Bch Khoa TP.HCM

25

Endless loop


Nhc im:
Khng ph hp vi cc ng dng i hi
thi gian chnh xc (VD: ng h s).
 Tiu tn nng lng v CPU hot ng
ch bnh thng trong ton b thi gian


BM K Thut in T - H Bch Khoa TP.HCM

26

13

Look-up table
unsigned char code
square[]={0,1,4,9,16,25,36,49,64,81};
unsigned char cal_square(unsigned char num)
{
return square[num];
}
Assembly:
MOV
A,R7
MOV
DPTR, #SQUARE
MOVC
A,@A+DPTR
MOV
R7,A
BM K Thut in T - H Bch Khoa TP.HCM

27

BM K Thut in T - H Bch Khoa TP.HCM

28

14

Question
a ch ca LED 7 on l bao nhiu?
 lm LED hin th s 8, ta dng lnh
cho 8051 nh th no? (dng assembly
v C)
 Xy dng bng m 7 on cho LED (cho
cc s ln hn 9 tt tt c on LED).
 Vit chng trnh C c gi tr t 4 SW
v hin th ln LCD. (Dng bng tra
ly m 7 on).


BM K Thut in T - H Bch Khoa TP.HCM

29

Giao tip switch


Switch l 1 trong nhng phng php
giao tip chnh ca h thng nhng
 Cc contact c kh s b rung khi ng
hoc m.


BM K Thut in T - H Bch Khoa TP.HCM

30

15

Chng rung

delay

Not pressed

Press
detected

Read again
Confirmed

delay
Press
detected

BM K Thut in T - H Bch Khoa TP.HCM

Read again
Just a bounce

31

Giao tip switch


Vi 8051,
trc khi c
switch ta phi
ghi 1 ra b
cht ca chn
port ang giao
tip switch

BM K Thut in T - H Bch Khoa TP.HCM

32

16

Vit chng trnh C c gi tr switch (c


chng rung) v xut ra LED.

BM K Thut in T - H Bch Khoa TP.HCM

33

Giao tip keypad

BM K Thut in T - H Bch Khoa TP.HCM

34

17

Giao tip keypad


Chng trnh getkey():
 Gi tr tr v: m phm (0-15) hoc 255
nu khng c phm nhn.


V lu
 Vit code C


BM K Thut in T - H Bch Khoa TP.HCM

35

Giao tip keypad


Chng trnh getkey_Debound()
 Gi tr tr v: m phm (0-15) hoc 255
nu khng c phm nhn.
 Cch thc hin:
 Nu trong 20 ln lin tip gi chng
trnh getkey() tr v cng 1 gi tr, th
l gi tr tr v ca getkey_Debound().


BM K Thut in T - H Bch Khoa TP.HCM

36

18

Giao tip keypad


V lu cho chng trnh
getkey_Debound()
 Vit code C


BM K Thut in T - H Bch Khoa TP.HCM

37

BM K Thut in T - H Bch Khoa TP.HCM

38

19

Giao tip keypad


Vit chng trnh getCalKey_Debound():
 Gi tr tr v l 1 trong cc k t:
 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, C,
=, +, -, x, / hoc N nu khng c
phm c nhn


BM K Thut in T - H Bch Khoa TP.HCM

39

Hm printf()







Hm printf() rt c ch trong qu trnh vit v


debug chng trnh.
Mc nh, hm printf xut 1 chui k t ra
serial port ca 8051
Cu trc:
int printf ( const char * format, ... );
Chi tit tham kho ti:
http://www.cplusplus.com/reference/clibrary/cs
tdio/printf/
BM K Thut in T - H Bch Khoa TP.HCM

40

20

Th vin ca Keil C
Keil C h tr rt nhiu th vin nh th
vin xut nhp (stdio), ton (math),
 Cc th vin v hm ca Keil C c th
tham kho ti:
http://www.keil.com/support/man/docs/c5
1/c51_library.htm


BM K Thut in T - H Bch Khoa TP.HCM

41

21

You might also like