Tải bản đầy đủ (.doc) (93 trang)

CHƯƠNG 1 GIỚI THIỆU về IC sử DỤNG

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 (409.38 KB, 93 trang )

CHƯƠNG I:

Giới thiệu VỀ IC sử dụng

1. Vi xử lý AT89C51:
. Cấu tạo chân

Tùy theo khả năng (về kinh tế, kỹ thuật, …) mà các nhà sản xuất các sản phẩm
ứng dụng có thể chọn một trong 3 kiểu chân do ATMEL đưa ra.

2.2. Sơ đồ khối


 Mô tả sơ đồ chân : Sơ đồ chân của 8951 tương tự như 8051 (trình bày
sau ).
+ Port 0 : gồm các chân từ 32 -39 ( P0.0 đến P0.7 ) . Port này có chức
năng kép. Thông thường port này được dùng làm port I/O. Nếu có sử dụng bộ
nhớ ngoài thì Port này được dùng để multiplex giữa đòa chỉ phần thấp và data
bus.
+ Port 1 : gồm các chân từ 1 - 8 ( P1.0 - P1.7 ) . Port này chỉ có chức
năng duy nhất là giao tiếp I/O.
+ Port 2 : gồm các chân từ 22 - 28 ( P2.0-P2.7 ) . Đây cũng là port có
chức năng kép, ngoài chức năng là port I/O , port 2 còn được dùng làm đòa chỉ
phần cao cho address bus .
+ Port 3 : gồm các chân 10-17 ( P3.0-P3.7 ) . Port này cũng có chức
năng kép. Ngoài chức năng I/O, các chân port còn có các chức năng đặc biệt :
Bit
P3.0
P3.1
P3.2
P3.3


P3.4
P3.5
P3.6
P3.7

Tên
RXD
TXD
/INT0
/INT1
T0
T1
/WR
/RD

Chức năng
Dữ liệu nhận cho port nối tiếp
Dữ liệu phát cho port nối tiếp
Ngắt ngoài 0
Ngắt ngoài 1
Ngõ vào của Timer/Counter 0
Ngõ vào của Timer/Counter 1
Xung ghi bộ nhớ dữ liệu ngoài
Xung đọc bộ nhớ dữ liệu ngoài

Bảng 1-Bảng chức năng port 3
+ Chân /PSEN (Program Store Enable) : (chân 29 ) là tín hiệu tác động
mức thấp, có chức năng điều khiển truy xuất bộ nhớ ngoài, thường được nối với
chân OE của ROM ngoài. Khi thực thi chương trình thì chân /PSEN vẫn giữ ở
tích cực mức thấp.

+ Chân /EA ( External access ) : ( chân 31) thường nối lên mức cao
(+5V) hoặc mức thấp (GND). Nếu ở mức cao, vi xử lý thực hiện chương trình từ
ROM nội trong khoảng đòa chỉ thấp (4KB). Nếu ở mức thấp, chương trình thi
hành từ bộ nhớ mở rộng. Nếu /EA nối xuống mức thấp,bộ nhớ bên trong
chương trình sẽ bò cấm và chương trình thi hành từ bộ nhớ mở rộng.
+ Chân ALE ( Address Latch Enable ) : (chân 30 ) là tín hiệu dùng để
chốt đòa chỉ byte thấp vào thanh ghi bên ngoài trong nữa chu kỳ đầu bộ nhớ, ở


nữa sau chu kỳ bôï nhớ, các đường port 0 được dùng để xuất nhập dữ liệu . Các
xung nhòp của tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip.
+ Chân RST ( Reset) : Ngõ vào RST trên chân 9 là ngõ RESET của
VXL, chân này tác động ở mức cao. Khi tín hiệu này được đưa lên mức cao
( trong ít nhất 2 chu kỳ máy) các thanh ghi bên trong sẽ được nhận các giá trò
thích hợp để khởi động các hệ thống .
+ Nguồn : 8951 và 8051 hoạt động với nguồn +5V DC ( chân 40 ) và
GND ( chân 20).
+ Bộ dao động trêân chip :
XTAL1 là đầu vào và đầu ra tương ứng của
bộ khuếch đại đảo được dùng làm bộ dao
động nội on-chip. Có thể dùng thạch anh hay
bộ cộng hưởng ceramic đều được.
Để lái vi điều khiển từ nguồn xung clock bên
ngoài, XTAL2 phải được để trống trong khi
XTAL1 nối đến nguồn lái. Không có yêu cầu
gì về duty cycle nhưng phải chú ý đến thời
gian tối đa và tối thiểu của mức điện áp cao
cũng như mức điện áp thấp.
Tổ chức bộ nhớ chương trình :
AT89C51 tổ chức bộ nhớ thành những vùng

