L P TRÌNH H TH NG NHÚNGBÙI QU C B OVi ñi u khi n 8051BM K Thu t .i n T - .H Bách Khoa TP.HCM21.Vi ñi u khi n 8051BM K Thu t .i n T - .H Bách Khoa TP.HCM3Ph n m mKEIL PROTEUSBM K Thu t .i n T - .H Bách Khoa TP.HCM42.C u trúc b nh - Pdf 12

1
BÙI QUỐC BẢO
LẬP TRÌNH HỆ THỐNG
NHÚNG
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
2
Vi ñiều khiển 8051
2
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
3
Vi ñiều khiển 8051
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
4
Phần mềm

KEIL

PROTEUS
3
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
5
Cấu trúc bộ nhớ của 8051
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
6
4
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
7
Cấu trúc bộ nhớ của 8051

8051 có 3 vùng nhớ riêng biệt (bộ nhớ
chương trình, bộ nhớ dữ liệu trong, bộ

Không gian bộ nhớ dữ liệu nội

Vùng nhớ nội truy xuất trực tiếp (00H-7FH) ñược ký
hiệu là data

Lệnh assembly: MOV A, 7FH

Vùng nhớ nội truy xuất gián tiếp (00H-FFH), ñược ký
hiệu idata

Lệnh assembly:

MOV R0, #80H

MOV A, @R0

Hai vùng nhớ này dùng ñể chứa các biến thường
dùng và biến tạm

VD: khai báo một biến integer:

idata unsigned int temp;
6
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
11
Không gian bộ nhớ dữ liệu ngoài

ðược gọi là external data space (xdata)

Lnh assembly:


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ỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
14
Các kiêủ thông dụng
0 to 4,294,697,295
432unsigned long
-2,147,483,648 to 2,147,483,647
432long
0 to 65,535216unsigned int
-32,768 to +32,767216int
0 to 65,535216unsigned short
-32,768 to +32,767216short
-32,768 to +32,767
216enum
0 to 255 18unsigned char
-128 to +12718char
RangeBytesBitsType
8
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
15


8051 có các lệnh tác ñộng ñến bit. ðể
tác ñộng ñến bit trong thanh ghi ta dùng
khai báo sbit

sbit name = sfr-name ^ bit-position;

sbit name = sfr-address ^ bit-position;
sbit name = sbit-address;
10
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
19
Tác ñộng ñến bit trong SFR

sfr PSW = 0xD0;

sbit CY = PSW^7;

sbit CY = 0xD0^7;

sbit CY = 0xD7;
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
20
Tác ñộng ñến bit trong SFR

sfr char P0 = 0x80;

sbit SW = P0^0;

void main(void)

{
flag = 1;
}
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
22

Lưu ý:

Các khai báo code, idata, xdata, bdata,
sfr, sbit là ñặc biệt cho trường hợp lập
trình 8051.
12
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
23

VD:

Viết chương trình cho 8051 tạo hàm như
sau:

P1.0 = P1.1 AND P1.2
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
24
Cấu trúc vòng lặp vô tận (endless
loop)
void main(void)
{
Task1_init();
Task2_init();
While(1)


Tiêu tốn năng lượng vì CPU hoạt ñộng ở
chế ñộ bình thường trong toàn bộ thời gian
14
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
27
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ỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
28
15
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
29
Question

ðịa chỉ của LED 7 ñoạn là bao nhiêu?

ðể làm LED hiển thị số 8, ta dùng lệnh
cho 8051 như thế nào? (dùng assembly
và C)

Just a bounce
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
32
Giao tiếp switch
Với 8051,
trước khi ñọc
switch ta phải
ghi “1” ra bộ
chốt của chân
port ñang giao
tiếp switch
17
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
33

Viết chương trình C ñọc giá trị switch (có
chống rung) và xuất ra LED.
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
34
Giao tiếp keypad
18
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
35
Giao tiếp keypad

Chương trình getkey():

Giá trị trả về: mã phím (0-15) hoặc 255
nếu không có phím nhấn.


39
Giao tiếp keypad

Viết chương trình getCalKey_Debound():

Giá trị trả về là 1 trong các ký tự:

‘0’, ‘1’, ‘2’, ’3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘C’,
‘=‘, ‘+’, ‘-’, ‘x’, ‘/’ hoặc ‘N’ nếu không có
phím ñược nhấn
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
40
Hàm printf()

Hàm printf() rất có ích trong quá trình viết và
debug chương trình.

Mặc ñịnh, hàm printf xuất 1 chuỗi ký tự ra
serial port của 8051

Cấu trúc:

int printf ( const char * format, );

Chi tiết tham khảo tại:

/>tdio/printf/
21
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
41


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status