bộ nhớ riêng biệt cho chương trình và dữ liệu.
AT89C51 có 4K ROM nội và chỉ có 128
bytes bộ nhớ RAM. Tuy nhiên bộ nhớ chương
trình và bộ nhớ dữ liệu có mở rộng lên đến 64
Kbyte.
Bộ nhớ RAM nội được tổ chức 2 vùng :
Vùng RAM : gồm các bank thanh ghi có đòa chỉ từ 00H đến 1FH, RAM đòa chỉ
hoá từng bit có đòa chỉ từ 20H-2FH
Vùng RAM đa dụng : có đòa chỉ từ 30H-7FH .
+ Các thanh ghi chức năng đặc biệt có đòa chỉ từ 80H-FFH .
+ Các từ trạng thái chương trình
Bit
Ký hiệu Đòa chỉ Chức năng
PSW.7 CY
D7H
Cờ nhớ
PSW.6 AC
D6H
Cờ nhớ phụ
PSW.5 F0
D5H
Cờ 0


PSW.4 RS1
PSW.3 RS0

D4H
D3H


Bit 1 chọn thanh ghi
Bit 0 chọn thanh ghi
00:bank 0
01:bank 1
02:bank 2
03:bank 3
Cờ tràn
Dự trữ
Cờ parity chẳn

RAM đa dụng

99
98
90

8C
8B

7F
77
6F
67
5F
57
4F
47
3F
37
2F

27
1F
17
0F
07

7E
76
6E
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06

7C PSW.2
7B 7A0V79
74 PSW.1
73 72 71
PSW.0
6C 6B 6APORT
69

64 63 62 61
5C 5B 5A 59
54 53 52 51
4C 4B 4A 49
44 43 42 41
3C 3B 3A 39
34 33 32 31
2C 2B 2A 29
24 23 22 21
1C 1B 1A 19
14 13 12 11
0C 0B 0A 09
04 03 02 01
Bank 3

7D
75
6D
65
5D
55
4D
45
3D
35
2D
25
1D
15
IE

0D
05
P2
SBUFF

78 D2H
70 D1H
68 D0H
Từ
60
58
50
48
40
38
30
28
20
18
10
08
00

Bank 2
Bank 1

P1
P3

F7


F6

F5

F4

F3

F2

F1

F0

E7

E6

E5

E4 E3

E2

E1

E0

D7 D6 D5 D4 D3 D2 D1 D0

-

-

BC BB BA

B9

B8

B7 B6

B5

B4

B3

B2

B1

B0

AF -

-

AC


AB

AA A9 A8

IP

A7 A6 A5 A4 A3 A2

9F
97

96

trạng thái chương trình .

PCON
DPH
DPL
DP
P0

FF
81
80
F0

A1 A0

Không được đòa chỉ hoá bit
9E 9D 9C 9B 9A 99 98


TH1
Bank thanh ghi 0
TH0
(mặ
c đònh cho R0-R7)
TL1
TL0
TMOD
TCON

-

8F

95

94

93

92

91 90

Không được đòa chỉ hoá bit
Không được đòa chỉ hoá bit
Không được đòa chỉ hoá bit
Không được đòa chỉ hoá bit
Không được đòa chỉ hoá bit

8E 8D 8C 8B 8A 89 88
Không được đòa chỉ hoá bit

E0
D0
8A
89
88
A0
87
83
82
A8
B0
B8

87

Không được đòa chỉ hoá bit
Không được đòa chỉ hoá bit
Không được đòa chỉ hoá bit
86 85
84 83 82 81 80


Tóm tắt bộ nhớ dữ liệu trên chip.
 Các cờ nhớ :
• CY (carry flag): cờ nhớ thường dùng cho các lẹânh số học. Ngoài
ra nó còn có thể được xem như một thanh ghi 1 bit cho các lệnh
luận lý thi hành trên bit.

• AC (auxiliary carry flag): cờ nhớ phụ được sử dụng khi cộng các
số BCD.
• Flag 0 (bit F0) : cờ sử dụng chung dành cho người lập trình .
• 0V (overlow flag) : cờ tràn được set khi có 1 phép toán đang thi
hành bò tràn.
 Các thanh ghi lệnh :
• Thanh ghi A (Accumulator): thanh ghi tích luỹ.
• Thanh ghi B : là thanh ghi đệm đa dụng có đòa chỉ F0H .
• Thanh ghi SP (Stack Pointer) : đòa chỉ 81H chứa các đòa chỉ của
byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Con trỏ ngăn xếp
được truy xuất trực tiếp bằng lệnh POP và PUSH.
• Data Pointer (DPTR) : được dùng để truy xuất bộ nhớ ngoài.
DPTR là một thanh ghi 16 bit và được phân ở các đòa chỉ 82H
(DPL-byte thấp) và 83H (DPH-byte cao).
 Các thanh ghi Port :
P0 ở đòa chỉ 80H.
P1 ở đòa chỉ 90H.
P2 ở đòa chỉ A0H.
P3 ở đòa chỉ B0H.
Các thanh ghi này được đòa chỉ hoá từng bit .
 Thanh ghi timer : vi xử lý có 2 bộ timer/counter 16 bit dùng cho việc
đònh thời hoặc đếm sự kiện.
Timer 0 : gồm 2 thanh ghi TL0 (8AH) và TH0 (8CH).
Timer 1 : gồm 2 thanh ghi TL1 (8AH) và TH1 (8CH).
Việc vận hành timer được set bởi thanh ghi TMOD (89H) và thanh ghi điều
khiển TCON (88H) , thanh ghi này được đòa chỉ hoá từng bit .
TCON

Gate


C ⁄T

M1

M0

Gate

C ⁄T

M1

M0

Thanh ghi đệm SBUF : (99H) dùng để đệm data nối tiếp cho việc truyền và
nhận data.


Thanh ghi SCON : (98H) được đòa chỉ hoá từng bit, có chức năng điều
khiển port nối tiếp . Thanh ghi SCON :
SM0

SM1

SM2

REN

TB8


RB8

TI

RI

 Thanh ghi ngắt IE : có 5 nguồn ngắt, và 2 mức ưu tiên ngắt. Các ngắt
bò cấm sau khi reset hệ thống và được điều khiển, cho phép ngắt bởi thanh ghi
IP, các thanh ghi này được đòa chỉ hoá từng bit . Thanh ghi IE :
EA

_

ET2

ES

ET1

EX1

ET0

EX0

 Thanh ghi ngắt ưu tiên IP : Điều khiển mức ngắt ưu tiên bằng cách set
bit tương ứng trong thanh ghi IP .Thanh ghi này có 8 bit như sau :
_

_


PT2

PS

PT1

PX1

PT0

PX0

 Thanh ghi PCON : ở đòa chỉ 87H chứa nhiều bit điều khiển (bảng
Bit
7
6
5
4
3
2
1
0

SFR
TCON
TMOD
TL0
TL1


Ký hiệu
SMOD

Ý nghóa
Bit tăng tốc độ baud, nếu được set thì tốc độ
baud tăng gấp đôi trong các mod 1,2,3.
Không đònh nghóa
Không đònh nghóa
Không đònh nghóa
GF1
Bit cờ đa dụng 1
GF0
Bit cờ đa dụng 0
DP
Giảm công suất, được set để kích hoạt mod
giảm công suất, chỉ thoát khi reset.
IDL
Mode chờ, set để hoạt node chờ, chỉ thoát khi
reset hệ thống.
Bảng tóm tắt các bit của thanh ghi PCON.
Mục đích
Điều khiển timer
Chế độ timer
Byte thấp của timer 0
Byte thấp của timer 1

Đòa chỉ
88H
89H
8AH

8BH

Đòa chỉ hoá từng bit

Không
Không
Không


TH0
TH1

Byte cao của timer 0
Byte cao của timer 1

8CH
8DH

Không
Không

Các thanh ghi đặc biệt điều khiển truy xuất timer.
Bit
7

Ký hiệu
GATE

Timer
1


6

C/T

1

5

M1

1

4
3
2
1
0

M0
GATE
C/T
M1
M0

1
0
0
0
0


Mô tả
Bit mở cổng, khi lên 1, timer chỉ chạy khi
INT1 ở mức cao
Chọn chế độ:
1: chế độ đếm sự kiện.
0: chế độ đònh thì.
Bit1 chọn Mode hoạt động. Với M1 M0 là :
00 : mode 0.
01 : mode 1.
10 : mode 2.
11 : mode 3.
Bit0 chọn Mode hoạt động
Bit mở cổng
Bit chọn counter/timer
Bit1 chọn Mode hoạt động
Bit 0 chọn Mode hoạt động

Bảng tóm tắt thanh ghi TMOD.
Bit
IE.7
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0



hiệu
EA
-ET2
ES
ET1
EX1
ET0
EX0

Đòa chỉ bit
0AFH
0AEH
0ADH
0ACH
0ABH
0AAH
0A9H
0A8H

Mô tả(1= cho phép, 0= cấm)
Cho phép/cấm toàn bộ.
Không đònh nghóa.
Cho phép ngắt timer 2 (8052).
Cho phép ngắt port nối tiếp.
Cho phép ngắt timer1.
Cho phép ngắt ngoài1.
Cho phép ngắt timer 0.
Cho phép ngắt ngoài 0.

Tóm tắt thanh ghi IE.



Bit
TCON.7

Ký hiệu
TF1

Đòa chỉ
8FH

TCON.6

TR1

8EH

TCON.5
TCON.4
TCON.3

TF0
TR0
IE1

8DH
8CH
8BH

TCON.2


IT1

8AH

TCON. 1
TCON.0

IE0
IT0

89H
88H

Mô tả
Cờ báo tràn timer1 , đặt bởi phần cứng khi
tràn, được xoá bởi phần mềm hoặc phần
cứng khi bộ timer xử lý đến chương trình
phục vụ ngắt.
Bit cho phép timer1 chạy. Đặt xoá bởi phần
mềm khi timer chạy hoặc dừng.
Cờ báo tràn timer 0.
Bit cho phép timer 0 chạy
Cờ ngắt 1 bên ngoài, đặt bởi phần cứng khi
phát hiện cạnh xuống ở INT1, xoá bằng
phần mềm hoặc phần cứng khi timer chỉ đến
chương trình phục vụ ngắt.
Cờ kiểu ngắt 1 ngoài, được set hoặc xoá
bằng phần mềm bởi cạnh xuống hoặc mức
thấp được kích hoạt bởi sự ngắt ngoài.

Cờ ngắt bên ngoài 0.
Cờ ngắt Timer0 .

Bảng tóm tắt thanh ghi TCON.
Bit
IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1
IP.0


hiệu
--PT2
PS
PT1
PX1
PT0
PX0

Đòa chỉ bit

Mô tả(1= cho phép, 0= cấm)

---

Không đònh nghóa.

Không đònh nghóa.
Ưu tiên ngắt từ timer 2 (8052).
Ưu tiên ngắt từ port nối tiếp.
Ưu tiên ngắt từ timer1.
Ưu tiên ngắt ngoài1.
Ưu tiên ngắt từ timer 0.
Ưu tiên ngắt ngoài 0.

0BDH
0BCH
0BBH
0BAH
0B9H
0B8H

Bảng tóm tắt thanh ghi IP.
Bit
SCON.7


hiệu
SM0

Đòa chỉ bit
9FH

Mô tả(1= cho phép, 0= cấm)
Bit 0 của chế độ port nối tiếp.



SCON.6
SCON.5
SCON.4
SCON.3

SM1
SM2
REN
TB8

9EH
9DH
9CH
9BH

SCON.2

RB8

9AH

SCON.1
SCON.0

TI
RI

99H
98H


Chế độ lười

Bit 1 của chế độ port nối tiếp.
Bit 2 của chế độ port nối tiếp.
Cho phép thu .
Bit phát thứ 8, bit 9 được phát
trong Mode 2 và 3 hoặc để kiểm
tra .
Bit thu thứ 8, bit 9 thu được ở
Mode 2 và 3 hoặc để kiểm tra.
Cờ ngắt phát .
Cờ ngắt thu .

Bảng tóm tắt thanh ghi chế độ port nối tiếp.

Trong chế độ lười, CPU rơi vào trạng thái “ngủ” trong khi tất cả thiết bò ngoại
vi vẫn còn tích cực. Chế độ này được tạo ra bằng phần mềm. Nội dung của
RAM on-chip và giá trò của các SFR vẫn được giữ nguyên. Kết thúc chế độ lười
bằng cách kích hoạt một ngắt hoặc reset phần cứng.
Chú rằng khi kết thúc chế độ lười bằng cách reset phần cứng thì thông thường
vi điều khiển sẽ gọi lại chương trình mà nó vừa thoát, cho đến hai chu kỳ máy
trước khi thuật toán reset chiếm quyền điều khiển. Phần cứng cấm truy cập
RAM nội trong trường hợp này nhưng không cấm truy cập đến các chân port,
do đó có thể xảy ra những trường hợp không mong muốn. Để loại bỏ trường
hợp này, lệnh ngay sau lệnh gọi chế độ lười không nên là lệnh ghi port hay ghi
bộ nhớ ngoài.
2.8. Chế độ hạ nguồn

Trong chế độ hạ nguồn, bộ dao động ngừng, và lệnh gọi hạ nguồn là lệnh cuối
cùng được thực thi. RAM on-chip và SFR duy trì giá trò của nó cho đến khi kết

thúc chế độ hạ nguồn.
Kết thúc chế độ hạ nguồn chỉ bằng một cách duy nhất : reset phần cứng. Reset
sẽ tạo lại giá trò cho SFR nhưng không thay đổi nội dung của RAM on-chip.
Không nên reset trước khi Vcc phục hồi mức điện áp thông thường của nó và
phải giữ đủ lâu để bộ dao động phục hồi và ổn đònh.
2.9. Trạng thái của một số chân trong chế độ lười và chế độ hạ nguồn


2.10. Caực thoõng soỏ kyừ thuaọt






2. MAX 232:
Họ IC từ MAX220-MAX249 được sản xuất cho truyền thông EIA/TIA-232E và
V.28/V.24, cụ thể là cho những ứng dụng mà không có sẵn điện áp ±12V. Họ
IC này đặc biệt thích hợp cho những hệ thống dùng pin có công suất thấp, do
chúng có chế độ hạ nguồn làm giảm công suất tiêu tán xuống dưới 5µW.
MAX225, MAX233, MAX235, MAX245-MAX247 không cần các linh kiện
phụ bên ngoài, được dùng cho những nơi tiết kiệm không gian.
Các đặc điểm chính :
Nguồn cung cấp +5V (MAX231/MAX239 dùng nguồn +5V và +12V).
Hạ nguồn công suất thấp nhưng vẫn có thể nhận (MAX223/MAX242).
Hỗ trợ chuẫn EIA/TIA-232E và V.28
Nhiều bộ nhận và phát.
Phát hiện đứt mạch đường truyền (MAX243).
Cấu tạo chân
Mô tả chức năng chân

Ta thấy rằng MAX232 cần có 4 tụ ngoài (mắc vào giữa C1+ và C1-, C2+ và
C2-, V+ và nguồn dương, V- và đất để biến đổi điện áp từ 0V đến 5V thành


-12V đến +12V phù hợp cho truyền thông theo chuẩn RS-232. Ngoài ra có 4 bộ
1
2
3
4
5
6
7
8

C1+
V+
C1C2+
C2VT2OUT
R2IN

VCC
GND
T1OUT
R1IN
R1OUT
T1IN
T2IN
R2OUT

16

15
14
13
12
11
10
9

MAX232

khuếch đại đảo nhằm chuyển từ mức TTL ra chuẩn RS-232 và ngược lại.
IC 75176 : dùng để giao tiếp nối tiếp bất đồng bộ
cân bằng sử dụng áp lệch giữa hai dây ( chân số 5,6 ), có
ngõ ra 3 trạng thái.
Input

Enable

H
H
L
H
X
L
A-B
V ID ≥0.2V

− 0.2 ≤ V ID ≤0.2V

V ID ≤-0.2V


Outputs
A-B
H
L
L
H
Z
Z
L
L

out put
H
?

L

L

RE

X
H
H
7. IC 555 : Khi cấp nguồn Vcc thì vcc=0 ( điện áp trên tụ C76 ở hình dưới ),
dẫn đến bộ so sánh 1 tác động → ngõ ra RS FF ( Flip Flop )=”0”, v0 ( áp ra tại
chân số 3 ) mức cao, chân 7 cách ly, tụ C76 nạp từ Vcc qua R1, R2 tiến tới mức
Vcc. Khi vcc=2/3Vcc bộ so sánh 2 tác động → ngõ ra RS FF =”1”, v0 ở mức
thấp, transistor dẫn, v7≈0, tụ C76 xả qua R2 và chân số 7, vc giảm dần tiến tới

0.
Khi vc=1/3Vcc thì bộ so sánh 1 tác động →ngõ ra RS FF =0, v0 ở mức cao,
chân số 7 hở, tụ C76 nạp từ Vcc qua R1và R2. Quá trình cứ tiếp tục lặp đi lặp
lại tạo ra 1 chuỗi xung vuông với chu kỳ T=t1+t2, trong đó :
t1=0.693(C76)(R77+R77V) ( t1 : khoảng thời gian C76 nạp )
t2=0.693(C76)R77.
( t2 : Khoảng thời gian C76 xả )


VCC
S2
START- PULSE

5

4
Q

CV

DIS

T0

3
7

10K R77

2


GND

3

10n

GND

THR

VCC

6

C75

R

8

C76
10u

VCC

TR

R77V
10K


2
1

U6
LM555

1

GND

VCC

5 : Control Voltage

So saùnh 2

4
2

R

R

R
FF

7 : Dischar
1


Q3

Out put
Stage

3

2

1 : GND

RST
TRIG
LMC555

So saùnh 1

S

C VOL
THRES

3 : Output

VCC

5
6

GND


6 : Threshold

8

U1

R

1

8 : Vcc

OUT
DIS

3
7


CHƯƠNG II :

Đònh Dạng Và Ngăn Lỗi
I. ĐỊNH DẠNG DỮ LIỆU ( Format Data):
1) Dữ liệu dạng nhò phân:
Với loại dữ liệu kiểu nhò phân, cú pháp trong Visual Basic:
Bit 0 = BitValue * ( 2^0 )
Bit 1 = BitValue * ( 2^1 )
Bit 7 = BitValue * ( 2^7 )


2) Dữ liệu dạng Text:
Khi cần gởi một thông báo hoặc một file text.
Gởi text, chương trình sử dụng mã, mà nó ấn đònh một giá trò cho
mỗi kí tự text. Có nhiều loại mã, mã thông dụng nhất là mã ASCII
( American Standard Code for Information Exchange ), bao gồm 128 mã ứng
với 7 bit data. Bit thứ 8 nếu có sử dụng là bit 0 hoặc bit parity. Mã ANSI
( American National Standards Institute ) sử dụng 256 mã. Một loại đònh dạng
khác là sử dụng 16 bit, cho phép 65.536 kí tự khác nhau
Trong chương trìng này tôi đònh dạng ASCII text, sử dụng điều
khiển MSComm

3) ASCII Hex:
Kiểu text thì chọn chuỗi hoặc byte chứa chuỗi để phát. Nhưng ta
cũng có thể sử dụng text để phát dữ liệu nhò phân, bằng cách ấn đònh dữ liệu
dưới dạng ASCII Hex. Mỗi byte là một cặp ASCII code mà nó đại diện 2 kí
tự Hex của byte.
Khi máy tính nhận thì nó xử lý theo đònh dạng kiểu nhò phân.
Ví dụ: khi ta phát kí tự A thì máy tính sẽ phát 41H ASCII hoặc 0100
0001B.
Trong Visual Basic: A3H được viết là &HA3.Mã ASCII của “A” và
“3” là 41H, 33H.

II. NGĂN LỖI TRONG THU PHÁT DATA:
Trong thu phát nối tiếp hay song song, ta không chắn chắn được rằng
data truyền đến máy nhận luôn luôn đúng. Lỗi sẽ xuất hiện trong khi
truyền, lỗi này xuất hiện chủ yếu do nhiễu. Để đảm bảo rằng thông tin


truyền đi luôn đúng, có nhiều cách xử lý: bắt tay, bộ đệm, hỏi vòng và ngắt,
sự phản hồi ( báo cho biết đã nhận được – ACK ), kiểm tra lỗi.


1) Dùng tín hiệu bắt tay:
Với tín hiệu bắt tay, bộ phát có thể được chỉ đònh khi nào thì phát
data, và bộ nhận có thể chỉ đònh khi nào thì nhận data.
Tín hiệu bắt tay thường dùng cho phần cứng, khi ngõ vào bộ nhận ở
mức cao thì nó sẵn sàng nhận data, và bộ phát chờ tín hiệu này để phát
data. Ngõ vào bộ nhận có thể xuống mức thấp bất kỳ lúc nào, bộ phát phải
biết điều này và ngưng phát, chờ cho đến khi nó lên mức cao và phát tiếp
data còn lại.
Khi bắt tay bằng phần mềm, khi bộ nhận cần nhận data thì nó gởi
đến bộ phát một mã mà được chỉ đònh trước. Khi ngưng nhận thì nó cũng gởi
một mã để dừng.

2) Bộ đệm:
Đònh nghóa: Bộ đệm là một đơn vò của bộ nhớ được giao nhiệm vụ
tạm thời lưu giữ các thông tin, đặc biệt là trong trường hợp phải đợi cho các
bộ phận có tốc độ chậm đuổi theo kòp
Bộ đệm là một cách để bộ nhận chắc chắn rằng chúng không để mất
data khi gởi đến chúng. Và chúng cũng rất có ít cho bộ phát, khi data cần
gởi thì nó đem ra bộ đệm và xử lý các chương trình khác bên trong bộ phát.
Bộ đệm có trong phần cứng hoặc phần mềm hoặc cả hai. Trong PC
bộ đệm có cả trong phần cứng lẫn phần mềm. Khi bộ đệm phần cứng không
đủ, PC sử dụng bộ đệm mềm, bộ đệm mềm tùy thuộc vào dung lượng bộ
nhớ của PC.

3) Hỏi vòng và ngắt:
Những sự kiện xảy ra tại port nối tiếp bao gồm việc nhận và phát
data, chuyển đổi tín hiệu bắt tay, gởi và nhận thông báo lỗi. Có 2 cách để
phát hiện những sự kiện này
 Ngắt :Chương trình tự động nhảy đến một thủ tục khi phát

hiện được sự kiện xảy ra. Loại chương trình như thế gọi là
chương trình điều khiển theo sự kiện
Trong Visual Basic, sự kiện MSComm’s On Comm thực hiện chức
năng này.
 Hỏi vòng: thu/phát data tại thời điểm đònh sẵn, loại này
không dùng ngắt phần cứng. Tần số hỏi vòng tùy thuộc
vào kích thước bộ đệm và tốc độ phát data. Ví dụ khi kích


thước bộ đệm nhận là 16 byte thời gian hỏi vòng là
16byte/giây. Nó cũng có thể nhận hơn 16byte/giây nhưng
lúc đó bộ đệm hoặc bò tràn hoặc bò mất data
Hỏi vòng thường áp dụng khi lượng dữ liệu ít, và nó cũng không yêu
cầu ngắt phần cứng. Thông thường ta dùng ngắt timer của hệ thống truy cập
port.

4) ACK ( Acknowledgments )
Trong mạng kết nối nhiều thiết bò với nhau sử dụng chung một đường
truyền thì sử dụng tín hiệu ACK rất có ít. ACK thường đònh nghóa dưới dạng
byte. Để truyền thông tin cho một node nào đó thì trước tiên Master gởi
ACK đến node cần truyền, khi node nhận được ACK (của nó) thì nó báo
cho master biết rằng master có thể gởi thông tin đến cho nó. Tương tự khi
node muốn gởi thông tin đến master.

5)Kiểm tra lỗi:
Bộ nhận có thể sử dụng việc kiểm tra lỗi để đảm bảo rằng data gởi tới
luôn đúng. Cách để kiểm tra lỗi là gởi byte data thừa ( redundant data) và
kiểm tra byte lỗi ( hay byte thừa đó )
Cách đơn giản kiểm tra lỗi là dùng byte thừa, hoặc gởi 2 lần byte đó.
Bộ phát gởi mỗi thông tin 2 lần, bộ nhận phải nhận thông tin giống nhau thì

thông tin truyền đi mới đảm bảo đúng. Đương nhiên truyền theo cách này
thì mất 2 lần thời gian truyền một byte. Tuy nhiên nó rất có ít trong việc
truyền thông tin khi có sự cố đặc biệt. Phương pháp này thường ứng dụng
trong điều khiển bằng tia hồng ngoại.
Một cách khác để kiểm tra lỗi là gởi 1 byte kiểm tra lỗi theo byte data,
gọi kiểm tra Checksum. Checksum là một phép toán được thực hiện trên
biểu thức toán học và logic của một byte. Kiểm tra checksum chỉ thực hiện
trên một byte, khi truyền lượng thông tin lớn không thể dùng checksum để
kiểm tra
Một loại kiểm tra lỗi khác là CRC ( cyclic redundacy code – mã dư
tuần hoàn). Cách kiểm tra này thường dùng cho truyền lượng thông tin lớn.
Thường dùng trong Kermit, Xmodem, Ymodem và Zmodem.


CHệễNG III :
Phan Chửụng Trỡnh Chi Tieỏt
A Chửụng Trỡnh Treõn Vi Xửỷ Lyự:
MCS-51 MACRO ASSEMBLER
01/11/:2 PAGE 1

VD

DOS 8.0 (038-N) MCS-51 MACRO ASSEMBLER, V2.2
OBJECT MODULE PLACED IN VD.OBJ
ASSEMBLER INVOKED BY:
D:\MYDOCU~1\HUY\TLV\MCS51\ASM51.EXE VD.ASM

LOC OBJ

LINE


0000
1
0000 75815F
2
0003 759852
3
0006 758921
4
0009 758DFD
5
000C D28E
6
000E C2D5
7
0010 C2B5
8
0012 752F01
9
0015 120883
10
0018 120191
11
001B 120020
12
001E 80F5
13

SOURCE
ORG 0000H

MOV SP,#5FH
MOV SCON,#52H
MOV TMOD,#21H
MOV TH1,#0FDH
SETB TR1
CLR F0
CLR P3.5
MOV 2FH,#1
MAIN: LCALL N_PHIM
LCALL TTGM0
LCALL X_LED
SJMP MAIN

14 ;--------------------------------------------------------------------------0020 C0E0
15 X_LED: PUSH ACC


0022 E52F
0024 B4010F
0027 14
0028 120178
002B 120173
002E 74FE
0030 12017D
0033 120873
0036 E532
0038 B40003
003B 02004D
003E 14
003F 120178

0042 120173
0045 74FE
0047 12017D
004A 120873
004D E533
004F B40003
0052 020064
0055 14
0056 120178
0059 120173
005C 74FD
005E 12017D
0061 120873
0064 E534
0066 B40003
0069 02007B
006C 14
006D 120178
0070 120173
0073 74FB
0075 12017D
0078 120873

16 S_LED: MOV A,2FH
17
CJNE A,#1,LED1
18
DEC A
19
LCALL BCDTO7SEG

20
LCALL OUTLED
21
MOV A,#0FEH
22
LCALL C_LED
23
LCALL DELAY2MS
24 LED1: MOV A,32H
25
CJNE A,#0,XUAT1
26
JMP LED2
27 XUAT1: DEC A
28
LCALL BCDTO7SEG
29
LCALL OUTLED
30
MOV A,#0FEH
31
LCALL C_LED
32
LCALL DELAY2MS
33 LED2: MOV A,33H
34
CJNE A,#0,XUAT2
35
JMP LED3
36 XUAT2: DEC A

37
LCALL BCDTO7SEG
38
LCALL OUTLED
39
MOV A,#0FDH
40
LCALL C_LED
41
LCALL DELAY2MS
42 LED3: MOV A,34H
43
CJNE A,#0,XUAT3
44
JMP LED4
45 XUAT3: DEC A
46
LCALL BCDTO7SEG
47
LCALL OUTLED
48
MOV A,#0FBH
49
LCALL C_LED
50
LCALL DELAY2MS


MCS-51 MACRO ASSEMBLER
01/11/:2 PAGE 2


VD

LOC OBJ

LINE

SOURCE

007B E535
007D B40003
0080 020092
0083 14
0084 120178
0087 120173
008A 74F7
008C 12017D
008F 120873
0092 E536
0094 B40003
0097 0200A9
009A 14
009B 120178
009E 120173
00A1 74EF
00A3 12017D
00A6 120873
00A9 E537
00AB B40003
00AE 0200C0

00B1 14
00B2 120178
00B5 120173
00B8 74DF
00BA 12017D
00BD 120873
00C0 E538
00C2 B40003

51 LED4: MOV A,35H
52
CJNE A,#0,XUAT4
53
JMP LED5
54 XUAT4: DEC A
55
LCALL BCDTO7SEG
56
LCALL OUTLED
57
MOV A,#0F7H
58
LCALL C_LED
59
LCALL DELAY2MS
60 LED5: MOV A,36H
61
CJNE A,#0,XUAT5
62
JMP LED6

63 XUAT5: DEC A
64
LCALL BCDTO7SEG
65
LCALL OUTLED
66
MOV A,#0EFH
67
LCALL C_LED
68
LCALL DELAY2MS
69 LED6: MOV A,37H
70
CJNE A,#0,XUAT6
71
JMP LED7
72 XUAT6: DEC A
73
LCALL BCDTO7SEG
74
LCALL OUTLED
75
MOV A,#0DFH
76
LCALL C_LED
77
LCALL DELAY2MS
78 LED7: MOV A,38H
79
CJNE A,#0,XUAT7



00C5 0200D7
80
JMP LED8
00C8 14
81 XUAT7: DEC A
00C9 120178
82
LCALL BCDTO7SEG
00CC 120173
83
LCALL OUTLED
00CF 74BF
84
MOV A,#0BFH
00D1 12017D
85
LCALL C_LED
00D4 120873
86
LCALL DELAY2MS
00D7 E539
87 LED8: MOV A,39H
00D9 B40003
88
CJNE A,#0,XUAT8
00DC 0200EE
89
JMP MT_LED

00DF 14
90 XUAT8: DEC A
00E0 120178
91
LCALL BCDTO7SEG
00E3 120173
92
LCALL OUTLED
00E6 747F
93
MOV A,#07FH
00E8 12017D
94
LCALL C_LED
00EB 120873
95
LCALL DELAY2MS
96 MT_LED:
00EE E53A
97 MT1: MOV A,3AH ;nap gia tri xuat ra cot
1
00F0 120182
98
LCALL OUT_MT
00F3 74FE
99
MOV A,#0FEH ;nap gia tri chon ra cot 1
00F5 120187
100
LCALL C_MT1

00F8 120873
101
LCALL DELAY2MS
00FB E53B
102
MOV A,03BH ;nap gia tri xuat ra cot 2
00FD 120182
103
LCALL OUT_MT
0100 74FD
104
MOV A,#0FDH ;nap gia tri chon ra cot 2
0102 120187
105
LCALL C_MT1
MCS-51 MACRO ASSEMBLER VD
01/11/:2 PAGE 3
LOC OBJ
LINE SOURCE
0105 120873
0108 E53C
010A 120182
010D 74FB

106
107
108
109

LCALL DELAY2MS

MOV A,03CH ;nap gia tri xuat ra cot 3
LCALL OUT_MT
MOV A,#0FBH ;nap gia tri chon ra cot 3


010F 120187
0112 120873
0115 E53D
0117 120182
011A 74F7
011C 120187
011F 120873
0122 E53E
0124 120182
0127 E5EF
0129 120187
012C 120873
012F E53F
0131 120182
0134 74FE
0136 12018C
0139 120873
013C E540
013E 120182
0141 74FD
0143 12018C
0146 120873
0149 E541
014B 120182
014E 74FB

0150 12018C
0153 120873
0156 E542
0158 120182
015B 74F7
015D 12018C
0160 120873
0163 E543
0165 120182
0168 74EF

110
LCALL C_MT1
111
LCALL DELAY2MS
112
MOV A,3DH ;nap gia tri xuat ra cot 4
113
LCALL OUT_MT
114
MOV A,#0F7H ;nap gia tri chon ra cot 4
115
LCALL C_MT1
116
LCALL DELAY2MS
117
MOV A,3EH ;nap gia tri xuat ra cot 5
118
LCALL OUT_MT
119

MOV A,0EFH ;nap gia tri chon ra cot 5
120
LCALL C_MT1
121
LCALL DELAY2MS
122 MT2: MOV A,3FH ;nap gia tri xuat ra cot 1
123
LCALL OUT_MT
124
MOV A,#0FEH ;nap gia tri chon ra cot 1
125
LCALL C_MT2
126
LCALL DELAY2MS
127
MOV A,40H ;nap gia tri xuat ra cot 2
128
LCALL OUT_MT
129
MOV A,#0FDH ;nap gia tri chon ra cot 2
130
LCALL C_MT2
131
LCALL DELAY2MS
132
MOV A,41H ;nap gia tri xuat ra cot 3
133
LCALL OUT_MT
134
MOV A,#0FBH ;nap gia tri chon ra cot 3

135
LCALL C_MT2
136
LCALL DELAY2MS
137
MOV A,42H ;nap gia tri xuat ra cot 4
138
LCALL OUT_MT
139
MOV A,#0F7H ;nap gia tri chon ra cot 4
140
LCALL C_MT2
141
LCALL DELAY2MS
142
MOV A,43H ;nap gia tri xuat ra cot 5
143
LCALL OUT_MT
144
MOV A,#0EFH ;nap gia tri chon ra cot 5


×