You are on page 1of 107

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG Đ ẠI HỌC K Ỹ TH UẬT CÔNG NGHỆ TP. H CM


KHOA Đ IỆN TỬ V IỄN THÔNG

LUẬN VĂN TỐT NGHIỆP

MẠCH ĐẾM SAN p h ẩ m


GIAO TIẾP VỚI MÁY TÍNH

GVHD : ThS. PH Ạ M HÙNG K IM KHÁNH


SVTH : N G U YỄN MINH THẮNG
MSSV : 00DD T121
LỚ P : 00DDT01

TP.HCM ,1/2005 __ ỉ
Luận văn tốt nghiệp

HOIh «ICH
MỤC LỤC
Trang

PHẦN I : DẪN NHẬP

— »01— *c«—
I. ĐẶT VẤN Đ Ề ........................................................... 1

II. MỤC ĐÍCH ĐỀ TÀI................................................ 1

— NOI—
III. PHƯƠNG ÁN THIẾT K Ế ...................................... 2
1. Dùng IC rời..................................................................... 2

— ««— »01— »0*—


2. Dùng vi điều khiển....................................................... 2

IV . GIỚI HẠN CỦA ĐỀ T À I....................................... 3

— >01— K«—
V . HƯỚNG PHÁT TRIỂN CỦA ĐE T À I.................... 3

PHẦN II: LÝ THUYẾT

— Id— »Oí— »I—


CHƯƠNG I : G IỚ I T H IỆ U V I Đ IÊ U K H IÊ N 8 9 C 5 1 4

1.1. TÓM TẮT PHẦN CỨNG......................................................................... 4


1. Mô tả............................................................................................................. 4

— K#-HKH-=*0r HM hH M hH M h-KI— ÍC*-HOh -401--4C#— »0*— 10«—


2. Sơ đồ khối..................................................................................................... 4
3. Sơ đồ chân .................................................................................................... 6
4. Chức năng từng chân.................................................................................. 6
5. Tổ chức bộ nhớ............................................................................................ 9
6. Các thanh ghi chức năng đặc b iệt............................................................11
7. Bộ nhớ n goài.............................................................................................. 16
8. Hoạt động re se t..........................................................................................18
1.2. HOẠT ĐỘNG ĐỊNH THỜI ....................................................................19
1. Thanh ghi chế độ định thời TM O D ........................................................20
2. Thanh ghi điều khiển định thời TCON ................................................. 21
3. Các chế độ định thời và cờ tràn ..............................................................22

1.3. PORT NỐI TIẾP .......................................................................................27


1. Giới thiệu .................................................................................................... 27
2. Thanh ghi điều khiển port nối tiếp ........................................................ 28

Mạch đếm sản phẩm giao tiếp PC


Luận vã/1 tôí nghiệp

ì 3. Khởi đông và truy xuất các thanh ghi cổng nối tiếp ..........................30 I
ệ 4. Tốc độ baud port nối tiếp....................................................................... 30 I
1 1.4. HOẠT ĐỘNG NGAT ...............................................................................32 1
I 1. Tổ chức ngắt ................................................ 32 ệ
I 2. Xử lý ngắt ............................................................................................ 33 ị
Ị 3. Các ngắt của 89C51 .............................................................................34 ị
ị 1.5. TÓM TẮT TẬP LỆNH ........................................................................... 35 ị
I 1. Các kiểu định địa chỉ ...........................................................................33 ệ
I 2. Các loại lệnh.......................................................................................... 39 ệ
: CHƯƠNG I I : G IA O T I Ế P V Ớ I M Á Y T ÍN H 45 ị

ĩn .1. GIỚI THIỆU CỔNG NỐI TIẾP RS232 45 I

Ị II.2 . GIỚI THIỆU VI MẠCH MAX232 46 ị


I II.3 . Sơ ĐỒ K ẾT NỐI CỔNG COM VỚI 89C51 47 1

I P H Ầ N IIIĩT H IÊ T K Ê V À T H I C Ô N G M Ạ C H ị

ĩ CHƯƠNG I : T H IẾ T K Ế PH Ầ N CỨNG 48 ị

Ị l I I .l . Sơ Đ ồ K H Ố I........................................................................................... 48 ị
I III.2. Sơ Đ ồ NGUYÊN L Ý ............................................................................ 49 I
* III.3. TÍNH TOÁN THIẾT K Ế ......................................................................50 Ị
- * / h - # * - - # * - - * * - - * * - - * * - HO- -» S i'-* * - - * * -

1. Khôi cảm biến.......................................................................................^0 ậ


2. Khối hiển thị ........................................................................................ 51 ị
3. Khối điều khiển động c ơ ...................................................................... -*2 I
CHƯƠNG 1 : CHƯƠNG T R ÌN H Đ IỀ U K H IỂ N 54 1

I I .1 . GIẢI THUÂT CHƯƠNG TRÌNH 54 ị


-

1. Giải thuật chương trình chính............................................................. Ỷ


r

„ _ , ^ v. 55 f
f

2. Chương trình ngắt ngoài .....................................................................ệ


K

3. Chương trình đếm kênh 1 ......................................................................56 ị


;- 4 * - - # * - -# * > HK4- H

4. Chương trình đếm kênh 2 ......................................................................57 ị


5. Chương trình đếm kênh 3 ......................................................................58 ậ

Mạch đếm sản phẩm giao tiếp PC


Luận văn tốt nghiệp

'
6. Chương trình đếm kênh 4 ..........................................................................59 ị
'* * ■

7. Chương trình cài đ ặ t.................................................................................. 60 I


***"

8. Chương trình cài đặt kênh 1 .....................................................................61 ệ


9. Chương trình cài đặt kênh 2 .....................................................................62 ệ
10. Chương trình cài đặt kênh 3 ...................................................................63 ị
11. Chương trình cài đặt kênh 4 ...................................................................64 ị
12. Chương trình so sánh kênh 1 ................................................................ 65 ệ
13. Chương trình so sánh kênh 2 ................................................................ 66 ậ
- * t - - * 0 r -**= - - m ~ - M - - « í - - * * - - 4 « - HK*- - tc t- - * * - - * * - - M > -=w» « w - « * * - - K í - - * * - - # * - - # * - - # * - - * * - - * * - - * * - -40«- - * * - - * * - - * * - - * * - - * * - - * * - -#*■ - * * - - * * - “ X ** ■ * ** - * * • ** *■

14. Chương trình so sánh kênh 3 ................................................................ 67 Ị


15. Chương trình so sánh kênh 4 ................................................................ 68 ị
16. Chương trình kiểm dữ liệu nhận ......................................................... 69 ậ
11.1. CHƯƠNG TRÌNH PHAN MEM CHO VI ĐIÊU KHIÊN 70 Ị

CHƯƠNG I : CHƯƠNG TRÌNH GIAO T IẾ P 97




111.1. GIẢI THUẬT CHƯƠNG TRÌNH ....................................................98 ị
1. Chương trình nhận dữ liệu .......................................................................98 ị
2. Chương trình cài đ ặ t.......... ........................................................................98 ị
III.2 . CHƯƠNG TRÌNH GIAO T I Ế P ...................................................... 99 Ị
Báo cáo kết q u ả ................................................................................................. 102 ệ
Kết lu ận ...............................................................................................................103 ị

Tài liệu tham k h ả o ............................................................................................. 104 ^

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

P h ần I:

DẪN NHẬP
L B Ấ T VẤN Đ Ề :
Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ
thống điều khiển dần dần được tự động hóa. Với những kỹ thuật tiên tiên như
vi xử lí vi mạch sô"... được ứng dụng vào lĩnh vực điều khiên, thì các hệ thông
điều khiển cơ khí thô sơ, với toe độ xử lí chậm chạp ít chính xác được thay thế
bằng các hệ thống điều khiển tự động với các lệnh chương trình đã được thiết
lập trước.
Trong quá trình sản xuất ở các nhà máy, xí nghiệp hiện nay, việc đếm các
sản phẩm làm ra là một yêu cầu hết sức cần thiết và quan trọng. Vì phải biết
được số sản phẩm làm ra chúng ta mới có thể đóng gói sản phẩm và dê dàng
quản lý số sản phẩm làm ra một cách tự động và nhanh chóng.
Để đếm được số lượng sản phẩm thì có nhiều phương án thiết kế, qua quá
trình nghiên cứu qua quan sát thực tế, em quyết định chọn phương án thiết kế
“mạch đếm sản phẩm dùng vi điều khiển 89C51 giao tiếp vổi máy tính” để
dễ dàng quản lý số lượng sản phẩm và điều khiển từ máy tính. Và để mở rộng
hơn cho việc đem sản phẩm, em thiết kế mạch đếm gồm có bốn bộ đếm ( có
thể mở rộng hơn nữa ) hoạt động cùng lúc và có thể được kiểm soát, điều khiển
trực tiếp từ máy tính hoặc từ phần cứng.

TT. M UC ĐÍCH CỦA Đ E T Ả I:


Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình
môn học để đủ điều kiện ra trường .
Cụ thể khi nghiên cứu thực hiện đề tài là chúng em muốn kiểm tra những
kiến thức học ở trường vào ứng dụng thực tế bằng cách tạo ra những sản phâm
có ích và thiết thực cho cuộc sống. Hơn nữa đề tài cũng nhằm phát huy những
thành quả ứng dụng của vi điều khiển nhằm tạo ra những sản phẩm, những
thiết bị tiên tiến hơn, và đạt hiệu quả sản xuất cao hơn góp phân phục vụ cho
cuộc sông con người.
Mặt khác tập luận văn này cũng có thể làm tài liệu tham khảo cho những
sinh viên khóa sau. Giúp họ hieu rõ hơn về những ứng dụng của vi điều khiển
và phát triển hơn nữa ứng dụng của nó nhằm tạo ra những sản phẩm tiên tiến
hơn, phục vụ con người tốt hơn.

Mạch đấm sản phẩm giao tiếp PC


Luận văn tốt nghiệp

Tóm lại, quá trình nghiên cứu thực hiện đề tài là một cơ hội đê chung
em tự kiểm tra lại những kiến thức đã được học ở trường, đồng thời phát
huy tính sáng tạo, khả năng giải quyết một vấn đề theo yêu cầu đặt ra. Và
đây cũng là dịp để chúng em tự khẳng định mình trưổc khi ra trường đê
tham gia vào các hoạt động sản xuất của xã hội.

III. PHƯƠNO ẨN T H IẾ T K Ế :
Qua quá trình tìm hiểu, nghiên cứu em thây có các phương án sau la phu
hợp và có thể được ứng dụng vào thực tê.
1. Mach đếm sản phẩm dùng IC rời;
❖ Ưu điểm:
□ Cho phép tăng hiệu suất lao động
□ Đảm bảo độ chính xác cao
□ Tần số đáp ứng của mạch nhanh, cho phép đêm với tần số cao
□ Khoảng cách đặt phần phát và phần thu xa nhau cho phép đếm
những sản phẩm lớn.
□ Tổn hao công suất bé, mạch có thể sử dụng pin hoặc accu

□ Khả năng đếm rộng


□ Giá thành hạ
□ Mạch đơn giản dễ thực hiện

❖ Khuvết điểm:
□ Mạch đếm sản phẩm dùng IC rời không linh hoạt, kho co the thay
đổi và nâng cao các tính năng của mạch.
□ Với sự phát triển mạnh của nghành kỹ thuật số đặc biệt là cho ra đời
các họ vi xử lí và vi điều khiển rất đa chức năng do đó việc dùng kỹ thuật vi xử
lí kỹ thuật vi điều khiển đã giải quyết những bế tắc và kinh tế hơn mà phương
pháp dùng IC rời kết nối lại không thực hiện được.
2. Mach đếm sản phẩm dùng vi điều khiển;
Ngoài những ưu điểm như đã liệt kê trong phương pháp dùng IC rời thì
mạch đếm sản phẩm dùng kỹ thuật vi điều khiển còn có những ưu điểm sau:
□ Mạch có thể thay đổi số đếm một cách linh hoạt bằng việc thay đổi
phần mềm, trong khi đó phần cứng không cần thay đổi mà mạch dùng IC rời
không thể thực hiện được mà nếu có thể thực hiện được thì cũng cứng nhắc mà
người công nhân cũng khó tiếp cận, dễ nhầm.

Mạch đếm sân phẩm gmữ tiếp PC


Luận văn tốt nghiệp

□ Số linh kiện sử dụng trong mạch ít hơn.


□ Mạch đơn giản hơn so với mạch đếm sản phẩm dùng IC rời và có
phần cài đặt sô" đếm ban đầu
□ Mạch có thể lưu lại số liệu của các ca sản xuất
□ Mạch có thể điều khiển đếm được nhiều dây chuyền sản xuất cùng
lúc bằng phần mềm
□ Mạch cũng có thể kết nối giao tiếp được với máy tính thích hợp cho
những người quản lí tại phòng kỹ thuật nắm bắt được tình hình sản xuât qua
màn hình của máy vi tính.
Qua tìm hiểu các ưu, khuyết điểm của các phương án trên, em thây
mạch đem sản phẩm dùng vi điều khiển là rất khả thi và có thể đưa vào ứng
dụng thực tế nên em quyết định chọn phương án mạch đêm sản phâm dùng VI
điều khiển làm đề tài nghiên cứu cho luận văn của mình.

TV. GIỚI HAN CỦA Đ ầ T Ả I:


Với phương án đã chọn, đề tài có thể được tiến hành thiết kế và thi công
thành mạch nhưng do thời gian và kiến thức chuyên môn có hạn nên đề tài chỉ
có thể giải quyết được các vân đề sau:
□ Mạch có thể đếm được các sản phẩm có kích thước đặc, rỗng có thể
tích khôi lớn hơn 5cm3.
□ Khoảng cách đặt cảm biến không lớn hơn 0,5m.
□ Mạch chỉ có thể điều khiển băng chuyền dừng hoặc tiếp tục chạy
bằng cách cài đặt trực tiêp từ phân cứng hoặc tư may tinh.
□ Mỗi bộ đếm có thể đếm được từ 0 đến 999 sản phẩm.
□ Cùng một lúc chỉ có thể xem được một thông số cài đặt hoặc hiển
thị của một bộ đếm.
□ Băng chuyền được thiết kế giả lập bởi các vòng quay cảm biên.

V. HƯỚNG PH Á T T R IỂ N CỦA Đ E T Ả Ĩ;
Từ đề tài này ta có thể phát triển thêm các tính năng sau:
□ Có thể mở rộng bộ số bộ đếm nhiều hơn bằng cách dùng thêm các
IC giải mã để sử dụng tối ưu các port của vi điều khiển.
□ Có thể điều khiển băng chuyền một cách linh hoạt hơn như : điêu
khiển cho băng chuyên dừng lại đê rót san pham, đong nap ...

Mạch đếm sần phẩm g im tiếp PC


Luận văn tốt nghiệp

P h án I I : L Ý THUYẾT
C hươns I : 9
GIỚI THIỆU VỀ VI ĐlỀU KHIẾN 89C51
1.1 ■TÓM TẮ T PHẨN CỨNG:
1. Mô tá :
AT89C51 là một hệ vi tính 8 bit đơn chip CMOS có hiệu xuất cao, công
xuất nguồn tiêu thụ thấp và có 4K byte bộ nhớ ROM flash xoá được / lập trình
được. Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung
có độ tích hợp cao của Atmel.
Chip AT89C51 cũng tương thích với các tập lệnh và các chân ra của
chuẩn công nghiệp MCS-51. Flash trên chip này cho phép bộ nhớ khong mat
nội dung qui ước. Bằng cách kết hợp một CPU linh hoạt 8 bit VƠI Flash tren
một chip đơn thể, Atmel 89C51 là một hệ vi tính 8 bit đơn chip mạnh cho hi
một giải pháp có hiệu quả về chi phí và rât linh hoạt VƠI cac ưng dụng đieu
khiển.
AT89C51 có các đặc trưng chuẩn sau:
- 4KB Flash.
- 128 byte RAM.
- 32 đường xuất nhập.
- Hai bộ định thời / đếm 16 bit.
- Một cấu trúc ngắt ưu tiên và 5 nguyên nhân ngắt.
- Một port nối tiếp song song cổng.
- Mạch dao động và tạo xung clock trên chip.
Ngoài ra, AT89C51 được thiết kế với logic tĩnh cho hoạt động có tần số
giảm xuống 0 và hỗ trợ hai chế độ tiêt kiệm năng lượng được lựa chọn băng
phần mềm.
Chế độ nghỉ dừng CPU trong vẫn cho phép RAM, các bộ định thời / đếm,
port nối tiếp và hệ thống ngắt tiếp tục hoạt động.
Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch
dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip
cho đến khi có reset tiếp theo.
2. Sơ đổ khối:
Sơ đồ khối của AT89C51 được biểu diễn như hình 2.1.1

Mạch đềm sân phẩm gịm tiếp PC


Luận vãn

PO.O - P0.7

Hình 2.1.1: Sơ đồ khối của AT89C51

Mạch đếm sản phẩm gìm tiếp PC


Luận văn tất nghiệp

3. Sơ đổ chân:

Vcc
PO.O (ADO)
PO 1 (AD1)
P0.2 (AD2)
PO 3 (AD3)
P0.4 (AD4)
PO.5 (AD5)
PO.6 (AD6)
PO.7 (AD7)
EA / Vpp
ALE/PROG
PSEN
P2.7 (A15)
(TO) P3.4 P2.6 (A14)
XXI) P3.5 P2.5 (A I3)
(WR) P3 6 P2.4 (A12)
(RD) P3 7 P2.3 (A ll)
XTAL2 P2.2 (AIO)
XTAL1 P2.1(A9)
GND P2.0 (A8)

Hình 2.1.2: Sơ đồ chân của AT89C51

4. Chức năng từng chân:


• Chân nguồn Vcc:
Chân cung cấp điện.
• ChânGND:
Chân nối đất (0 V)
• Port 0:
Là port xuất nhập 8 bit hai chiều cực D hở. Khi làm nhiệm vụ là port
xuất mỗi chân của port có thể hút dòng của 8 ngõ vào TTL. Khi các logic 1
được ghi vào các chân của port 0, các chân này có thể được sử dụng làm các
ngõ vào tổng trở cao.
Luận văn tết

Port 0 còn được câu hình làm bus địa chỉ ( byte thấp ) và bus dữ liệu đa
hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài.
Trong chế độ đa hợp này, port 0 có các điện trở kéo lên bên trong.
Port 0 cũng nhận các byte mã trong khi lập trình cho Flash và truy xuât
các byte mã trong khi kiểm tra chương trình. Các điện trở kéo lên bên ngoài
được cần đến trong khi kiểm tra chương trình.

• Port 1:
Port 1 là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong.
Các bộ đệm xuất của port 1 có thể hút và cấp dòng với 4 ngõ vào TTL. Khi các
logic 1 được ghi lên các chân của port 1, các chân này được kéo lến mức cao
bởi các điện trở kéo lên bên trong và có thể được dử dụng như là các ngõ vào.
Khi làm nhiệm vụ port nhập, các chân của port 1 đang được kéo xuông mức
thấp do tác động bên ngoài sẽ cấp dòng cho các điện trở kéo lến bên trong.
Port 1 cũng nhận byte địa chỉ thấp trong thời gian lập trình cho Flash và
kiểm tra chương trình.
• Port 2:
Port 2 là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong.
Các bộ đệm xuất của port 1 có thể hút và câp dòng với 4 ngõ vào TTL. Khi các
logic 1 được ghi lên các chân của port 2, các chân này được kéo lên mức cao
bởi các điện trở kéo lên bên trong và có thể được dử dụng như là các ngõ vào.
Khi làm nhiệm vụ port nhập, các chân của port 1 đang được kéo xuông mức
thấp do tác động bên ngoài sẽ cấp dòng cho các điện trở kéo lên bên trong.
Port 2 tạo ra byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ
nhớ chương trình ngoài và trong thời gian truy xuât dữ liệu sử dụng các địa chi
16 bit ( MOVX @DPTR ) trong ứng dụng này, port 2 sử dụng các điện trở kéo
lên trong khi phát các bit 1. Trong thời gian truy xuất bộ nhớ dữ kiệu ngoài sư
dụng các địa chỉ 8 bit ( MOVX @ R i ), port 2 phát các nội dung cua thanh ghi
chức năng đặc biệt P2.
Port 2 cũng nhận các bit địa chỉ cao và vài tín hiệu điêu khiên trong thời
gian lập trình cho Flash và kiểm tra chương trình.

• Port 3:
Port 3 là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong.
Các bộ đệm xuất của port 3 có thể hút và câp dòng với 4 ngõ vào TTL. Khi các
logic 1 được ghi lên các chân của port 3, các chân này được kéo lên mức cao
bởi các điện trở kéo lên bên trong và có thể được dử dụng như là các ngõ vào.

Mạch đếm sản phềm giao tiếp PC


Khi làm nhiệm vụ port nhập, các chân của port 3 đang được kéo xuống mức
thấp do tác động bên ngoài sẽ cấp dòng cho các điện trở kéo lên bên trong.
Port 3 cũng còn được sử dụng làm các chức năng khác của AT89C51, các
chức năng này được liệt kê như sau:

Chân của port Chức năng

P3.0 RxD (ngõ vào của port nối tiếp)

P3.1 TxD ( ngõ ra của port nối tiêp )

P3.2 INTO ( ngõ vào ngắt ngoài 0 )

P3.3 INT1 ( ngõ vào ngắt ngoài 1 )

P3.4 TO ( ngõ vào bên ngoài của bộ định thời 0 )

P3.5 T I ( ngõ vào bên ngoài của bộ định thời 0 )

P3.6 WR ( điểu khiển ghi bộ nhớ dư liệu ngoài)

P3.7 RD ( điều khiển đọc bộ nhớ dữ liệu ngoài)

Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và
kiểm tra chương trình.
• Chân cho phép bộ nhổ chương trình PSEN:
Chân cho phép bộ nhớ chương trình PSEN ( program store enable ) điêu
khiển truy xuất bộ nhớ chương trình ngoài. Khi AT89C51 đang thực thị chương
trình trong bộ nhớ chương trình ngoài, PSEN tích cực 2 lần cho môi chu kỳ
máy ngoại trừ trường hợp 2 tác động của PSEN bị bỏ qua cho môi lần truy
xuất bộ nhớ dữ liệu ngoài.
• Chân cho phép chốt địa c h ỉ: ALE/PROG
Xung của ngõ ra cho phép chốt địa chi ALE ( address latch enable ) cho
phép chốt byte thấp của địa chì trong thời gian truy xuất bộ nhớ ngoài, chân
này cũng được làm ngõ vào xung lập trinh ( PROG ) trong thời gian lập trình
cho Flash.
Khi hoạt động bình thường, xung của ngõ ra luôn có tần số bằng 1/6 tần
số mạch dao động trên chip, có thể sử dụng cho các mục đích định thời từ bên
ngoài và tạo xung clock. Tuy nhiên cần lưu ý là một xung ALE se bị bo qua
trong mỗi một chu kỳ truy xuất bộ nhớ dữ liệu ngoài.
Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu
hoá bằng cách sét bit 0 của thanh ghi của thanh ghi chức năng đặc biệt có địa
chỉ là 8EH. Khi bit này được set, ALE chỉ tích cực trong thời gian thực thi lệnh
văn tết

MOVX hoặc MOVC. Ngựơc lại chân này sẽ được kéo lên mức cao. Việc set
bit không cho phép hoạt động chốt byte thấp của địa chỉ sẽ không có tác dụng
nếu bộ vi điều khiển đang ở chế độ thực thi chương trình ngoài.
• Chân truy xuất ngoài EA/Vpp:
Chân cho phép bộ nhớ ngoài ẼÃ ( external access enable ) phải được nối
với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí nhớ của bộ
nhớ chương trình ngoài, bắt đầu từ địa chỉ 0000H cho đên FFFFH. Tuy nhien
cần lưu ý là nếu bit khoá 1 ( clock bit 1 ) được lập trình, EA sẽ được chốt bên
trong khi reset.
• Chân RESET (RST):
Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ
dao động đang hoạt động sẽ reset AT89C51.
• Chân XTAL1:
Ngõ vào đến mạch khuếch đại đảo của mạch dao động va ngo vao đen
mạch tạo xung clock bên trong chip.
• Chân XTAL2:
Ngõ ra từ mạch khuếch đại đảo của mạch dao động.
5. TỔ chức bô nhđ:
Bộ nhớ nội trong chip bao gồm ROM và RAM. RAM trên chip bao gom
vùng RAM đa chức nang, vùng RAM với từng bit được định địa chỉ ( gọi tắt là
vùng RAM định địa chỉ b i t ), các dãy thanh ghi và các thanh ghi chức năng đặc
biệt SFR ( special function register).
Hai đặc tính đáng lưu ý là: 7
— Các thanh ghi và các port xuất / nhập được định địa chi theo kieu
ánh xạ bộ nhớ.
- Vùng stack thường trú trong RAM trên chip ( RAM n ộ i) thay vì ở
trong RAM ngoài như đối với các bộ vi xử lý.
Hình 2.1.3 cho ta chi tiết của bộ nhớ dữ liệu trên chip. Ta thây răng
không gian nhớ nội này được chia thành : các dãy thanh ghi ( 00H 4- 1FH ),
vùng RAM định địa chỉ bit ( 20H -ỉ- 2FH ), vùng RAM đa mục đích ( 30H 4-
7FH ) và các thanh ghi chức năng đặc biệt ( 80H 4- FFH ).

Mạch đếm sản phẩm giao tiếp PC Trang 9


5.1. Vừng RAM đa muc đích :
Mặc dù hình 2.1.3 ưình bày vùng RAM đa mục đích có 80 byte đặt ở các
địa chi từ 30H đến 7FH, bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng

7F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B

RAM đa dụng
EO E7 E6 E5 E4 E3 E2 E1 EO ACC

DO D7 D6 D5 D4 D3 D2 DI DO PSW

B8 BC BB BA B9 B8 IP
30
2F 7F 7E 7D 7C 7B 7A 79 78
BO B7 Ịb 6 ỈB5 B4 B3 B2 Ịb I Ịb O P.3
2E 77 76 75 74 73 72 71 70
2D 6F 6E 6D 6C 6B 6A 69 68
A8 AF AC AB AA A9 A8 IE
2C 67 66 65 64 63 62 61 60
2B 5F 5E 5D 5C 5B 5A 59 58
AO A7 ỈA6 ỊA5 A4 A3 A2 a i Ịa O P2
2A 57 56 55 54 53 52 51 50
29 4F 4E 4D 4C 4B 4A 49 48
99 không đước địa chỉ hoá bit SBUF
28 47 46 45 44 43 42 41 40
98 9F 9E 9D 9C 9B 9A 99 98 SCON
27 3F 3E 3D 3C 3B 3A 39 38
26 37 36 35 34 33 32 31 30
90 97 |96 Ị95 94 93 92 91 90 P1
25 2F 2E 2D 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
8D không được địa chỉ hoá bit THI
23 1F 1E 1D 1C 1B 1A 19 18
8C không đươc địa chỉ hoá bit THO
22 17 16 15 14 13 12 11 10
8B không đươc địa chỉ hoá bit TL1
21 0F OE OD o c OB OA 09 08
8A khống đước địa chỉ hoá bit TLO
20 07 06 05 04 03 02 01 00
89 không được địa chỉ hoá bit TMOD
1F Dãy 3
89 88 TCON
00
<

8B
u
00
00
Q
00

18 88 8F
87 chông được địa chỉ hoầ bit PCON
17 Dãy 2
10
83 không đươc địa chỉ hoá bit DPH
0F Dãy 1
82 không đươc địa chỉ hoá bit DPL
08
81 không được địa chỉ hoá bit SP
07 Dãy thanh ghi 0
00 (mặc định cho RO -R7) 88 87 86 85 84 83 82 81 80 PO

Hình 2.1.3: Bộ nhổ dữ liệu trong 8951

nhớ có thể được sử dụng tương tự (mặc dù các vị trí nhớ này đã có mục đích
khác).
Luận văn tết nghiệp

Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy
xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp.
5.2 Vùng RAM đinh đia chỉ b it:
89C51 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong
các byte ở địa chỉ từ 20H đến 2FH {16 byte X 8 bit = 128 } và phần còn lại chứa
trong các thanh ghi chức năng đặc biệt.
Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh của hầu
hết các bộ vi điều khiển. Các bit có thể được set, xóa, AND, OR, v.v... với một
lệnh đơn. Đa số các bộ vi xử lý đòi hỏi một chuổi lệnh đọc - sửa - ghi để nhận
được cùng một kết quả. Ngoài ra các port xuất / nhập cũng có thể định địa chỉ
từng bit.
89C51 có 128 vị trí bit được định địa chỉ và có nhiều mục đích ở các byte
có địa chỉ từ 29H đến 2FH. Các địa chỉ này được truy xuất như là các byte hay
các bit tuỳ vào lệnh cụ thể.
5.3 Các dãy thanh ghi :
32 vị trí thấp nhất của bộ nhớ nội được dành cho các dãy thanh ghi. Bộ
lệnh của 89C51 hổ trợ 8 thanh ghi từ RO đến R7 thuộc dãy 0 ( bank 0 ). Đây là
dãy mặc định sau khi reset hệ thông, các thanh ghi này có các địa chỉ từ 00H
đến 07H.
Các lệnh sử dụng các thanh ghi từ RO đến R7 là các lệnh ngắn và thực
hiện nhanh hơn so với các lệnh có chức năng tương ứng dùng kiểu địa chỉ trực
tiếp. Các dữ liệu được dùng thường xuyên nên chứa ở một dãy thanh ghi tích
cực.
Do có 4 dãy thanh ghi nên tại một thời điểm chỉ có một dãy thanh ghi
được truy xuất bởi các thanh ghi RO đến R7. Để thay đổi dãy thanh ghi tích cực
ta phải thay đổi các bit chọn dãy trong từ trạng thái chương trình PSW.

6. C ác thanh ghi chức năng đăc biêt:


Các thanh ghi nội của hầu hết các bộ vi xử lý đều được truy xuất rõ ràng
bởi một tập lệnh.
Các thanh ghi nội của 89C51 được cấu hình thành một phần của RAM
trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ ( ngoại trừ thanh ghi bộ đếm
chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực
tiếp ). Cũng như các thanh ghi từ RO đến R7, ta có 21 thanh ghi có chức năng
đặc biệt SFR ( Special Function Register) ở vùng trên của RAM nội từ địa chỉ
80H đến FFH ( hình 2.1.3).

Mạch đếm sần phẩm giao tiếp PC


Luận văn tết nghiệp

Chú ý: không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa
mà chỉ có 21 đ8ịa chỉ được định nghĩa. N ,
Ngoại trừ thanh ghi A có thể được truy xuất ngầm như đã nói, đa sô các
thanh ghi có chức năng đặc biệt SFR có thể địa chỉ hóa từng bit hoặc byte.

6.1 TiV trang thái chương trình PSW :


Từ trạng thái chương trình ở địa chỉ DOH được tóm tắt như bảng 2.1.1

B it Ký hiệu Địa chỉ Mô tả bit

PSW.7 CY D7H Cờ nhớ

PSW.6 AC D6H Cờ nhớ phụ

PSW.5 FO D5H CỜO

PSW4 R SI D4H Chọn dãy thanh ghi ( bit 1 )

PSW.3 RSO D3H Chọn dãy thanh ghi ( bit 0 )

00 = Dãy 0 ; địa chỉ từ 00H-Ỉ-07H

01 = Dãy 1 ; địa chỉ từ 08H-Ỉ-0FH

10 = Dãy 2 ; địa chỉ từ 10H-^17H

11 = Dãy 3 ; địa chỉ từ 18H-5-1FH

PSW.2 ov D2H Cờ tràn

PSW .l - DIH Dự trữ

PSW.O P DOH Cờ kiểm tra chẩn lẻ

Bảng 2.1.1: Thanh ghi PSW

Từng bit của PSW được khảo sát dưới đây:

❖ Cờ nhứ:
Cờ nhớ CY ( caưy flag ) có 2 công dụng. Công dụng truyền thống trong
các phép toán số học là được set bằng 1 nếu có số nhớ từ phép cộng bit 7 hoặc
có sô" mượn mang đến bit 7.
Cờ nhớ CY còn là thanh chứa logic được dùng như một thanh ghi 1 bit đối
với các lệnh logic thao tác trên các bit.

Mạch đếm sản phẩm giao tiếp PC


Luận văn tốt nghiệp

❖ Cờ nhứ phu :
Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC
(auxiliary carry flag ) được set nếu kết quả 4 bit thấp nằm trong phạm vi điều
khiển 0AH+ 0FH. Ngược lại AC = 0.

❖ CỜO:
Đây là cờ có nhiều mục đích dành cho các ứng dụng của người lập trình.

Các hừ chon dãv thanh g h i:


Các bit chọn dãy thanh ghi RSO, RS1 dùng để xác định dậy thanh ghi tích
cực. Các bit này được xoá khi có thao tác reset hệ thống và đổi mức logic bôi
phần mềm khi cần.
❖ Cờ tràn:
Cờ o v ( over flag ) được set bằng 1 sau phép toán cộng hoặc trừ nêu có
xuất hiện một tràn số học. Khi các số có dấu được cộng hoặc trừ, phân mêm có
the kiểm tra bit tràn o v để xác định xem kết quả có nằm trong tầm hay không.
Với phép cộng các số không dấu, cờ tràn ov đựơc bỏ qua. Kêt quả lớn
hơn +128 hoặc nhỏ hơn -127 sẽ set cờ ov bằng 1.

❖ Cờ chẵn lẻ:
Bit chấn lẻ p tự động được set bằng 1 hay xoá bằng 0 ở môi chu kỳ máy
để thiết lập kiểm tra chẩn cho thanh chứa A. s ố các bit 1 trong thanh chưa
cộng với bit p luôn luôn là sô chan.
Bit chẩn lẻ được sử dụng nhiều để kết hợp với các chương trình xuât /
nhập nối tiếp trước khi truyền dữ liệu hoặc để kiểm tra chẵn lẻ sau khi nhận dữ
liệu.
6.2 .Thanh ghi B :
Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong các
phép toán nhân, chia. Lệnh MƯL AB nhân hai số 8 bit không dấu chứa trong A
và B rồi chứa kết quả 16 bit trong A (byte cao) và B (byte thấp). Lệnh DIV AB
vào cặp thanh ghi B:A ( thanh chứa A cấct byte thấp, thanh ghi B cất byte cao).
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư
cất trong thanh ghi B.
Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa mục
đích. Nó là những bit định vị thông qua những địa chỉ từ F0H+F7H.

6.3 .Con trỏ stack :


Luận văn tết nghiệp

Con trỏ stack ( stack pointer ) là một thanh ghi 8 bit ở địa chỉ 81H. Nó
chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh trên stack bao
gồm các lệnh cất dữ liệu vào stack (PUSH) và lấy dữ liệu ra khỏi stack ( POP ).
Lệnh cât dữ liệu vào stack sẽ làm tăng SP trước khi ghi dữ liệu và lệnh laỵ ra
khỏi stack sẽ làm giảm SP. Stack của 8031/8951 được giữ trong RAM nội và
giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp, chúng là 128 byte
đầu của AT89C51.
Đe khởi động SP với stack bắt đầu tại địa chỉ 60H, các lệnh sau đây được
dùng:
MOV S P , #5F
Với lệnh trên thì stack của AT89C51 chỉ có 32 byte vì địa chỉ cao nhất
của RAM trên chip là 7FH. Sở dĩ giá trị 5FH được nạp vào SP vì SP tăng lên
60H trước khi cất byte dữ liệu.
Khi Reset AT89C51, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu
tiên sẽ được cất vào ô nhớ stack có địa chỉ 08H. Nếu phần mềm ứng dụng
không khởi động SP một giá trị mới thì dãy thanh ghil có thể cả 2 và 3 sẽ
không dùng được vì vùng RAM này đã được dùng làm stack. Stack được truy
xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ
liệu hoặc truy xuất ngầm bằng lệnh gọi chương trình con ( ACALL, LCALL)
và các lệnh trở về ( RET, R E T I) để lưu trữ giá trị của bộ đếm chương trình khi
bắt đầu thực hiện chương trình con và lấy lại khi kêt thúc chương trình con.

6.4 .c.on trỏ dữ liêu DPTR :


Con trỏ dữ liệu DPTR ( data pointer ) được dùng để truy xuất bộ nhớ
chương trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là một thanh ghi 16 bit ở
địa chỉ 82H ( DPL: byte thấp ) và 83H ( DPH: byte cao ). Ba lệnh sau sẽ ghi
55H vào RAM ngoài ở địa chỉ 1000H:
MOV A , #55H
MOV DPTR, #1000H
MOV @DPTR, A
Lệnh đầu tiên dùng để nạp 55H vào thanh ghi A. Lệnh thứ hai dùng để
nạp địa chỉ của ô nhớ cần lưu giá trị 55H vào con trỏ dữ liệu DPTR. Lệnh thứ
ba sẽ di chuyển nội dung thanh ghi A ( là 55H ) vào ô nhớ RAM bên ngoài có
địa chỉ chứa trong DPTR ( là 1000H ).
6.5 .Các thanh ghi port:

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

Các Port của 89C51 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H,
Port 2 ở địa chỉ AOH, và Port 3 ở địa chỉ BOH. Tất cả các Port này đều có thế
truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp.

6.6 -Các thanh ghi đinh th ờ i:


89C51 có chứa hai bộ định thời / bộ đếm 16 bit được dùng cho việc đinh
khoảng thời hoặc để đếm các sự kiện. Timer 0 ở địa chỉ 8AH ( TLO: byte thâp )
và 8CH ( THO: byte cao ). Timer 1 ở địa chỉ 8BH ( TL1: byte thấp ) và 8DH
(THI: byte cao). Việc khởi động timer được set bởi TMOD ( timer mode
register) ở địa chỉ 89H và thanh ghi điều khiển định thời TCON ( timer control
register ) ở địa chỉ 88H. Chỉ có TCON được định địa chỉ từng b i t .

6.7 -Các thanh ghi của port nôì tiếp :


89C51 có một Port nối tiếp để truyền thông với các thiết bị nôi tiêp như
máy tính, modem hoặc giao tiếp nối tiếp với các IC khác. Một thanh ghi đệm
dữ liệu nối tiếp SBUF (serial data buffer ) ở địa chỉ 99H lưu giữ cả hai dữ liệu
truyền và dữ liệu nhận về. Việc ghi lên SBUF sẽ nạp dữ liệu để truyền về và
việc đọc SBUF sẽ lấy dữ liệu đã nhận được.
Các hoạt động khác nhau được lập trình thông qua thanh ghi điêu khiên
Port nối tiếp SCON ( serial port control register ) ở địa chỉ 98H, thanh ghi này
được định địa chỉ từng bit.
6.S .Các thanh ghi n g ắ t:
89C51 có cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngat. Các
ngắt bị cấm sau khi bị reset hệ thống và sẽ được cho phép bằng việc ghi thanh
ghi cho phép ngắt ( IE ) ở địa chỉ A8H. Mức ưu tiên ngắt được thiết lập qua
thanh ghi ưu tiên ngắt IP ( interupt priority register). Cả hai thanh ghi này đều
được định địa chỉ từng bit.

ếì-Q.Thanh ghi điều khiến nguồn :


Thanh ghi điều khiển nguồn PCON ( power control register) có địa chỉ
87H chứa các bit điều khiển tóm tắt trong bảng 2.1.2.
Các bit điều khiển nguồn, nguồn giảm PD và nghỉ IDL, hợp lệ trong tất
cả chip thuộc họMCS-51, nhưng chỉ được thực hiện trong các phiên CMOS của
MCS-51. Thanh ghi PCON không được định địa chỉ bit.

Mạch đếm sân phẩm giao tiếp PC


Luận văn tết nghiệp

Bit Ký hiệu Mô tả
7 SMOD Bit tăng gấp đôi tốc độ Baud, ở bit này khi set lam

cho tốc độ baud tăng 2 ở các chế độ 1, 2, 3 của Port

nối tiếp.

6 - Không định nghĩa

5 - Không định nghĩa

4 - Không định nghĩa

3 GF1 Bit cờ đa mục đích 2 .

2 GF0 Bit cờ đa mục đích 1.

1 PD Nguồn giảm; thiêt lập đê tích cực chê đọ nguon giam,

chỉ ra khỏi chế độ bằng reset.

0 IDL Chế độ nghỉ; thiết lập để tích cực chế độ nghỉ, chỉ ra

khỏi chế độ bằng ngắt hoặc reset hệ thông.

Bảng 2.1.2 : Thanh ghi PCON


7.BÔ nhđ ngoài:
AT89C51 có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chương
trình và 64k byte bộ nhớ dữ liệu ngoài. Do đó có thể dùng thêm RAM và ROM

Khi dùng bộ nhớ ngoài, Port 0 không còn chức năng I/O nữa. Nó được kết
hợp giữa b u s á ịa chỉ (AO - A7) và bus dữ liệu (DO - D7) vđi tín hiệu ALE đế
chot byte cùa bus địa chỉ khi bắt đầu mỗi chu kỳ bộ nhđ. Port 2 được cho là
byte cao của bus địa chỉ.
7.1 -Trnv xuất hô nhở chương trình n goài:
Bộ nhớ chương trình bên ngoài là bộ nhớ chỉ đọc, được cho phép bởi tín
hiệu PSEN. Khi có 1 EPROM ngoài được sử dụng, cả hai port 0 và port 2 đêu
không còn là các port xuất / nhập. Sự kết nối phần cứng với bộ nhớ ngoai
EPROM được trình bày như hình 2.1.4.
Một chu kỳ máy của 89C51 có 12 chu kỳ dao động. Nếu bộ dao động trên
chip có tần số 12MHz, một chu kỳ máy dài lps. trong một chu kỳ máy điển
hình ALE có 2 xung và 2 byte của tập lệnh được đọc từ bộ nhớ chương trình (
nếu lệnh chỉ có một byte, byte thứ hai được loại bỏ ).
Luận văn tết nghiệp

7 .2 .Truv xuất bô nhđ dữ liệu ngoài:


Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được
cho phép của tín hiệu RD và W R. Hai tín hiệu này nằm ở chân P3.7 ( RD ) và
P3.6 ( WR ). Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và sử
dụng hoặc con trỏ dữ liệu 16 bit DPTR hoặc RO, R I làm thanh ghi chứa địa chỉ.
Các RAM có the giao tiếp với AT89C51 theo cùng cách nhự EPROM
ngoại trừ chân RD của AT89C51 nối với chân cho phép xuất OE ( Output
Enable ) của RAM và chân WR của AT89C51 nối với chân ghi w của RAM.
Sự nối các bus địa chỉ và dữ liệu tương tự như cách nôi cua EPROM ( hình
2.1.5). _____________
1
Port 0 D0-D7
<
J 74 HC 373 RAM
8951 Ái K 1KB
\
D Q / A O -A7
ÊÃ~
------------ ^
ALE G

rort z.u A8
r ort / . 1 A9

OF
RD
w
WR
PSEN -----NC cs

Hình 2.1.5: Giao tiếp với 1K RAM


7.3 .Giải mã đai chỉ:

Mạch đếm sản phẩm giao tiếp PC


Luận văn tốt nghiệp

Sự giải mã địa chỉ là một yêu cầu tất yếu để chọn EPROM, RAM, 8279,
... Sự giải mã địa chỉ đối với AT89C51 để chọn các vùng nhớ ngoài như các vi
điều khiển. Nếu các con EPROM hoặc RAM 8K được dùng thì các bus địa chỉ
phải được giải mã để chọn các IC nhớ nằm trong phạm vi giới hạn 8K:
OOOOH-f-lFFFH, 2000H-Ỉ-3FFFH,... Một cách cụ thể, IC giải mã 74HC138 được
dùng với những ngõ ra của nó được nôl với những ngõ vào chọn Chip c s (
Chip S e le ct) trên những IC nhớ EPROM, R A M ,...

8. H oat đông re se t:
AT89C51 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu
kỳ máy và sau đó chuyển xuống mức thấp để AT89C51 bắt đầu làm việc. RST
có thể kích bằng tay bằng một phím nhấn thường hở hoặc được tác động khi
cấp nguồn bằng cách dùng một mạch RC . Sơ đồ mạch reset như hình 2.1.6.

Trạng thái của tất cả các thanh ghi trong AT89C51 sau khi reset hệ thống
được tóm tắt như như bảng 2.1.3

Thanh ghi Nội dung


Đếm chương trình PC 0000H
Thanh chứa A 00H
Thanh ghi B 00H
PSW 00H
SP 07H
DPRT 0000H
Port 0 - 3 FFH
IP xxxOOOOOB
IE OxxOOOOOB
Các thanh ghi định thời OOH
SCON OOH
SBUF OOH
PCON ( HMOS ) OxxxxxxxH
PCON ( CMOS ) OxxxOOOO B

Bảng 2.1.3 : Giá trị của các thanh ghi sau khi reset hệ thông

Mạch đếm sản phẩm g im tiếp PC 18


Luận văn tết nghiệp

+5V

Hình 2 .1 .6 : Reset bằng tay


Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được nạp
OOOOH. Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ
OOOOH của bộ nhớ chương trình. Nội dung của' RAM trên chip không bị ảnh
hưởng bởi hoạt động reset.

Ĩ.2. HOẮT ĐỔNG ĐINH THỜI:


Bộ định thời được sử dụng trong hầu hết các ứng dụng của chip AT89C51.
chip AT89C51 có hai bộ định thời 16 bit, mỗi bộ định thời có 4 chê độ hoạt
động. Các bộ định thời dùng để:
Định thời trong một khoảng thời gian.
Đếm sự kiện.
Tạo tốc độ baud cho port nối tiếp của chip AT89C51.
Với bộ định thời 16 bit, tầng cuối cùng ( tầng thứ 16 ) chia tần số xung
clock ở ngõ vào của bộ định thời cho 216 =65536.
Trong các ứng dụng định thời trong một khoảng thời gian, bộ định thời
được lập trình sao cho sẽ tràn sau một khoảng thời gian qui định và set cờ tràn
của bộ định thời bằng 1. cờ tràn được sử dụng để đồng bộ chương trình nhằm
thực hiện một công việc như là kiêm tra trạng thái cua các ngo nhạp hoạc gơỊ
dữ liệu đến các ngõ xuất. Các ứng dụng khác có thể sử dụng xung clock qui
định cho bộ định thời để để đo khoảng thời gian giữa hai sự kiện ( thí dụ đo sự
kiện xung).
Các bộ định thời của AT89C51 có thể được truy xuất bằng cách sử dụng 6
thanh ghi chức năng đặc biệt (bảng 2.1.4).

Mạch đếm sần phẩm giao tiếp PC


Luận vần tết nghiệp

SFR của bộ Mụch đích Địa chỉ Định địa chỉ


định thời bit
TCON Điều khiển 88H Có
TMOD Chọn chế độ 89H Không
TLO Byte thâp của bộ định thời 8AH Không
0
TL1 Byte thấp của bộ định thời 8BH Không
1
THO Byte cao của bộ định thời 0 8CH Không
Byte cao của bộ định thời 1
THI 8DH Không

Bảng 2.1.4 : Các thanh ghi chức năng đặc biệt của bộ định thời

1. Thanh ghi c h ế đô đinh thời TMOD:


Thanh ghi TMOD (timer mode register) chứa hai nhóm 4 bit dùng để
thiết lập chế độ hoạt động cho bộ định thời 0 và bộ định thời l(bảng 2.1.5) và
bảng 2.1.6). TMOD không được định chỉ từng bit và điều này cũng không cần
thiết. Một cách tổng quát, TMOD được nạp một lần bởi phần mềm ở thời điểm
bắt đầu của một chương trình để khởi động chế độ của bộ định thời. Sau đó, bộ
định thời có thể được dừng, bắt đầu...bằng cách truy xuất các thanh ghi chức
năng đặc biệt khác của bộ định thời.

MI MO Chế độ Mô tả
0 0 0 Chế độ định thời 13 bit
0 1 1 Chế độ định thời 16 bit
1 0 2 Chế độ tự động nạp lại 8 bit
1 1 3 Chế độ định thời chia xẻ
Bộ định thời 0: TLO là một bộ định thời 8 bit
được điều khiển bởi các bit chọn chế độ của
bộ định thời 0. THO tương tự TLO chỉ khác là
được điều khiển bởi các bit chọn chế độ của
bộ định thời 1
Bộ định thời 1: dừng, không hoạt động.

Bảng 2.1.5 : Các chế độ định thời

Mạch đếm sền phẩm gim tiếp PC


Luận văn tốt nghiệp

Bỉt Tên
r p A
Bộ Mô tả
định thời

1 GATE 1 Bit điều khiển cổng. Khi


được set lên 1, bộ định thời chỉ
hoạt động trong khi INT1 ở mức
cao.
6 C/T 1 Bit cho chức năng đếm
hoặc định thời:
1=đếm sự kiện
0=định thời trong một
khoảng thời gian.
Bit chọn chế độ thứ nhất(
5 MI 1
xem bảng)
4 MO 1
Bit chọn chế độ thứ hai(
xem bảng)
3 GATE 0 Bit điều khiển cổng cho bộ
định thời 0

2 C/T 0 Bit chọn chức năng đếm


hoặc định thời cho bộ định thời 0
Bit chon chế đô thứ nhất
1 MI 0
Bỉt chọn chế độ thứ hai
0 MO 0
Bảng 2.1.6 : Thanh ghi chọn chế độ định thời

2.Thanh ghi điều khiển đinh thời TCON:

Thanh ghi TCON chứa các bit điều khiển và trạng thái của bộ định thời 0
và bộ định thời 1 ( xem bảng 2.1.7 ). Bôn bit cao trong TCON ( TCON.4 -
TCON.7 ) được dùng để điều khiển các bộ định thời hoạt động hoặc ngưng
(TRO, TRI ) hặoc để báo các bộ định thời tràn ( TF0, TF1 ).
Bốn bit thấp của TCON ( TCON.O - TCON.3 ) không dùng để điều các
bộ định thời, chúng được dùng để phát hiện và khởi động các ngắt ngoài.

TRƯỞNG PNDl* K ■;:


T H ir V I Ê N
Mạch đếm sản phẩm g im tiếp PC Trang 21
v t ” SH —
Luận văn tết nghiệp

3. C h ế đô đinh thời và cở trà n :


Sự sắp xếp các thanh ghi TLx, THx và các cờ tràn TFx (vơi X đe chi bọ
định thời 0 hay bộ định thời 1) của bộ định thời được trình bày trong hình 2.1.7
cho từng chế độ định thời.

Bỉt Ký hiệu Địa Mô tả


chỉ bit

TCON.7 TF1 8FH Cờ tràn của bộ định thời l,được set bởi
phần cứng khi có tràn, được xoá bởi phần
mềm, hoặc phần cứng khi bộ vi xử lý trỏ
đến phuc vu ngắt.
Bit điều khiển hoạt động của bộ định thời 1.
Bit này được set hoặc xoá bởi phần mềm để
TCON.6 TRI 8EH
điều khiển bộ định thời hoạt động hoặc
ngưng hoat động.

TCON.5 TF0 8DH Cờ tràn của bô đinh thời 0.

TCON.4 TRO 8CH Bit điều khiển hoạt động của bộ định thời 0

TCON.3 IE1 8BH Cờ ngắt bên ngoài 1 (kích khởi cạnh ).


Cờ này được set bởi phần cứng khi có cạnh
âm ( xuống ) xuất hiện trên chân INT1 ,
được xoá bởi phần mềm, hoặc phần cứng
khi CPU trỏ đến trình phục vụ ngắt.

TCON.2 IT1 8AH Cờ ngắt bên ngoài 1( kích khởi cạnh hoặc
mức ). Cờ này đựơc set hoặc xoá bởi phần
mềm khi xảy ra cạnh âm ( xuống ) hoặc
mức thấp tại chân ngắt ngoài.

TCON.l IE 89H Cờ ngắt bên ngoài 0 ( kích khởi cạnh).

TCON.O ITO 88H Cờ ngắt ngoài 0 ( kích khởi cạnh hoặc


mức).

Bảng 2.1.7 : Thanh ghi điều khiển định thời TCON

Mạch đếm sẻn phẩm gmo tiếp PC Trrng 22


Luận văn tết nghiệp

Timer
clock Mode 0 Over flag

clock Mode 1 Over flag

Mode 2

> TLx THx

Timer
clock

clock Over flag

Mode 3 Over flag

Hình 2.1.7: Các chế độ định thời

3.1 rh ế đ ỏ đinh thời 13 bit ị chếđd 0 ) :


Chế độ 0 là chế độ định thời 13 bit cung cấp khả năng tương thích với bộ
vi điều khiển tiền nhiệm 8048. Chế độ này không được dùng cho các thiết kế
Luận vãn tết nghiệp

mới. Byte cao của bộ định thời THx được ghép cascade với 5 bit thấp của bộ
định thời TLx để tạo thành một bộ định thời 13 bit. Ba bit cao của TLx không
sử dụng.
3.2 .Chế đô đinh thời 16 bit ( chế đô 1 )i
Mode 1 là mode Timer 16 bit, tương tự như mode 0 ngoại trừ Timer này
hoạt động như một Timer đầy đủ 16 bit, xung clock được dùng với sự kết hợp
các thanh ghi cao và thấp (TLx, THx). Khi xung clock được nhận vào, bộ đếm
Timer tăng lên 0000H, 0001H, 0002H ,..., và một sự tràn sẽ xuất hiện khi có sự
chuyển trên bộ đếm Timer từ FFFH sang 0000H và sẽ set cờ tràn Timer, sau
đó Timer đếm tiếp.
- Cờ tràn là bit TFx trong thanh ghi TCON mà nó sẽ được đọc hoặc ghi
bởi phần mềm.
- Bit có trọng s ố lớn nhất (MSB) của giá trị trong thanh ghi Timer là bit
7 của THx và bit có trọng số thấp nhất (LSB) là bit 0 của TLx. Bit LSB đổi
trạng thái ở tần số clock vào được chia 216 = 65.536.
- Các thanh ghi Timer TLx và Thx có thể được đọc hoặc ghi tại bất kỳ
thời điểm nào bởi phần mềm.
3.3 .Chế đô tư đống nap lai ( chế đô 2):
Mode 2 là mode tự động nạp 8 bit, byte thấp TLx của Timer hoạt động
như một Timer 8 bit trong khi byte cao THx của Timer giữ giá trị Reload. Khi
bộ đếm tràn từ FFH sang 00H, không chỉ cờ tràn được set mà giá trị trong THx
cũng được nạp vào TLx : Bộ đếm được tiếp tục từ giá trị này lên đến sự chuyển
trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục. Mode này thì phù hợp
bởi vì các sự tràn xuất hiện cụ thể mà mỗi lúc nghỉ thanh ghi TMOD và THx
được khỡi động.
3.4 .Chế đô đinh thời chia xẻ (chế đô 3):
Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer.
- Timer 0 ở mode 3 được chia là 2 timer 8 bit. TLO và THO hoạt động
như những Timer riêng lẻ với sự tràn sẽ set các bit TLO và TF1 tương ứng.
- Timer 1 bị dừng lại ở mode 3, nhưng có thể được khởi động bởi việc
ngắt nó vào một trong các mode khác. Chỉ có nhược điểm là cờ tràn TF1 của
Timer 1 không bị ảnh hưởng bởi các sự tràn của Timer 1 bởi vì TF1 được nối
với THO.
- Mode 3 cung cấp 1 Timer ngoại 8 bit là Timer thứ ba của AT89C51.
Khi vào Timer 0 ở mode 3, Timer có thể hoạt động hoặc tắt bởi sự ngắt nó ra
ngoài và vào trong mode của chính nó hoặc có thể được dùng bởi Port nối tiếp
như là một máy phát tốc độ Baud, hoặc nó có thể dùng trong hướng nào đó mà
không sử dụng Interrupt.
3.5 .Nguồn xung clock đỉnh thời:

Mạch đếm sản phẩm giao tiếp PC


Luận vãn tết nghiệp

Có hai nguồn xung clock có thể đếm giờ là sự định giờ bên trong và sự đêm
sự kiện bên ngoài. Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer
được khởi động.

1 = Down ÍEvent Countine)


Hình 2.1.8 : Nguồn xung clock
3-6 .Đinh thời mỏt khoáng thời gian:
Nếu bit C/T = 0 thì hoạt động của Timer liên tục được chọn vào bộ
Timer được ghi giờ từ dao động trên Chip. Một bộ chia 12 được thêm vào để
giảm tần số clock đến 1 giá trị phù hợp với các ứng dụng. Các thanh ghi TLx
và THx tăng ở tốc độ 1/12 lần tần số dao động trên Chip. Nếu dùng thạch anh
12MHz thì sẽ đưa đến tốc độ clock 1MHz.
- Các sự tràn Timer sinh ra sau một con sô cô định cua những xung
clock, nó phụ thuộc vào giá trị khởi tạo được LOAD vào các thanh ghi THx và
TLx.
Đếm sự kiện:
Nếu bit C/T = 1 thì bộ Timer được ghi giờ từ nguồn bên ngoài trong .
nhiều ứng dụng, nguồn bên ngoài này cung cấp 1 sự định giờ với 1 xung trên
sự xảy ra của sự kiện. Sự định giờ là sự đếm sự‘kiện. Con số sự kiện được xác
định trong phần mềm bởi việc đọc các thanh ghi Timer. Tlx/THx, bơi VI gia tTỊ
16 bit trong các thanh này tăng lên cho mỗi sự kiện.
- Nguồn xung clock bên ngoài đưa vào chân P3.4 là ngõ nhập cua xung
clock bởi Timer 0 (TO) và P3.5 là ngõ nhập của xung clock bởi Timer 1 (T l).
- Trong các ứng dụng đếm các thanh ghi Timer được tăng trong đáp ứng
của sự chuyển trạng thái từ 1 sang 0 ở ngõ nhập Tx. Ngõ nhập bên ngoài được
thử trong suốt S5P2 của mọi chu kỳ máy: Do đó khi ngõ nhập đưa tới mức cao
trong một chu kỳ và mức thấp trong một chu kỳ kê tiếp thì bộ đêm tăng lên
một. Giá trị mới xuất hiện trong các thanh ghi Timer trong suốt S5P1 của chu
kỳ theo sau một sự chuyển đổi. Bởi vì nó chiếm 2 chu kỳ máy (2ps) đê nhận ra

Mạch đếm sản phẩm gmữ tiệp PC


Luận văn tết nghiệp

sự chuyển đổi từ 1 sang 0, nên tần sô" bên ngoài lớn nhất là 500KHz nếu dao
động thạch anh 12 MHz.
3.7 Khỏtì đông, dừng và điều khiến các bô đinh thời:
Bit TRx trong thanh ghi có bit định vị TCON được điều khiển bởi phần
mềm để bắt đầu hoặc kết thúc các Timer. Để bắt đầu các Timer ta set bit TRx
và để kết thúc Timer ta Clear TRx. Ví dụ Timer 0 được bắt đầu bởi lệnh SETB
TRO và được kết thúc bởi lệnh CLR TRO (bit Gate= 0). Bit TRx bị xóa sau sự
reset hệ thống, do đó các Timer bị cấm bằng sự mặc định.
- Thêm phương pháp nữa để điều khiển các Timer là dùng bit GATE
trong thanh ghi TMOD và ngõ nhập bên ngoài INTx. Điều này được dùng để
đo các độ rộng xung. Giả sử xung đưa vào chân INTO ta khởi động Timer 0 cho
mode 1 là mode Timer 16 bit với TL0/TH0 = 0000H, GATE = 1, TRO = 1.
Như vậy khi INTO = 1 thì Timer “được mở cổng” và ghi giờ với tốc độ của tần
sô" 1MHz. Khi INTO xuống thấp thì Timer “đóng cổng” và khoảng thời gian
của xung tính bằng ỊIS là sự đếm được trong thanh ghi TLO/THO.

INTO (P3.2)

Hình 2.1.9: Hoạt động ở chê" độ 1 của bộ định thời 1

3.8 .Khỏi đông và truy xuất các thanh ghi đỉnh thời:
Các Timer được khởi động 1 lần ở đầu chương trình để đặt mode hoạt
động cho chúng. Sau đó trong chương trình các Timer được bắt đầu, được xóa,
các thanh ghi Timer được đọc và cập nhật... theo yêu cầu của từng ứng dụng
cụ thể.

Mạch đấm sần phẩm giao tiếp PC


Luận văn tất nghiệp

Mode Timer TMOD là thanh ghi đầu tiên được khởi gán, bởi vì đặt mode
hoạt động cho các Timer. Ví dụ khởi động cho Timer 1 hoạt động ở mode 1
(mode Timer 16bit) và được ghi giờ bằng dao động trên Chip ta dùng lệnh :
MOV TMOD, # 00001000B. Trong lệnh này M l = 0, MO = 1 để vào mode 1
và C/T = 0, GATE = 0 để cho phép ghi giờ bên trong đồng thời xóa các bit
mode của Timer 0. Sau lệnh trên Timer vẫn chưa đếm giờ, nó chỉ bắt đâu đem
giờ khi set bit điều khiển chạy TRI của nó.
Nếu ta không khởi gán giá trị đầu cho các thanh ghi TLx/THx thì Timer
sẽ bắt đầu đếm từ OOOOHlên và khi tràn từ FFFFH sang 0000H nó sẽ bắt đầu
tràn TFx rồi tiếp tục đếm từ 0000H lên tiêp . . . .
Nếu ta khởi gán giá trị đầu cho TLx/THx, thì Timer sẽ bắt đâu đem từ giá
trị khởi gán đó lên nhưng khi tràn từ FFFFH sang 0000H lại đêm từ 0000H lên.

Chú ý rằng cờ tràn TFx tự động được set bởi phần cứng sau mỗi sự tràn và
sẽ được xóa bởi phần mềm. Chính vì vậy ta có thể lập trình chờ sau môi lân
tràn ta sẽ xóa cờ TFx và quay vòng lặp khởi gán cho TLx/THx để Timer luôn
luôn bắt đầu đếm từ giá trị khởi gán lên theo ý ta mong muốn.
Đặc biệt những sự khởi gán nhỏ hơn 256 ps, ta sẽ gọi mode Timer tự
động nạp 8 bit của mode 2. Sau khi khởi gán giá trị đâu vào THx, khi set bit
TRx thì Timer sẽ bắt đầu đếm giá trị khởi gán và khi tràn từ FFH sang 00H
trong TLx, cờ TFx tự động được set đồng thời giá trị khởi gán mà ta khởi gán
cho Thx được nạp tự động vào TLx và Timer lại được đêm từ giá trị khởi gán
này lên. Nói cách khác, sau mỗi tràn ta không cần khởi gán lại cho các thanh
ghi Timer mà chúng vẫn đếm được lại từ giá trị ban đầu.

1.3. HOAT ĐỐNG PO RT N ổ i T IE P ;

1. Giđi thiêu:
8051/8031 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế
độ khác trên một dãy tần số rộng. Chức năng chủ yêu của một port nốỉ tiếp là
thực hiện chuyển đổi song song sang nối tiếp với dữ liệu xuât và chuyên đôi
nối tiếp sang song song với dữ liệu nhập.
Truy xuất phần cứng đến port nối tiếp qua các chân TXD và RXD. Các
chân này có các chức năng khác với hai bit của port 3. P3 ở chân 11 (TXD) và
P3.0 ở chân 10 (RXD).
Port nôi tiếp cho hoạt động song công (full duplex : thu và phát đông thời)
và đệm lúc thu (receiver buffering) cho phép một ký tự sẽ được thu và được

Mạch đếm sân phẩm gừto tiếp PC


Luận vổ» tốt nghiệp

giữ trong khi ký tự thứ hai được nhận. Nếu CPU đọc ký tự thứ nhất trước khi ký
tự thứ hai được thu đầy đủ thì dữ liệu sẽ không bị mất.
Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port
nối tiếp là : SBUF và SCON. Bộ đếm port nối tiếp (SBUF) ở đại chỉ 99H thật
sử là hai bộ đếm. Viết vào SBUF để truy xuất dữ liệu thu được. Đây là hai
thanh ghi riêng biệt thanh ghi chỉ ghi để phát và thanh ghi để thu.

TXD (P3.1) RXD (P3.0)

Hình 2.1.10: Sơ đồ port nốỉ tiếp.


Thanh ghi điều khiển port nôl tiếp (SCON) ở địa chỉ 98H là thanh ghi có
địa chỉ bit chứa các bit trạng thái và các bit điều khiển. Các bit điều khiển đặt
chế độ hoạt động cho port nốì tiếp, và các bit trạng thái báo cáo kết thúc việc
phát hoặc thu ký tự. Các bit trạng thái có thể được kiểm tra bằng phần mềm
hoặc có thể được lập trình để tạo ngắt.
Tần sô" làm việc của port nốì tiếp còn gọi là tốc độ baund có thể cô" định
(lây từ bộ giao động của chip). Nếu sử dụng tốc độ baud thay đổi, timer 1 sẽ
cung câ"p xung nhịp tốc độ baud và phải được lập trình.
2. Thanh ghi điểu khiển p ort nổì tiếp :

Chê" độ hoạt động của port nôi tiếp được đặt bằng cách ghi vào thanh ghi
chê" độ port nôi tiếp (SCON) ở địa chỉ 98H. Sau đây các bảng tóm tắt thanh ghi
SCON và các chê" độ của port nối tiếp :

Mạch đếm sẵn phẩm giao tiếp PC Trang 28


Luận văn tết nghiệp

SMO SM1 C hế độ Mô tả TỐC độ baud

0 0 0 Thanh ghi Cố định (Fosc /12 )


dịch Thay đổi ( đặt bằng
0 1 1
UART 8 bit tim er)
Cô" định (Fosc /12
1 0 2
hoặc Fosc/64)
UART 9 bit
Thay đổi ( đặt bằng
1 1 3 tim er)
UART 9 bit

B ảng 2.1.8: Bảng chọn ch ế độ của port nôi tiếp

Bit Ký hiệu Địa chỉ Mô tả

SCON.7 SMO 9FH Bit 0 của chế độ port nối tiếp

SCON .6 SM1 9EH Bit 1 của chế độ port nối tiếp

SCON.5 SM3 9DH Bit 2 của chế độ port nối tiếp . Cho
phép truyền thông xử lý trong các chế
độ 2 và 3, RI sẽ không bị tác động nếu
bit thứ 9 thu được là 0
SCON.4 REN 9CH Cho phép bộ thu phải được đặt lên 1 để
thu các ký tự

SCON.3 TB8 9BH Bit 8 phát, bit thứ 9 được phát trong
chế độ 2 v à-3, được đặt và xóa bằng
phần mềm.

SCON.2 RB8 9AH B it 8 thu, bit thứ 9 thu được

SCON.l TI 99H Cờ ngắt phát. Đặt lên 1 khi kết thúc


phát ký tự, được xóa bằng phần mềm
SCON.O RI 98H Cờ ngắt thu. Đặt lên 1 khi kết thúc thu
ký tự, được xóa bằng phần mềm

B ảng 2.1.9: Các ch ế độ port nổì tiêp.


Trước khi sử dụng port nối tiếp, phải khởi động SCON cho đúng chế độ.
Ví dụ, lệnh sau:

MOV s CON,#0101001OB

Mạch đếm sản phẩm gìữữ tiếp PC


Luận văn tốt nghiệp

Khởi động port nối tiếp cho chế độ 1 (SM0/SM1=0/1), cho phép bộ thu
(REN=1) và đặt cờ ngắt phát (TP=1) để chỉ bộ phát sẩn sàng hoạt động.

3. Khởi đông và truy xuất cá c thanh ghi cống nổi tiêp :


3.1. Cho phép thu:
Bit cho phép bộ thu (REN = Receiver Enable) trong SCON phải được
đặt lên 1 bằng phần mềm để cho phép thu các ký tự. Thông thường thực hiện
việc này ở đầu chương trình khi khởi động cổng nối tiêp, timer... Có thể thực
hiện việc này theo hai cách. Lệnh :

SETB REN
Sẽ đặt REN lên 1, hoặc lệnh :

MOV SCON,#xxxlxxxxB
Sẽ đặt REN 1 và đặc hoặc xóa đi các bit khác trên SCON khi cần (các X

phải là 0 hoặc 2 để đặc chế độ làm việc).


3.2 .Bit dữ liêu thứ 9:
Bit dữ liệu thứ 9 cần phát trong các chế độ 2 và 3, phải được nạp vào
trong T B 8 bằng phần mềm. Bit dữ liệu thứ 9 thu được đặt ở RBS. Phần mềm có
thể cần hoặc không cần bit dữ liệu thứ 9, phụ thuộc vào các đặc tính kỹ thuật
của thiết bị nôi tiếp sử dụng (bit dữ liệu thứ 9 cũng đóng vai một trò quan trọng
trong truyền thông đa xử lý).
3.3. Thêm 1 bit parity:
Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự. Như đã xét ở
các chương trước, pit p trong từ trạng thái chương trình (PSW) được đặt lên 1
hoặc bị xóa bởi chu kỳ máy để thiết lập kiểm tra chấn với 8 bit trong thanh tích
lũy.
3.4. CÚC c ờ n e ắ t:
Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quan
trọng truyền thông nối tiếp dùng 8051/8031. c ả hai bit được đặt lên 1 bằng
phần cứng, nhưng phải được xóa bằng phần mềm.

4. TỐC đô baud p ort nổì tiếp :


Như đã nói, tốc độ baud cố định ở các chê độ 0 và 2. Trong chê độ 0 nó
luôn luôn là tần số dao động trên chip được chia cho 12 . Thông thường thạch
anh ân định tần scí dao động trên chip của 8051/8031 nhưng cũng có thê sử
dụng nguồn xung nhịp khác. Giả sử với tần s ố dao động danh định là 12 MHz,
tìm tốc độ baud chế độ 0 là 1 MHz.

Mạch đếm sần phẩm g im tiếp PC


Luận văn tốt nghiệp

Dao động Xung nhịp


trên chip tốc độ baud

Dao động Xung nhịp

trên chip tốc độ baud

Dao động Xung nhịp

trên chip tốc độ baud

c. Chế độ 1 và 3.
Hình 2.1.11: Các nguồn tạo xung nhịp cho port nối tiếp.
Mặc nhiên, sau khi reset hệ thống, tốc độ baud chê độ là 2 tân sô bọ dao
động chia cho 64. Tốc độ baud cũng ảnh hưởng bởi 1 bit trong thanh ghi điều
khiển nguồn cung cấp (PCON). Bit 7 của PCON là bit SMOD. Đặt bit sMOD
lên một làm gấp đôi tốc độ baud trong chế độ 1, 2 và 3. Trong chê độ 2, tôc đọ
baud có thể bị gấp đôi từ giá trị mặc nhiên của 1/64 tần số dao động
(SMOD=0) đến 1/32 tần số dao động (SM OD=l)
Vì PCON không được định địa chỉ theo bit, nên để đặt bit SMOD lên 1
cần phải theo các lệnh sau:
MOV A,PCON lấy giá trị hiện thời của PCON

SETB ACC.7 đặt bit 7 (SMOD) lên 1

MOV PCON,A ghi giá trị ngược về PCON


Các tốc độ baud trong các chế độ 1 và 3 được xác định bằng tốc độ tràn
của timer 1. Vì timer hoạt động ở tần số tương đối cao, tràn timer được chia
thêm cho 32 ( hay 16 nếu SMOD=l ) trước khi cung cấp xung nhịp tốc độ baud
cho port nôi tiếp.

Mạch đêm sản phẩm giao tiếp PC 31


Luận văn tết nghiệp

1.4. HOAT ĐỐNG NGÁT:

Ngắt ( interupt) là sự xảy ra của một điều kiện - một sự kiện - làm cho
chương trình hiện hành bị tạm ngưng trong khi điều kiện được phục vụ bởi một
chương trình khác. Các ngắt đóng vai trò quan trọng trong việc thiết kế và thực
hiện các ứng dụng của bộ vi điều khiển. Các ngắt cho phép hệ thống đáp ứng
một sự kiện theo cách không đồng bộ và xử lý sự kiện trong khi một chưong
trình khác đang thực thi. Một hệ thống điều khiển bởi ngắt cho ta ảo tưởng
đang làm nhiều công việc đồng thời.

CPU dĩ nhiên không thể thực thi nhiều hơn một lệnh ở một thời điểm
nhưng CPU có thể ngưng tạm thời việc thực thi một chương trình để thực thi
một chương trình khác rồi sau đó quay trở về thực thi tiêp chương trình đang bị
tạm ngưng.

1. T ổ chức ngắt của 8051:

Vi Điều Khiển có 5 nguồn ngắt: 2 nguồn ngắt ngoài, 2 ngắt timer và 1


ngắt Port nối tiếp, tất cả các nguồn ngắt bị cấm sau khi reset hệ thông và cho
phép bởi phần mềm.
Khi xảy ra hai hay nhiều ngắt đồng thời hoặc xảy ra một ngắt trong khi
một ngắt khác đang được phục vụ, ta có hai sơ đồ xử lý n gắt: sơ đồ chuỗi vòng
(cố định ) và sơ đồ hai mức ưu tiên (được lập trình bởi người sử dụng ).
l . l . Cho phép và không cho phép ngắt:
Mỗi nguồn ngắt được cho phép hoặc không cho phép thông qua thanh
ghi chức năng đặc biệt có các bit được địa chỉ hóa IE (Interrupt Enable) tại địa
chỉ 0A8H. ____________________
B IT K í hiệu Địa chỉ bỉt Mô tả:
(l:ch o phép Orkhông cho phép)
IE.7 EA AFH Cho phép/ không cho phép toàn cục
IE .6 - AEH Không sử dụng
IE.5 ET2 ADH Cho phép ngắt do bộ định thời 2
IE.4 ES ACH Cho phép ngắt do port nối tiếp
IE.3 ET1 ABH Cho phép ngắt do bộ định thời 1
IE.2 EX1 AAH Cho phép ngắt từ bên ngoài (ngắt ngoài 1)
IE .l EXO A9H Cho phép ngắt từ bên ngoài (ngắt ngoài 0)
IE.O ETO A 8H Cho phép ngắt do bộ định thời 0

Bảng 2.1.10 .‘Thanh ghi cho phép ngắt IE

Mạch đếm sản phẩm gừtữ tiếp PC


Luận vấn tết nghiệp

1.2. ưu tiên ngắt:


Mỗi một nguyên nhân ngắt được lập trình riêng rẽ để có một trong hai
mức ưu tiên thông qua thanh ghi chức năng đặc biệt được định địa chỉ bit, thanh
ghi ưu tiên ngắt IP(interrpt priority), thanh ghi này có địa chỉ byte là 0B8H.

B ít Kí Địa chỉ Mô tả:


hiệu bit (l:m ức cao; 0 : mức thấp)
IP.7 - Không sử dụng
IP .6 - - Không sử dụng
IP 5 PT2 OBDH Ưu tiên cho ngắt do bộ định thời 2
IP.4 PS OBCH Ưu tiên cho ngắt do port noi tiêp
IP.3 PT1 OBBH Ưu tiên cho ngắt do bộ định thời 1
IP.2 PX1 OBAH Ưu tiên cho ngắt do' bên ngoài (ngắt ngoài 1)
IP.l PTO 0B9H Ưu tiên cho ngắt do bộ định thời 0
IP.O PXO OB8 H Ưu tiên cho ngắt do bên ngoài (ngắt ngoài 0 )

Bảng 2.1.11: Thanh ghi ưu tiên ngắt IP

2. X ử lv ngắt;
Khi có một ngắt xuất hiện và được CPU nhận, chương trình chính bị ngăt.
Các thao tác xảy ra như sau:
_ Hoàn tất việc thực thi hiện hành.
- Bộ đếm chương trình PC được cất vào stack.
_ Trạng thái của ngắt hiện hành được lưu giữ lại.
- Các ngắt được chận lại ở mức ngắt.
_ Bộ đếm chương trình PC được nạp địa chỉ vector của trình phục vụ
ngắt ISR.
- ISR được thực thi.
ISR được thực thi để đáp ứng công việc của ngắt. Việc thực thi ISR kết
thúc khi gặp lệnh RETI ( trở về từ một trình phục vụ ngắt). Lệnh này lấy lại giá
trị cũ của bộ đếm chương trình PC từ stack và phục hồi trạng thái của ngắt cũ.
Việc thực thi chương ưình chính được tiếp tục ở nơi bị tạm ngưng.

Mạch đếm sân phẩm giao tiếp PC


Luận vần tốt nghiệp

Ngắt Cờ Thanh ghi SFR và vị trí


bit

Do bên ngoài (ngắt ngoài 0 ) IEO TCON.l

Do bên ngoài ( ngắt ngoài 1) IE1 TCON.3

Do bộ định thời 1 TF1 TCON.7

Do bộ định thời 0 TF0 TCON.5

Do port nối tiếp TI TCON.l

Do port nốì tiếp RI TCON.O

Do bộ định thời 2 TF2 T20N .7

Do bộ định thời 2 EXF2 T20N .6


____________________________
B ảng 2.1.12 : Các cờ ngắt

❖ VécTơ Ngắt
Khi ngắt được chấp nhận giá trị được đưa vào PC (ProgRAM Counter) gọi
là vector ngắt (Inteưupt Vector)

Ngắt do Cờ Địa chỉ vector

Reset hệ thống RST 0000H

Ngắt ngoài 0 IEO 0003H

Bộ định thời không TF0 000BH

Ngắt ngoài 1 IE1 0013H

Bộ định thời 1 TF1 001BH

Port nối tiếp RI hoặc TI 0023H

Bộ định thời 2 TF2 hoặc EXF2 002BH

B ảng 2.1.13 : Các vector ngắt

3. C ác ngắt của 8951;

3 .1 .Các ngắt tim er:


Các ngắt timer có địa chỉ vector ngắt là 000Bh( Timer 0) và OOlBh
(Timer 1 ). Ngắt Timer xảy ra khi các thanh ghi Timer ( TLx và THx ) tràn và

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

set cờ báo tràn lên 1. Các cờ Timer TFx không bị xoá bằng phần mềm. Khi cho
phép ngắt, TFx tự động bị xóa bằng phần cứng khi chuyển đến ngắt.

3 .2 . Ngắt Port nổì Tiếp


Ngắt Port nối tiếp xảy ra khi cả 2 cờ ngắt truyền (TI) hoặc cờ ngăt nhận
(RI) được đặt. Ngắt truyền xảy ra khi bit cuối cùng ttong SBUF truyền xong
tức là lúc này thanh ghi SBUF rỗng .Ngắt nhận xảy ra khi SBƯF đã hoàn thanh
việc nhận và đang đợi để đọc tức là lúc này thanh ghi SBƯF đầy. Cả hai cờ
ngắt này được đăt bởi phần cứng và xóa bằng phần mềm.

3 .3 . Ngắt ngoài:
Các ngắt ngoài xẩy ra khi có một mức thấp hoặc cạnh xuông trên chân
INTO hoặc INT1 của vi điều khiển. Đây là chức năng chuyển đổi của các bit
Port 3.(Port 3.2 và Port 3.3).
Các cờ tạo ngắt này là các bit IEO vá IE1 trong TCON. Khi quyền điều
khiển đã chuyển đến ISR, cờ tạo ra ngắt chỉ được xóa nếu ngắt được tích cực
bằng cạnh xuống. Nếu ngắt được tích cực theo mức, thì nguồn yêu cầu ngắt
bên ngoài sẽ điều khiển mức của cờ thay cho phần cứng.
Sự lựa chọn ngắt tích cực mức thấp hay tích cực cạnh xuống được lập trình
qua các bit ITO và IT1 trong TCON. Nếu IT1 = 0, ngắt ngoài 1 được tác động
bằng múc thấp ở chân IT1. Nếu IT1 = 1 ngắt ngoài 1 sẽ được tác đọng bang
cạnh xuống, trong chê độ này, nếu các mâu liên tiêp tren chan INT1 chi mưc
cao trong một chu kỳ và chỉ mức thấp trong chu kỳ kế, cờ yêu cầu ngắt IE1
trong TCON được đặt lên 1, rồi bit IÉ yêu cầu ngắt.
Nếu ngắt ngoài được tác động bằng cạnh xuông thi nguon ben ngoai phai
giữ chân tác động ở mức cao tối thiểu một chu kỳ và giữ nó ở mức thấp thêm
một chu kỳ nữa để đảm bảo phát hiện được cạnh xuông. Nêu ngăt ngoai được
tác động theo mức thì nguồn bên ngoài phải giữ tín hiệu yêu câu tác động cho
đến khi ngắt được yêu cầu được thật sự tạo ra và không tác động yêu cầu ngắt
trước khi ISR được hoàn tấ t. Nếu không một ngắt khác sẽ được lặp lại.

1.5. TỎM TẮ T TẲ P LÊ N H :

1. C ác kiểu đinh đia chỉ:


Các kiểu định địa chỉ là phần cần thiết cho toàn bộ tập lệnh của một bộ vi
xử lý bộ vi điều khiển. Các kiêu định đia chi cho phep ta xac đinh ro nguon va
đích theo nhiều cách khác nhau phụ thuộc tình huống lập trình. Trong phân này
ta khảo sát tất cả các kiểu định địa chỉ của 89C51. Có 8 kiểu định địa chỉ:

Mạch đếm sấn phẩm giao tiếp PC


Luận văn tết nghiệp

- Thanh ghi ( register)


- Trực tiếp ( direct).
- Gián tiếp ( indữect).
- Tức thời ( immediate).
- Tương đối ( relative).
- Tuyệt đối (absolute).
- Dài ( long).
- Chỉ số’ ( index).

1.1 .Đinh đia chỉ thanh ghi:


Người lập trình trên AT89C51 có thể truy xuất 8 thanh ghi “ làm việc”
được đánh số từ RO đến R7. các lệnh sử dụng kiểu định địa chỉ thanh ghi được
mã hoá bằng cách dùng 3 bit thấp của opcode( của lệnh ) để chỉ ra một thanh
ghi bên trong không gian địa chỉ logic này. Như vậy 1 mã chức năng và địa chỉ
hoạt động có thể được kết hợp để tạo thành một lệnh ngắn 1 byte như sau:
------ 1------ 1----- 1------- 1------ 1------ 1------- '-------
Ơ D Code
I I I I____ I------ 1------- 1-------

Có 4 dãy thanh ghi “làm việc” nhưng ở một thời điểm chỉ có một dãy
thanh ghi tích cực. Các dãy thanh chiếm 32 byte đầu tiên của RAM dữ liệu trên
chip ( địa chỉ từ 00H đến 1FH ) và ta dùng các bit 4 và 3 của từ trạng thái
chương trình PSW để chỉ ra dãy thanh ghi tích cực. Một reset bằng phần cứng
cho phép dãy 0 tích cực còn các dãy khác được chhọn bằng cách sửa đôi các bit
4 và 3 của PSW sao cho phù hợp.

1.2.Đinh đia chỉ trực tiếp:


Sự định địa chỉ trực tiếp có thể truy xuất bất kỳ giá trị nào trên Chip hoặc
thanh ghi phần cứng trên Chip. Một byte địa chỉ trực tiếp được đưa vào Opcode
để định rõ vị trí được dùng như sau:
------ 1------1------ 1------ 1------- 1 I ■
Opcode
■ I I____ I------- 1------ 1------ 1-------

------ 1------ 1------ 1------ 1—----- 1------ r------ 1-------


Direct Addressing
I____I------ 1------ 1------- 1------ '------ 1-------
Tùy thuộc các bit bậc cao của địa chỉ trực tiếp mà một trong 2 vùng nhổ
được chọn. Khi bit 7 = 0, thì địa chỉ trực tiếp ở trong khoảng 0+127 (00H+7FH)
và 128 vị trí nhớ thấp của RAM trên Chip được chọn.

Mạch đếm sản phẩm giao tiếp PC


Luận văn tốt nghiệp

Tất cả các Port I/O, các thanh ghi chức năng đặc biệt, thanh ghi điều
khiển hoặc thanh ghi trạng thái bao giờ cũng được quy định các địa chỉ trong
khoảng 128-Ỉ-255 (80-FFH). Khi byte địa chỉ trực tiếp nằm trong giới hạn này
(ứng với bit 7 = 1 ) thì thanh ghi chức năng đặc biệt được truy xuất. Ví dụ Port 0
và Port 1 được quy định địa chỉ trực tiếp là 80H và 90H, PO, P1 là dạng thức
rút gọn thuật nhớ của Port, thì sự biến thiên cho phép thay thế và hiểu dạng
thức rút gọn thuật nhớ của chúng. Chẳn hạn lệnh:
MOV P I, A <= sự biên dịch sẽ xác định địa chỉ trực tiếp của Port 1 là
90H đặt vào hai byte của lệnh (byte 1 của port 0).

1.3 .Dinh đia chỉ gián tiếp:


Sự định địa chỉ gián tiếp được tượng trưng bởi ký hiệu @ được đặt trước
RO R I hay DPTR. R0 và R I có thể hoạt động như một thanh ghi con trỏ mà
nội dung của nó cho biêt một địa chỉ trong RAM nội ở nơi mà dữ liệu được ghi
hoặc được đọc. Bit có trọng số nhỏ nhất của Opcode lệnh sẽ xác định RO hay
R I được dùng con trỏ Pointer.
------ 1----- 1------- 1------ 1------ 1----- 1------- 1-------
ODcode
I__ I___ I___ I___ I---J--- 1----

1.4.Đinhđia chỉ tức thời:


Sự định địa chỉ tức thời được tượng trưng bởi ký hiệu # được đứng trước
một hằng số, 1 biến ký hiệu hoặc một biểu thức số học được sử dụng bởi các
hằng các ký hiệu, các hoạt động do người điều khiên. Trình biên dịch tính
toán giá trị và thay thế dữ liệu tức thời. Byte lệnh thêm vô chứa trị số dữ liệu
tức thời như sau:

1.5.Đinh đỉa chỉ tương đốì;


Sự định địa chỉ tương đối chỉ sử dụng với những lệnh nhảy nào đó. Một
địa chỉ tương đối (hoặc Offset) là một giá trị 8 bit mà nó được cộng vào bộ đếm
chương trình PC để tạo thành địa chỉ một lệnh tiếp theo được thực thi. Phạm vi
của sự nhảy nằm trong khoảng -128 -ỉ- 127. Offset tương đối được gắn vào lệnh
như một byte thêm vào như sau:

Mạch đếm sân phẩm giao tiếp PC


Luận vãn tết nghiệp

Những nơi nhảy đến thường được chỉ rõ bởi các nhãn và trình biên dịch
xác định Offset Relative cho phù hợp.

Sự định vị tương đối đem lại thuận lợi cho việc cung cấp mã vị trí độc
lập, nhưng bất lợi là chỉ nhảy ngắn trong phạm vi -128-Ỉ-127 byte.

1 -6-Đinh đỉa chỉ tuyệt đối:


Sự định địa chỉ tuyệt đối được dùng với các lệnh ACALL và AJMP. Các
lệnh 2 byte cho phép phân chia trong trang 2K đang lưu hành của bộ nhớ mã
của việc cung cấp 11 bit thấp để xác định địa chỉ trong trang 2K (A0+A10 gôm
A10-Ỉ-A8 trong Opcode và A7-Ỉ-A0 trong byte)\ằ 5 bit cao đê chọn trang 2K (5
bit cao đang lưu hành trong bộ đếm chương trình là 5 bít Opcode).
— I----- 1------- 1------ 1------
Addr 10 -ỉ- Addr 8 Oncode
______ I____ I---- _I------ 1—

------ 1------ 1------ 1------ 1 I I I


Adđr 7 - Ađđr 0
■ 1____ I------ 1------ 1------ 1------ 1-------
Sự định vị tuyệt đối đem lại thuận lợi cho các lệnh ngắn (2 byte), nhưng
bất lợi trong việc giới hạn phạm vi nơi gởi đến và cung cấp mã có vị trí độc
lập.

U . Đinh đỉa chỉ dài:


Sự định vị dài được dùng với lệnh LCALL và LJMP. Các lệnh 3 byte này
bao gồm một địa chỉ nơi gởi tới 16 bit đầy đủ là 2 byte và 3 byte của lệnh.
Luận vấn tết nghiệp

ưu điểm của sự định dài là vùng nhớ mã 64K có thể được dùng hết,
nhược điểm là các lệnh đó dài 3 byte và vị trí lệ thuộc. Sự phụ thuộc vào vị trí
sẽ bất lợi bởi chương trình không thể thực thi tại địa chỉ khác.

1 . 8 .Đinh đỉa chỉ phu thuộc:


Sự định địa chỉ phụ lục dùng một thanh ghi cơ bản (cũng như bộ đêm
chương trình hoặc bộ đếm dữ liệu) và Offset (thanh ghi A) trong sự hình thành
1 địa chỉ liên quan bởi lệnh JMP hoặc MOVC.
Base Register Offset Effective Address

PC (or PDTR) ACC Index Address

Các bảng của lệnh nhảy hoặc các bảng tra được tạo nên một cách dê
dàng bằng cách dùng địa chỉ phụ lục.

2. C á c loai lênh :
Các lệnh của AT89C51 được chia thành 5 nhóm:
- Nhóm lệnh số học.
- Nhóm lệnh logic.
- Nhóm lệnh di chuyển dữ liệu.
- Nhóm lệnh xử lý bit.
- Nhóm lệnh rẽ nhánh.
Các chị tiết thiết lâp lênh:
Rn: Thanh ghi RO đến R7 của bank thanh ghi được chọn.
DATA: 8 bit địa chỉ vùng dữ liệu bên trong. Nó có thể là vùng RAM dữ
liệu trong ( 0 - 127 ) hoặc các thanh ghi chức năng đặc biệt.
@ R i: 8 bit vùng RAM dữ liệu trong ( 0 - 125 ) được đánh giá địa chỉ gián
tiếp qua thanh ghi RO hoặc R I .
#data: hằng 8 bit chứa trong câu lệnh.
#d atal 6 : Hằng 16 bit chứa trong câu lệnh.
Addrló: 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP.
A d d rll: 16 bit địa chỉ đích được dùng trong lệnh LCALL và AJMP.
Rel: Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những lệnh
nhảy có điều kiện.

Mạch đếm sản phẩm gmữ tiếp PC 39


Luận văn tết nghiệp

B it : Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các
thanh ghi chức năng đặc biệt.

2 . 1 .Các lênh sôThoc:


ADD A,Rn (1 byte, 1 chu kỳ máy ): cộng nội dung thanh ghi Rn vào
thanh ghi A.
ADD A,data (2,1): cộng trực tiếp 1 byte vào thanh ghi A.
ADD A ,@ R i (1,1): cộng gián tiếp nội dung RAM chứa tại địa chỉ được
khai báo trong Ri vào thanh ghi A.
ADD A,#data (2,1): cộng dữ liệu tức thời vào A.
ADD A,Rn (1,1): cộng thanh ghi và cờ nhớ vào A.
ADDC A ,@ R i (l,l):cộn g gián tiếp nội dung RAM vào cờ nhớ A.
ADDC A,#data (2,l):cộng dữ liệu tức thời và cờ nhớ vào A .
SUBB A,Rn (1,1): trừ nội dung thanh ghi A cho nội dung thanh ghi Rn
và cờ nhớ.
SUBB A,data (2,l):trừ trực tiếp A cho một số và cờ nhớ.
SUBB A ,@ R i (1,1): trừ gián tiếp A cho một số và cờ nhớ.
SUBB A,#data (2,1): trừ nội dung A cho một số tức tời và cờ nhớ.

INC A (1,1): tăng nội dung thanh ghi A lên 1.


INC Rn (1,1): tăng nội dung thanh ghi Rn lên 1.
INC data (2,1): tăng dữ liệu trực tiếp lên 1.
INC @ R i (1,1): tăng gián tiếp nội dung vùng RAM lên 1.

DEC A (1,1): giảm nội dung thanh ghi A xuống 1.


DEC Rn (1,1): giảm nội dung thanh ghi Rn xuống 1.
D EC data (2,1): giảm dữ liệu trực tiếp xuống 1.
DEC @ R i (1,1): giảm gián tiếp nội dung vùng RAM xuống 1.
INC D PTR (l,2):tăng nội dung con trỏ dữ liệu lên 1.
MUL AB (1,4): nhân nội dung thanh ghi A với nội dung thanh ghi B.

DIV AB (1,4): chia nội dung thanh ghi A cho nội dung thanh ghi B.

DA A (1,1): hiệu chỉnh thập phân thanh ghi A.

Mạch đếm sãn phẩm giao tiếp PC


Luận văn tết nghiệp

2.2. Các lênh luân Iv:


ANL A,Rn (1,1): AND nội dung thanh ghi A với nội dung thanh ghi Rn.
ANL A,data (2,1): AND nội dung thanh ghi A với dữ liệu trực tiếp.
ANL A ,@ R i (1,1): AND nội dung thanh ghi A với dữ liệu gián tiếp
trong RAM.
ANL A,#data (2,1): AND nội dung thanh ghi A với dữ liệu tức thời.

ANL data,A (2,1): A,d một dữ liệu trực tiếp với A.


ANL data,#data (3,2): AND một dữ liệu trực tiếp với một dữ liệu tức
thời.
ANL c,bit (2 ,2 ):
Các lệnh luận lý của 8951 thao tác trên bit đơn. RAM nội cung cấp 128
bit và các thanh ghi chức năng cung cấp 128 bit khác. Lệnh truy xuât đến các
bit thông thường như set, xóa, đảo, AND, O R ...
Tất cả các bit đều ttuy xuất bằng định vị trực tiêp với các bit có địa chỉ
từ 00H - 7Fh trong 128 địa chỉ thấp và 80H-FFH trong SFRs. Các bit trong
vùng địa chỉ thấp đạt tại 20F đến 2FH, được đánh số lần lượt từ bit 0 của địa
chì 200H (bit 00H) đến bit 7 của địa chỉ 2FH (bit 7Fh).

Ví dụ
SETB p. 1.7 set bit 7 port 1
Bit carry trong PSW được sử dụng như singlG-bit accumulator.

Ví dụ
CLR c
CLR CY ; xóa caưy
Test bỉt
Các lệnh test bit thường là các lệnh rẽ nhánh chương trình. Chúng kiem
tra trạng thái các bit để nhảy đên chương trình tương ứng nêu thoa điêu kiẹn.

Lênh rẽ nhánh chươne trình


Có một số lệnh điều khiển dòng chương trình, chúng gồm các lệnh gọi
chương trình con và trả về từ một chương trình con hoặc rẽ nhánh có điêu kiẹn
và không có điều kiện. Những khả năng này có thể được cải tiên hơn nữa khi
sử dụng 3 mode định vị trong các lệnh rẽ nhánh chương trình.

Mạch đếm sần phẩm gktữ tiếp PC Trang 41


Luận văn tết nghiệp

Có 3 kênh JMP khác nhau:SJMP, U M P và AJMP (tương ứng là định vị


tương đối định vị xa và định vị tuyệt đối). Trình biên dịch Intel chấp nhận lệnh
chung chung JMP nếu người lập trình không quan tâm đến sự thay đổi biên
dịch. Trong khi trình biên dịch của những hãng khác không có đặc tính này.
JMP được biên dịch thành AJMP nếu đích nằm ở trước và khoảng nhảy nằm
trong phạm vi 2Kbytes. Trong các trường hợp khác có thể dịch thành LJMP.
Lệnh CALL cũng tương tự như vậy.
Lệnh SJMP định địa chỉ đích như một offset tương đối. Vì vậy lệnh này
dài 2 bytes. Khoảng cách nhảy bị giới hạn từ -1 2 8 đên +127 bytes tương đối so
lệnh sau lệnh SJMP.
Lệnh LJMP xác định một địa chỉ đích là một số 16 bit. Vì vậy lệnh này
dài 3 bytes. Địa chỉ đích có thể ở bất kỳ trong vùng nhớ chương trình 63KB.
Lệnh AJMP xác định địa chỉ đích là một số 11 bit. Giống như SJMP,
lệnh này dài 2 bytes, nhưng được biên dịch khác. Mã lệnh chứa 3 bit trong
vòng 11 bit địa chủ và byte thứ hai chứa 8 bit còn lại của địa chỉ đích. Khi lệnh
được thi hành 11 bit này được đặt vào 11 bit thấp trong thanh ghi PC và 5 bit
cao trong thanh ghi PC không đổi. Vì vậy đích phải nằm trong phạm vi 2
Kbytes.
Trong tất cả các trường hợp, người lập trình xác định địa chỉ bit bằng
m ột nhãn hoặc như một s ố 16 bit. Trình biên dịch sẽ đặt địa chi đích vao VỊ tri
đúng trong lệnh được biên dịch.
.Jump Tables
Lệnh “JMP @ A+DPTR” cung cấp lệnh nhảy phụ thuộc điều kiện theo
một bảng nhảy (jump tables). Địa chỉ đích sẽ được tinh trong khi thi hanh
chương trình như tổng của DPTR và thanh ghi tích luỹ. Đầu tiên DPTR được
nạp địa chỉ của bảng và thanh ghi tích luỹ được dùng làm chỉ số. Ví dụ nếu có
5 trường hợp nhảy, giá trị từ 0 đến 4 được nạp cho thanh ghi tích luỹ và lệnh
nhảy tương ứng với từng trường hợp được mô tả như sau:
MOV DPTR, #JUMP_TABLE ;
MOV A, INDEX_NUMBER ;
RL A
JMP @A+DPTR
Lệnh RL ở trên đổi chỉ số (từ 0 đến 4) thành các số’ chẩn từ 0 đến 8 , vì
mỗi điểm xâm nhập trong bảng là một địa chỉ 2 -byte.
JN P_TA BLE: AJMP CASEO
AJMP CASE1
AJMP CASE2

Mạch đếm sần phẩm giao tiếp PC Trang 42


Luận văn tết

AJMP CASE3
Chương trình và con neắt
Có hai lệnh CALL khác nhau: ACALL và LCALL dùng định vị tuyệt
đối và xa. Giống như lệnh JMP, lệnh CALL đưôc trình biên dịch của Intel dùng
khi người lập trình không quan tâm đến địa chỉ được biên dịch. Lệnh này đây
thanh ghi PC vào stack và nạp PC với giá trị được chỉ ra trong lệnh. Lưu ý PC
sẽ được trả lại giá trị địa chỉ sau lệnh CALL khi nó châm dứt chương trinh con.
Các lệnh LJMP và ACALL đều có những hạn chế giống như LJMP và
AJMP được mô tả ở trên.
Chương trình con kết thúc bằng lệnh RET, nó sẽ trả điều khiển lại cho
chương trình chính. Không có gì bí ẩn khi RET trả điều khiển lại cho chương
trình chính, nó chỉ đơn giản lấy 2 bytes cuối cùng của stack và đặt chúng vào
thanh ghi PC.
Lệnh RETI dùng để quay trở về chương trình chính từ trong chương
trình phục vụ ngắt. Sự khác nhau giữa RET và RETI chỉ là RETI ký hiệu cho
ngắt điều khiển hệ thông.
Lênh nhảy có điều kiên
8951 cung cấp một sei lệnh nhảy có điều kiện. Tât cả những lệnh nay
đều xác định địa chỉ đích bằng định vị tương đối. Giới hạn khoảng cách nhảy từ
-1 2 8 đến +127 bytes kể từ sau lệnh nhảy có điều kiện. Tuy nhiên người lập
trình cũng có thể định một địa chỉ bằng nhhãn hoặc một số 16 bit.
Không có bit zero trong thanh ghi PSW. JZ và JNZ test nội dung thanh
ghi ACC cho điều khiển nhảy.
Lệnh DJNZ (nhảy nếu khác 0) được dùng để điều khiển vòng lặp. Đê
vòng lập thi hành N lần, nạp biến đếm với N và đặt DJNZ ở cuối vòng lặp để
bắt đầu vòng lặp. Ví dụ vòng lặp sau thi hành 10 lân:
MOV R0,#10 ;
LOOPP: (bắt đầu vòng lặp)

(kết thúc vòng lặp)


DJNZ R7, LOOP ;
(tiếp tục)
Lệnh CJNZ (so sánh và nhảy nếu không bằng) cũng dùng để điều khiển
vòng lặp. Hai bytes được xác định ữong vùng toán hạng của lệnh và lệnh nhảy
sẽ thi hành nếu hai bytes này khác nhau. Ví dụ, nếu một ký tự được đọc vao
thanh ghi ACC từ cổng nối tiếp và nhảy đến nhãn TERMINAL nếu ký tự đọc
vào là CONTROL-C (03H ).

Mạch đếm sần phẩm g im tiếp PC


Luận văn tốt nghiệp

CJNE A, #03, SKIP;


SJMP TERMINAL ;
SKIP: (tiếp tục)
Lệnh jump chỉ xảy ra khi A=03H.
Một ứng dụng khác của lệnh này là so sánh lớn hơn và bé hơn. Hai byte
trong miền toán hạng là những sô" không dấu. Nếu toán hạng đầu nhỏ hơn toán
hạng thứ hai thì cờ carry được set. Nếu toán hạng đầu lớn hơn hoặc bằng toán
hạng thứ hai thì cờ carry được xóa. Ví dụ nếu muốn nhảy đến BIG nếu ACC
lớn hơn hoặc bằng 20H, ta có các lệnh sau:
CJNE A,#20H,$+3
JNC BIG
Ký hiệu dollars “$ ” là một ký hiệu đặt biệt của trình biên dịch thay thê
cho địa chỉ của lệnh hiện thời. Vì CJNE là một lệnh 3-bytes, “$+3 ” là địa chỉ
của lệnh tiếp theo.

Trang 44
Luận văn tết nghiệp

Chương I I :

GIAO TIẾP VỚI MÁY TÍNH


Việc giao tiếp giữa máy tính và thiết bị ngoại vi có thể giao tiếp bằng 3
cách
■ Giao tiếp bằng Slot-Card.

■ Giao tiếp qua cổng song song (máy in)

■ Giao tiếp qua cổng nối tiếp (COM)

I I .l. GIỚI T H IỂ U CỔNG NỔI T IẺ P :


Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất. Người ta
còn gọi cổng này là cổng COM1, còn cổng COM2 để tự do cho các ứng dụng
khác. Giống như cổng máy in cổng COM cũng được sử dụng một cách thuận
tiện cho việc giao tiếp với thiết bị ngoại vi.
Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiêp.
Nghĩa là các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn. Loại
truyền này có khả năng dùng cho những ứng dụng có yêu cầu truyền khoảng
cách lớn hơn, bởi vì các khả năng gây nhiễu là nhỏ đáng kể hơn khi dùng một
cổng song song (cổng máy in).
Cổng COM không phải là một hệ thốíng bus nó cho phép dễ dàng tạo ra
liên kết dưới hình thức điểm với điểm giữa hai máy cần trao đổi thông tin với
nhau, một thành viên thứ ba không thể tham gia vào cuộc trao đổi thông tin
này.
* Các chân và đường dẫn được mô tả như sau:
1 13 ______ 1_________ 2_____

%■
- ( o o o o o o o o o o o o o ) n _ f o o o o o ') _
u \ o o o o o o o o o o o o / u o \ o o o ò / 0

14 25 6 9
Loại 25 chân Loại 25 chân

H ình 2.2.1: Sự bô' trí chân của phích cắm chuẩn RS232
Việc truyền dữ liệu xảy ra trên hai đường dẫn qua chân cắm ra TxD.
Máy tính gởi dữ liệu của nó đến các thiết bị khác. Trong khi đó dữ liệu mà
máy tính nhận được dẫn đến chân RxD. Các tín hiệu khác đóng vai trò như tín
hiệu hỗ trợ khi thay đổi thông tin và vì thế không phải mọi ứng dụng đều dùng
đến.

Mạch đếm sản phẩm giao tiếp PC 45


Luận văn tất nghiệp

Mức tín hiệu trên chân ra RxD tùy thuộc vào đường dân TxD và thông
tin thường nằm trong khoảng - 12V + +12V các bit dữ liệu được đảo ngược lại.
Mức điện áp ở mức cao nằm trong khoảng - 3V + - 12V và mức thấp nằm
trong khoảng từ +3V đến +12V. trạng htái tĩnh trên đường dẫn có mức điện áp
- 12V.
Bằng tốc độ Baud ta thiết lập tốc độ truyền dữ liệu các giá trị thông
thường là 300, 600, 1200, 2400, 4800,19200 baud. Ký hiệu baud là số lượng bit
truyền trong ls.

CHÂN CHÂN KÝ HIỆU MO TA


(Loại 9 (Loại 25
chân) chân)
1 8 DCD Data Carrier Detect
2 3 RXD Receive Data
3 2 TXD Transmit Data
4 20 DTR Data Terminal Ready
5 7 GND Mass
6 6 DSR Data Set Ready
7 4 RTS Request to Send
8 5 CTS Clear to Send
9 22 RI Ring Indicator

Bảng 2.2.1: Chức năng các chân của cổng COM chuẩn RS232
Phích cắm COM có tổng cộng 8 đường dẫn, chưa kể đến đường nối đất.
Trên thực tế có hai loại phích cắm, một loại 9 chân và một loại 25 chân. Cả hai
loại này đều có chung một đặc điểm.
Vì tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích
với điện áp TTL nên để giao tiếp KIT Vi điều khiển 8051 với máy tính qua
cổng COM ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức
TTL, ta chọn vi mạch MAX232 để thực hiện việc tương thích điện áp.

II.2. GIỚI T H IÊ U VI MA CH M A X 232:


Vi mạch MAX232 dùng để tương thích tín hiệu ở mức (+12V, -12V)
trên giao diện RS232.
Vi mạch MAX232 có nhiệm vụ chuyển đổi mức tín hiệu TTL ở lối vào
thành mức +10 V hoặc - 10 V ở phía truyền và mức +3 ...+15V hoặc -3...- 15V
ở mức TTL ở phía nhận.

Mạch đếm sản phẩm giao tiếp PC


Luận văn tốt nghiệp

Vi mạch MAX232 có hai bộ đệm và hai bộ phận. Đường điều khiển lối
vào CTS điều khiển việc xuất dữ liệu ở cổng nối tiêp khi cần thiêt, được nÔỊ
VỚI chân 9 của MAX232. còn chân RST ( chân 10 của MAX232 ) nôi với
đường dẫn bắt tay để điều khiển quá trình nhận. Thường thì các đường dân bat
tay được nối với cổng nối tiếp qua cầu nối, để khi không dùng đến nữa có thế
hở mạch các cầu này. Cách truyền dữ liệu đơn giản nhất là chỉ dùng 3 đường
dẫn TxD RxD và mass. Sơ đồ chân của MAX232 được biểu diễn trong hình
2.2.3
j3 Vcc
1 ] gnd
a Ticur

u filK
u Blcui
3ĨỊ TtH
Ì]T2h
D FSour

Hình 2.2.3: Sơ đồ chân cùa Max232


II.3. srí n ồ KẾT NỔI g iữ a CổNO TOM VỚI 8051 1
P1

Hình 2.2.2: Sơ đồ kết nối cổng COM với Max232


Luận văn tết

Phần III:

THIẾT K Ê VÀ THI CỒNG MẠCH


Chươns h
THIẾT K Ế PHẦN CỨNG
1.1. S ơ Đ ồ KH Ố I:

Hình 3.1.1: Sơ đồ khổĩ


1.2. S ơ Đ ồ N G U YÊN L Ý :
Sơ đồ nguyên lý của mạch đếm sản phẩm như hình 3.1.2

Mạch đếm sân phẩm giao tiếp PC


b I o I m <

in U)
5
o
o 5 CN w CO
»
Luận văn tốt nghiệp

1.3. TÍNH TOÁN T H IẾ T K Ế :


1. Khôi cám biến:
Khôi cảm biên bao gồm mạch phát hồng ngoại và mạch thu hồng ngoại.
Có nhiều phương án thiết kế mạch phát và thu hồng ngoại, tùy thuộc vào yêu
cầu về khoảng cách cần thu phát mà ta thiết k ế các mạch thu phát khác nhau.
Trong luận văn này do yêu cầu về khoảng cách không xa lắm và cần có độ
chính xác cao trong việc cảm biến nên em chọn mạch thu phát như sau:
a. Sơ đổ nguyên lv:
5V

Hình 3.1.3: Sơ đồ nguyên lý mạch thu phát


b. Nguyên lv hoat đông:
Trạng thái bình thường nếu không có sản phảm đi qua. Led phát phát
ánh sáng hồng ngoại liên tục, do đó led thu cũng nhận ánh sáng liên tục nên có
điện trở nhỏ. Lúc này điện áp trên chân V(+) của,opamp nhỏ hơn điện áp trên
chân V(-) nên điện áp tại ngõ ra của opampí= V(-Ị = ov.
Khi có sản phẩm đi qua, led thu khôngnhạn được ánh sáng từ led phát,
do đó điện trở trên led thu là rất lớn nên điện áp trên chân V(+) >V(-). Điện áp
ở ngõ ra opamp = V (+)« 5V. Như vậy trong hai trường hợp khi có sản phẩm và
không có sản phẩm chạy qua sẽ tạo ra một xung kích đưa đến vi điều khiển.
Transistor Q1 dùng để khuếch đại tín hiệu điện áp ở ngõ ra opamp
nhằm đảm bảo mức điện áp 5V cho xung kích vi điều khiển.
Để mạch phát tín hiệu đi xa hơn, ta phải tăng dòng cho led phát, do đó
ta phải mắc thêm IC 555, ta sử dụng mạch sau :

Mạch đếm sản phẩm giao tiếp PC 50


vãn tết nghiệp

Hình 3.1.4: Sơ đồ nguyên lý mạch phát dùng IC555


c. Gióri thiêu ĨC LM324:
❖ Sơ đổ chân:

0 U T 1 |= 1 14 □ ỎUT
V 1+ C 2 13 □ v 4_
V i- c 3 12 □ v 4+
v +c 4 11 □ V.
v 2+c 5 1 0 □ V3+
v 2_ c 6 9 □ v 3-
OUT 2 c 7 8 □ OUT

Hình 3.1.5: Sơ đồ chân của LM324


LM324 là một OPAMP gồm có 4 bộ so sánh, dùng để so sánh hai mức
điện áp vào v + và v\ ngõ ra sẽ cho hai mức điện áp +v và -V. Bảng trạng
thái như sau:

In (+) In (-) Out


y+ > V +v
v+ < V •-V
d. Tính toán:
Tính R<, R^, R5
Chọn Vcc = 5V, V led—2V, lĩFn=10mA
: V _V
i —ỳ
___ * r » ■YI c: i c: ' YI L. KI
E DI 5 2

V.' // 6 = 300Q
ILE D 10.10 - 3
Chọn R6=270 Q.
Tương tự chọn R3=270Q "') V ị Ị

51
Luận văn tết nghiệp

\ í.*
Chọn R 5 = 100Q
T

V cc—VrE 5 -0 ,2
= _ c c --------- C Ẹ . = ----------= 4 8 m A

R5 100
Chọn Q2SC1815 có p = 100
, Ic 48.10-3
•lo = — = - = 0,48mA
p 100
■p, v„ - VRF 3,8 - 0,7
=>R 4 = — — — = — , = 6,5KQ
IB 0,48.10“3
=> Chọn R 4 = 4,7KQ 7'
Tính R l ,R1,VR
Khi led thu nhận ánh sáng hồng ngoại thì có trở kháng rất nhỏ khoảng
vài trăm Ohm. Và khi không nhận ánh sáng thì có giá trị khoảng vài chục
KiloOhm.
Do đó để OPAMP nhận được mức điện áp đủ để so sánh giữa hai trường
hợp ta chọn : R! = 10KQ, R2= 100Q, VR = 10KQ.
rc.- ¡1 ,-
2 . Khỏi hiển thi:
Để hiển thị ta có thể dùng led 7 đoạn, màn hình LCD, ma trận led ... để
đơn giản trong mạch này dùng phương pháp hiển thị bằng led 7 đoạn và dùng
phương pháp quét led.
a. Sơ đồ nguyên lv:

Led7seg Led7seg • Led7seg Led7seg

Hình 3.1.6: Sơ đồ mạch hiển thị


b. Nguyên lv hoat đồng:
Dữ liệu cần xuât ra được đưa đến tất cả các led ở mức [0], nhưhg bình
thường ngõ ra của vi điều khiển ở mức [ 1] làm transistor không dẫn nên tất cả
các led đều không sáng. Khi cần xuất dữ liệu ra trên led nào thì vi điều khiển
phải đưa mức điện áp thâp đến cực B của transistor để transistor dẫn và led
được câp mức điện áp 5V nên led đó sáng. Và tiếp theo vi điều khiển lại xuất
tín hiệu chọn led đến các led tiếp theo và chu trình cứ lập lại nhiều lần. Như

Mạch đếm sản phẩm giao tiêp PC


Luận vân tốt nghiệp

vậy tại mỗi một thời điểm chỉ có một led sáng nhưng do tần sô" quét led cao
nên mắt ta nhìn thấy tất cả các led đềụ^rấng và hiển thị dữ liệu yêu cầu.
Với phương pháp này thì mạchviêpthiết kế và thi công rất đơn giản và ít
tôn kém nhưng mạch chỉ cho phép hiên thị tốt với các mạch có sô" led hiển thị ít
và đơn giản. Đốì với các mạch có sô" led hiển thị nhiều và yêu cầu cao hơn ta
phải dùng phương pháp chốt, các IC chốt như: 4511, 74373, 74573...
c. Tính toán;
Điện trở R! để phân cực.
Chọn ILED = lOmA Q
=> Ic = 7x10 = 70mA
Chọn Q2SA1015 có p = 100
VCC
I» = ^ = — = 0,7mA ọ
100
R1 Q6
5 -0 ,7
=> R, = = 6,1KQ Q2SA1015
0,7.10"3
R
£
=> Chọn Ri = 4,7KQ
D1
R 2 là điệrj4 ĩở hạn dòng cho LED.
LED

Chọn R 2 = 330Q R2
R

3. Khối điều khiển đông cơ:


a. Sơ đổ nguyên lv:

SERVO

Hình 3.1.7: Mạch điều khiển động cơ


b. Nguyên lý hoat đông:

Mạch đếm sản phẩm giữữ tiếp PC


Bình thường vi điều khiển đưa mức điện áp cao đến cực B transistor Q1
nên Q 1 dẫn bảo hòa và Q2 cũng dẫn bảo hòa, motor được cấp điện áp và hoạt
động.
Khi vi điều khiển cấp mức điện áp thấp đến cực B của Q1 nên Q1 không
dẫn và làm Q2 cũng không dẫn do đó motor không được cấp điện áp nên
không hoạt động.
c. Tính toán :
Do băng chuyền trong được giả lập với các motor tạo ra các vòng quay để cảm
biên nên động cơ được sử dụng là loại động cơ nhỏ và sử dụng điện áp nguồn
là +5V. Các transistor được sử dụng là C1815.
Trở kháng thực tế của động cơ khoảng 40Q.
Ta có: I C2 =
Rdco 40
Mà pIB2 = K.I,
Chọn K = 1
0
=>! = S l =5 0,115 =_ 0,23mA
_ no_

=>Chọn R 28 = 1KQ
=> Ici = I b2 + Ic 2 =0,23.103 + 0,115 = 1 15,23mA

^ R 27 —1KQ 1
=> Chọn R 26 = 10KQ
R 25 là điện trở hạn dòng cho LED , chọn ILED = lOmA, VLED = 2V

=> Chọn R 25 = 270Q

Mạch đếm sản phẩm giao tiếp PC 54


Chương I I :
CHƯƠNG TRÌNH Đ IỀU KH IỂN

Mạch đếm sấn phẩm giao tiệp PC


Luận vấn tết nghiệp

2. Chương trình ngắt ngoài 0:

Chương trìnt1 đếm kênh 1


<-------------------------------
N
< C ^ P 1.1 = ------------

rY ____________
Chương trình đếm kênh 2

ìT
------N
< d ^ P 1.2 = 0 ? J ^ > ------------

\Y____________
Chương trình đếm kênh 3
<-------------------------------
r

< C ^ P 1 . 3 = 0? ^ > -----------


'" y ’

Chương trình đếm kênh 4


*
y__

Mạch đếm sản phẩm giao tiếp PC


Luận vãn tết nghiệp

3. Chương trình đếm kênh 1

Mạch đếm sản phẩm g im tiếp PC


4. Chương trình đếm kênh 2

Mạch đếm sân phẩm giao tiếp PC


Luận văn tất nghiệp

5. Chương trình đếm kênh 3

Mạch đếm sần phẩm giao tiếp PC


Luận văn tết nghiệp

6. Chương trình đếm kênh 4

Mạch đếm sản phẩm gim tiếp PC 60


Luận văn tốt nghiệp

7. Chương trình cài đăt:

Mạch đếm sản phẩm g im tiếp PC


Z9 Sudjj______________________________ J J ddp ODiS uiyiịd um Uißp lỊOÒỊq

ĩ 1|U35| Ị B P Ị B 3 I Ị U U Ị á u / ự i i o *8

đ ậ i i f ô u ỊỌỊ UVA U p t l J
Í9 J J dan ovịS uivtịd urn imp tỊơỗpự

z IỊU 3 > [ í ? p ỊBD q u u Ị S iijO ju Ị 3 *6

ddtijSii ỊOỊ um uinvj


Dđ dßP 0Dß uipiịd um utdp Ìị0ò]ft

£ q u ẹ ỉ i i ç p ỊB 3 IỊ U U Ị 3 u p . n i o ox

dậựịSu ỊỌỆ UVA U ệĩT Ị


Ç9 Sudjj J J dßtf ovß tuytịd um map tjJDffl

V q«?5| ỊỊ? P ỊBD IỊ U U Ị 3 l i p . n i O *n

dậiiịSu t ß UVA uỳnq


12. Chương trình so sánh kênh 1

Mạch đếm sân phẩm g im tiếp PC


Luận văn tốt nghiệp

13. Chương trình so sánh kênh 2

Mạch đếm sản phẩm giao tiếp PC 67


Luận vãn tết nghiệp

14. Chương trình so sánh kênh 3

Mạch đếm sân phẩm giao tiếp PC


Luận vãn tốt nghiệp

15. Chương trình so sánh kênh 4

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

16. Chương trình kiểm tra dữ liêu nhân ;

Truyền Data
•4--------------------------

Nhận Data
4--------------------------

N

Điều khiển motor


<4--------------------------

Reset

Mạch đếm sãn phẩm giao tiếp PC 70


Luận văn tết nghiệp

II. CHƯƠNG TRÌNH PHAN M ầ M cho VI Đ ĩỀ U K H IEN :


A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 1

MS-DOS MACRO ASSEMBLER A51 V4.4


OBJECT MODULE PLACED IN D:\8051\9F.OBJ
ASSEMBLER INVOKED BY: A51 D:\8051\9F.TXT

LOC OBJ LINE SOURCE

1
2 •H i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9
3 ;GHI CHU: cho chop khi cai dat
.île * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4
0020 5 kenh EQU 20H
0021 6 traml EQU 21H
0022 7 chucl EQU 22H
0023 8 donvil EQU 23H
9
0024 10 tram2 EQU 24H
0025 11 chuc2 EQU 25H
0026 12 donvi2 EQU 26H
13
0027 14 tram3 EQU 27H
0028 15 chuc3 EQU 28H
0029 16 donvi 3 EQU 29H
*
17
002A 18 tram4 EQU2AH
002B 19 chuc4 EQU 2BH
002C 20 donvi4 EQU 2CH
21
002D 22 tram EQU2DH
002E 23 chuc EQU 2EH
002F 24 donvi EQU 2FH
25
0030 26 cdtraml EQU 30H
0031 27 cdchucl EQU31H
0032 28 cddonvil EQU 32H

Mạch đếm sản phẩm giao tiếp PC Trang 71


Luận vần tết nghiệp

29
0033 30 cdtram2 EQƯ 33H
0034 31 cdchuc2 EQU 34H
0035 32 cddonvi2 EQU 35H
33
0036 34 cdtram3 EQU 36H

0037 35 cdchuc3 EQƯ 37H


0038 36 cddonvi3 EQU 38H
37
0039 38 cdtram4 EQƯ 39H
003A 39 cdchuc4 EQU3AH
003B 40 cddonvi4 EQU3BH
003C 41 Inputdata EQU3CH
42
43
00B4 44 ledkenh bit P3.4
00B5 45 ledtram bit P3.5
00B6 46 ledchuc bit P3.6
00B7 47 leddonvi bit P3.7
48
00A7 49 MODE bit P2.7

00A6 50 SWTRAM bit P2.6


00A5 51 SWCHƯC bit P2.5
00A4 52 SWDONVI bit P2.4
00A3 53 SWSET bit P2.3
54

Mạch đếm sản phẩm g im tiếp PC


Luận vãn tết nghiệp

A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 2

LOC OBJ LINE SOURCE

0030 55 dem equ 30h


0000 56 ORG 00H
0000 8026 57 SJMP main
0003 58 ORG 03H
0003 0200F9 59 ljmp count
000B 60 ORG 0BH
000B 0201DF 61 LJMP timer0_ISR
62 . *
9
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

63 ;chuong trinh chinh


64 •H
9
i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

0028 65 ORG 0028H


0028 758921 66 main: MOV TMOD,#21H
002B D2A9 67 SETB ETO
002D 758AA8 68 MOV TLO,#LO w (- 6 0 0 )
0030 758CFD 69 MOV TH0,#HIGH(-600)
0033 D28C 70 SETB TRO
0035 D2A8 71 SETB EXO
0037 D288 72 SETB ITO
0039 759852 73 MOV SCON,# 52h ; //khới động port nối
tiếp, // 8-bit UART mode
003C 758DFD 74 MOV TH I,# -3
003F 758BFD 75 MOV TLl,#-3.
0042 D28E 76 SETB TRI ; // run timerl
0044 D2AF 77 SETB EA ;//cho phép ngắt toàn cục
78 9

79 ;nạp các giá trị ban đầu


80 5

0046 752300 81 mov donvil,#0


0049 752200 82 mov chucl,#0
0 0 4 C 752100 83 mov traml,#0
004F 752600 84 mov donvi2,#0
0052 752500 85 mov chuc2,#0
0055 752400 86 mov tram2,#0
0058 752900 87 mov donvi3,#0

Mạch đếm sản phẩm g im tiếp PC 73


Luận văn tốt nghiệp

005B 752800 88 mov chuc3,#0


0 0 5 E 752700 89 mov tram3,#0

0061 752C00 90 mov donvi4,#0

0064 752B00 91 mov chuc4,#0


0067 752A00 92 mov tram4,#0
93
006A 753200 94 mov cddonvil,#0

0 0 6 D 753100 95 mov cdchucl,#0

0070 753000 96 mov cdtraml,#0

0073 753500 97 mov cddonvi2,#0

0076 753400 98 mov cdchuc2,#0


0079 753300 99 mov cdtram2,#0

007C 753800 100 mov cddonvi3,#0

007F 753700 101 mov cdchuc3,#0


0082 753600 102 mov cdtram3,#0
0085 753B00 103 mov cddonvi4,#0
0088 753A00 104 mov cdchuc4#0
008B 753900 105 mov cdtram4,#0

106
008E 7D00 107 mov R5,#0
0090 753001 108 mov dem,#l

0093 752001 109 mov kenh,#l

0096 110 WAIT:


0096 20A710 111 jb MODE,nextl ;//chon kenh

0099 0520 112 inc kenh

009B E520 113 mov A,kenh

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

A 51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 3

LOC OBJ LINE SOURCE

009D B40503 114 cjne A,#5,khac


00 AO 752001 115 mov kenh,#l
00 A3 120404 116 khac: call delay 10ms
00 A6 12040D 117 call delay5ms
118
00A9 E520 119 nextl: mov A,kenh. ;//hien thi kenh da chon
00AB B40105 120 cjne A,#l,kenh2
00 AE 1203DC 121 call BinBCDl
00B1 8013 122 sjmp next2
00B3 B 40205 123 kenh2: cjne A,#2,kenh3
00B6 1203E6 124 call BinBCD2
00B9 800B 125 sjmp next2
00BB B40305 126 kenh3: cjne A,#3,kenh4
OOBE 1203F0 127 call BinBCD3
00C1 8003 128 sjmp next2
00C3 1203FA 129 kenh4: call BinBCD4
130 5

131 ;giao tiep may tinh


132 5

00C6 133 next2:


00C6 309819 134 jnb RI,next3 ;//cho tin hieu
00C9 120416 135 call getchar •
oocc BC5605 136 cjne R4,#'V',tiepl
00CF 120325 137 call truyendata
00D2 800E 138 sjmp next3
00D4 BC5305 139 tiepl: cjne R4,#'S',tiep2
00D7 12039F 140 call nhandata
OODA 8006 141 sjmp next3
OODC BC5203 142 tiep2: cjne R4,#'R',next3
00DF 120426 143 call reset
144 5

145 ;so sanh


146 5

00E2 1202C1 147 next3: call sskenhl

Mạch đếm sân phẩm giao tiếp PC


Luận văn tốt

00E5 1202DA 148 call sskenh2


00E8 1202F3 149 call sskenh3
OOEB 12030C 150 call sskenh4
151
OOEE 20A306 152 jb SWSET,next4 ;//kiem tra ca
00F1 120404 153 call delay 10ms
00F4 12012F 154 call setting
00F7 809D 155 next4: sjmp WAIT
156 . *
9
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

157 ;chuong trình ngat ngoai


• *1«
*Js «1»
JJs «ỉ»
*JS si* *Js
si* si* si* *Js
si* *js
si* *Js
si* si* si* si* ^ s ^*JS ^J * ^^ J*fs
# si*
^ o * si*
*|S si*
*JS si*
*^s si*
^ si*
*fs si*
*fs si*
*JS s|*
*JS si*
*|S si*
*JS si*
*fs si*
*JS si*
*JS si*
158 9
*js pjs *Ỵs *|s

00F9 159 Count:


00F9 E590 160 mov A,PI
OOFB F53C 161 mov Inputdata,A
0 0 F D 5401 162 anl A,#0000000lb
OOFF B40003 163 cjne A,#0,dem2
0102 120249 164 call tangkenhl
0105 E53C 165 dem2: mov AJnputdata

0107 5402 166 anl A,#2


0109 B40003 167 cjne A,#0,dem3
010C 120267 168 call tangkenh2
010F 169 dem3:
01 OF E53C 170 mov AJnputdata

0111 5404 171 anl A,#4


0113 B40003 172 cjne A,#0,dem4

Mạch đếm sần phẩm giao tiếp PC Trang 76


A51 MACRO A SSEM BLER 9F DATE 03/01/05 PAGE 4

LOC OBJ LINE SOURCE

0116 120285 173 call tangkenh3


0119 174 dem4:
0119 E53C 175 mov AJnputdata
0 1 1B 5408 176 anl A,#8
01 ID B40003 177 cjne A,#0,hetdem
0120 1202A3 178 call tangkenh4
0123 F53C 179 hetdem: mov Inputdata.A
0125 E590 180 chuaxong: mov A,PI
0127 540F 181 anl A,#0Fh
0129 B53C02 182 cjne A,Inputdata,demxong
012C 80F7 183 sjmp chuaxong
012E 32 184 demxong: reti
4> ^ «X»^
«1

* ỈỊ«
*£* 7
^|« ^« ^« J« ^ «^J« ^
^ ^ ^ ^«
^ 0 / 0^«
« ^«If ^«
^f «If
^« «If
^ «^If «If
^ «If
^« «If
#f« «
^If «
^If «If ^
«If *
«If «If «1
If
185 0 JJÇ
y
S f i 9|« ^« ^« 1« *1« * «

186 ;chuong trinh cai dat


•«k ^«
«b ^«
tk «l< «1* «k «k
^ «k «k
» ^tk»7
«k «*U^«1*^«k^«k «1»^«1«'X
«k ««
X*'Is
«X*•«k
J'* ^ '1'
^ «k
*1df J f J f «If ^ «If üf tk ^ ^f «k
187 ?
^« /fi ^« ^ ^ ^ ^ »7 s *7 * *7 * *T*

012F 188 setting:


012F 12040D 189 call delay5ms
0 1 3 2 E520 190 mov A,kenh
0134 B4010B 191 cjne A,#l,cd2
0137 85302D 192 mov tram,cdứaml
013A 85312E 193 mov chuc,cdchucl
013D 85322F 194 mov donvi,cddonvil
0140 8028 195 sjmp caidat
0142 B4020B 196 cd2: cjne A,#2,cd3
0145 85332D 197 mov tram,cdtram2
0148 85342E 198 mov chuc,cdchuc2
014B 85352F 199 mov donvi,cddonvi2
014E 801A 200 sjmp caidat
0 1 5 0 B4030B 201 cd3: cjne A,#3,cd4
0153 85362D 202 mov tram,cdtram3
0156 85372E 203 mov chuc,cdchuc3
0159 85382F 204 mov donvi,cddonvi3
015C 800C 205 sjmp caidat
015E B40409 206 cd4: cjne A,#4,caidat

Mạch đếm sần phẩm gktjữ tiếp PC


Luận vãn tết nghiệp

0161 85392D 207 mov tram,cdứam4


0164 853A2E 208 mov chuc,cdchuc4
0167 853B2F 209 mov donvi,cddonvi4
210
016A 20A60D 211 caidat: jb SWTRAM,nhanChuc
016D 052D 212 inc tram
016F E52D 213 mov A,tram
0171 B40A03 214 cjne A,#10,nọequl
0174 752D00 215 mov tram,#0
0177 12040D 216 noequl: call delay5ms
017A 20A50D 217 nhanChuc: jb SWCHUC,nhanDo]
017D 052E 218 inc chuc
017F E52E 219 mov A,chuc
0181 B40A03 220 cjne A,#10,noequ2

0184 752E00 221 mov chuc,#0


0187 12040D 222 noequ2: call delay5ms
018A 20A40A 223 nhanDonvi: jb SWDONVI,quit
0 1 8 D 052F 224 inc donvi
018F E52F 225 mov A,donvi

0191 B40A03 226 cjne A,#10,noequ3


0194 752F00 227 mov donvi,#0
0197 228 noequ3:
0197 30A30C 229 quit: jnb SWSET,save
230
231 ; PHAN HIEN THI CHOP TAT

Mạch đếm sản phẩm giao tiếp PC 78


Luận văn tết nghiệp

A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 5

LOC OBJ LINE SOURCE

232
019A 7D01 233 mov R 5,#l
019C 120404 234 call delay 10ms
019F 7D00 235 mov R5,#0
01A1 12040D 236 call delay5ms
01A4 80C4 237 sjmp caidat
238
239 luu gia tri cai dat
240
01A6 120404 241 save: call delay 10ms
01A9 E520 242 mov A,kenh
01AB B4010B 243 cjne A,#l,save2
01AE 852D30 244 mov cdtraml,tram
01B1 852E31 245 mov cdchucl,chuc
01B4 852F32 246 mov cddonvil,donvi
01B7 8025 247 sjmp exit
01B9 B4020B 248 save2: cjne A,#2,save3
01BC 852D33 249 mov cdtram2,tram
01BF 852E34 250 mov cdchuc2,chuc
01C2 852F35 251 mov cddonvi2,donvi
01C5 8017 252 sjmp exit
01C7 B4030B 253 save3: cjne A,#3,save4
01CA 852D36 254 mov cdtram3,tram
01CD 852E37 255 mov cdchuc3,chuc
OIDO 852F38 256 mov cddonvi3,donvi
01D3 8009 257 sjmp exit
01D5 852D39 258 save4: mov cdtram4,tram
01D8 852E3A 259 mov cdchuc4,chuc
01DB 852F3B 260 mov cddonvi4,donvi
01DE 22 261 exit: ret
262
263 s i*** ** *** ** *** ** *** ** *** ** *** ** *** ** *** ** **
264 chuông trinh quet led dung pp ngat timer
2 6 5 '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Mgch dem san pham giao tiep PC


Luận văn tết nghiệp

01DF 266 timerO_ISR


01DF 758AA8 267 MOV TLO,#LOw (-600)

01E2 758CFD 268 MOV TH0,#HIGH(-600)

01E5 D28C 269 SETB TRO


01E7 7580FF 270 mov PO,#Offh
01EA 43B0F0 271 orl P3,#0f0h ;tat led

01ED E530 272 mov A,dem

01EF B4010C 273 cjne A ,#l ,notl ; //xuat led kenh

01F2 C2B4 274 clr ledkenh


01F4 E520 275 mov A,kenh
01F6 90042F 276 mov DPTR,#MALED

01F9 93 277 movc A,@A+DPTR

01FA F580 278 mov PO,A

01FC 8040 279 sjmp nhay

280
01FE B40214 281 n otl: cjne A,#2,not2 ; //xuat led tram

0201 C2B5 282 clr ledtram

0203 BD0105 283 cjne R5,#l,hientram

0206 7580FF 284 mov PO,#Offh ;//khong cho hien

0209 8033 285 sjmp nhay

020B 286 hientì*am:


020B E52D 287 mov A,tram
020D 90042F 288 mov DPTR,#MALED

0210 93 289 movc A,@A+DPTR

0211 F580 290 mov P0,A

Mạch đếm sần phẩm giao tiếp PC 80


Luận văn tốt nghiệp

A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 6

LOC OBJ LINE SOURCE

0213 8029 291 sjmp nhay


0215 B40314 292 not2: cjne A,#3,not3 ;// xuat led chuc
0218 C2B6 293 clr ledchuc
021A BD0105 294 cjne R5,#l,hienchuc
021D 7580FF 295 mov P0,#0ffh ;khong cho hien
0220 801C 296 sjmp nhay
0222 297 hienchuc:
0222 E52E 298 mov A,chuc
0224 90042F 299 mov DPTR,#MALED
0227 93 300 move A,@A+DPTR
0228 F580 301 mov P0,A
0 2 2 A 8012 302 sjmp nhay
022C 303 not3: ; //xuat le
022C C2B7 304 clr leddonvi
022E BD0105 305 cjne R5,#l,hiendonvi
0231 7580FF 306 mov P0,#0ffh ;//khong cho hien
0234 8008 307 sjmp nhay
0236 308 hiendonvi:
0236 E52F 309 mov A.donvi
0238 90042F 310 mov DPTR,#MALED
023B 93 311 move A @A+DPTR
023C F580 312 mov P0,A
023E 0530 313 nhay: inc dem
0240 E530 314 mov A,dem
0242 B40503 315 cjne A,#5,not5
0245 753001 316 mov dem,#l
0248 32 317 not5: reti
•«Ỉ* *1
|*
s •]<y
«|
1s
* sly «ly ^ J * O/ ^ ^ ^ ^
O; ^ sk
yys •!< ^
sly 'I
sly sly sly sly y
sly
js sly
318 t y|sy ^ 'y js y js ^

319 ;chuong trinh dem kenh 1


320 ? * * * * * * * * * * * * * * * * * * * * * * * * *
.*
0249 321 tangkenhl:
0249 0523 322 inc donvil
024B E523 323 mov A,donvil
024D B40A16 324 cjne A,#10,thoatl

Mạch đếm sẻn phẩm g im tiếp PC 81


0250 752300 325 mov donvil,#0
0253 0522 326 inc chucl
0255 E522 327 mov A,child
0257 B40A0C 328 cjne A,#10,thoatl
025A 0521 329 inc traml
025C 752200 330 mov child ,#0
025F E521 331 mov A,tram 1
0261 B40A02 332 cjne A,#10,thoatl
0264 0521 333 inc traml
0266 22 334 thoatl: ret
335 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;!
9
336 ;chuong trinh dem kenh 2
337 .î l e * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9
0267 338 tangkenh2:
0267 0526 339 inc donvi2
0269 E526 340 mov A,donvi2
026B B40A16 341 cjne A,#10,thoat2
026E 752600 342 mov donvi2,#0
0271 0525 343 inc chuc2 •
0273 E525 344 mov A,chuc2
0275 B40A0C 345 cjne A,#10,thoat2
0278 0524 346 inc tram2
027A 752500 347 mov chuc2,#0
027D E524 348 mov A,tram2
027F B40A02 349 cjne A,#10,thoat2

Mạch đếm sản phẩm gừto tiếp PC


Luận văn tốt nghiệp

A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 7

LOC OBJ LINE SOURCE

0282 0524 350 inc tram2


0284 22 351 thoat2: ret
352 .H e * * * * * * * * * * * * * * * * * * * * * * * * * * :!'* * * * * * * * * * * * *
353 chuông trinh dem kenh 3
354 *****************************************
0285 355 tangkenh3:
0285 0529 356 inc donvi3
0287 E529 357 mov A,donvi3
0289 B40A16 358 cjne A,#10,thoat3
028C 752900 359 mov donvi3,#0
028F 0528 360 inc chuc3
0291 E528 361 mov A,chuc3
0293 B40A0C 362 cjne A,#10,thoat3
0296 0527 363 inc tram3
0298 752800 364 mov chuc3,#0
029B E527 365 mov A,tram3
029D B40A02 366 cjne A,#10,thoat3
02A0 0527 367 inc tram3
02A2 22 368 thoat3: ret
369 H i* * * ** *** ** *** ** *** ** *** *** ** **
370 ;chuong trinh dem kenh 4
371 ******************************************
02A3 372 tangkenh4:
02A3 052C 373 inc donvi4
02A5 E52C 374 mov A,donvi4
02A7 B40A16 375 cjne A,#10,thoat4
02AA 752C00 376 mov donvi4,#0
02AD 052B 377 inc chuc4
02 AF E52B 378 mov A,chuc4
02B1 B40A0C 379 cjne A,#10,thoat4
02B4 052A 380 inc tram4
02B6 752B00 381 mov chuc4,#0
02B9 E52A 382 mov A,tram4
02BB B40A02 383 cjne A,#10,thoat4

Mạch đếm sẩn phẩm g im tiếp PC Trang 83


Luận vãn tết nghiệp

02BE 052A 384 inc tram4

02C0 22 385 thoat4: ret

386
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
387 ?
388 ;chuong trinh so sanh kenh 1
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
389 5
02C1 390 sskenhl:
02C1 E523 391 mov A,donvil

02C3 B53213 392 cjne A,cddonvi 1,thoatss 1

02C6 E522 393 mov A,chucl

02C8 B5310E 394 cjne A,cdchuc 1,thoatss 1

02CB E521 395 mov A,traml

02CD B53009 396 cjne A,cdtraml ,thoatssl

02D0 752300 397 mov donvil,#0

02D3 752200 398 mov chucl,#0

02D6 752100 399 mov traml,#0

02D9 22 400 thoatssl: ret


401 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
402 ;chuong trinh so sanh kenh 1
.H í * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
403 ĩ
02DA 404 sskenh2:

02DA E526 405 mov A,donvi2

02DC B53513 406 cjne A,cddonvi2,thoatss2

02DF E525 407 mov A,chuc2

02E1 B5340E 408 cjne A,cdchuc2,thoatss2

Mạch đếm sần phẩm giao tiếp PC 84


Luận văn tết nghiệp

A51 MACRO ASSEM BLER 9F DATE 03/01/05 PAGE 8

LOC OBJ LINE SOURCE

02E4 E524 409 mov A, tram2


02E6 B53309 410 cjne A,cdtram2,thoatss2
02E9 752600 411 mov donvi2,#0
02EC 752500 412 mov chuc2,#0
02EF 752400 413 mov tram2,#0
414
02F2 22 415 thoatss2: ret
^ »Ịa a|«*1* »Ịa »Ị« ^ ^ ^ ^ ^ ^ ^ ^ sị/ ^ ^ ^
416 5

417 ;chuong trinh so sanh kenh 1


^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
418 5

02F3 419 sskenh3:


02F3 E529 420 mov A,donvi3
02F5 B53813 421 cjne A,cddonvi3,thoatss3
02F8 E528 422 mov A ,chuc3
02FA B5370E 423 cjne A,cdchuc3,thoatss3
02FD E527 424 mov A, tram3
02FF B53609 425 cjne A,cdtram3,thoatss3
0302 752900 426 mov donvi3,#0
0305 752800 427 mov chuc3,#Ó
0308 752700 428 mov tram3,#0
030B 22 429 thoatss3: ret
• vía J/ ^
via ^
via ^
-I- ^
via ^
J. ^
via -I- ^
via ^
vía^
-la ^ ^ ^
via ^
Ja ^
Ja a
Ja Ja Ja ^
^ a
Ja via a^
Ja aj\
Ja ^Ja ^
^ a
Ja Ja Ja via Ja ^y»a
^y»a
Ja via Ja «y
JaJa Ja a
Ja
430 5
pa ^a^ ]Vi^ pa yaay»a|^ api a yaa
aya
aa |«a aayaa^ ya

431 ;chuong trinh so sanh kenh 1


a|( ^ ^ ^ «1^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ «1^ ^
432 5

030C 433 sskenh4:


030C E52C 434 mov A,donvi4
030E B53B 13 435 cjne A,cddonvi4,thoatss4
0 3 1 1 E52B 436 mov A,chuc4
0313 B53A0E 437 cjne A,cdchuc4,thoatss4
0316 E52A 438 mov A, tram4
0318 B53909 439 cjne A,cdtram4,thoatss4
0 3 IB 752C00 440 mov donvi4,#0
031E 752B00 441 mov chuc4,#0
0321 752A00 442 mov tram4,#0

Mạch đếm sần phẩm giao tiếp PC 85


Luận văn tốt

0324 22 443 thoatss4: ret


444
445 .* * * * * * * * * * * * * * * * * * * * * * *

446 ;chuong trinh nhan du lieu tu


447 .* * * * * * * * * * * * * * * * * * * * * * *

0325 448 truyendata:

449 ; mov R0,#traml

450 ;skip: mov A ,@ R 0

451 ; mov R4,A


452 ; call putchar

453 ; inc RO
454 ; cjne R0,#3DH,skip

0325 AC21 455 mov R4,traml

0327 12041E 456 call putchar

032A AC22 457 mov R4,chucl

032C 12041E 458 call putchar

032F AC23 459 mov R4,donvil

0 3 3 1 12041E 460 call putchar

0334 AC24 461 mov R4,tram2

0336 12041E 462 call putchar

0339 AC25 463 mov R4,chuc2

033B 12041E 464 call putchar

033E AC26 465 mov R4,donvi2

0340 1204 IE 466 call putchar

0343 00 467 nop

Mạch đếm sần phẩm gim tiếp PC 86


A51 MACRO A SSEM BLER 9F DATE 03/01/05 PAGE 9

LOC OBJ LINE SOURCE

0344 AC27 468 mov R4,tram3


0346 12041E 469 call putchar
0349 AC28 470 mov R4,chuc3
034B 12041E 471 call putchar
034E AC29 472 mov R4,donvi3
0350 12041E 473 call putchar
0353 AC2A 474 mov R4,tram4
0355 12041E 475 call putchar
0358 AC2B 476 mov R4,chuc4
035A 12041E 477 call putchar
035D AC2C 478 mov R4,donvi4
035F 12041E 479 call putchar
0362 AC30 480 mov R4,cdtraml
0364 12041E 481 call putchar
0367 AC31 482 mov R4,cdchucl
0369 12041E 483 call putchar
036C AC32 484 mov R4,cddonvil
036E 12041E 485 call putchar
0371 AC33 486 mov R4,cdtram2
0373 12041E 487 call putchar
0376 AC34 488 mov R4,cdchuc2
0378 12041E 489 call putchar
037B AC35 490 mov R4,cddonvi2
037D 12041E 491 call putchar
0380 AC36 492 mov R4,cdtram3
0382 12041E 493 call putchar
0385 AC37 494 mov R4,cdchuc3
0387 12041E 495 call putchar
038A AC38 496 mov R4,cddonvi3
038C 12041E 497 call putchar
038F AC39 498 mov R4,cdtram4
0391 12041E 499 call putchar
0394 AC3A 500 mov R4,cdchuc4
0396 12041E 501 call putchar

Mạch đếm sản Trang 87


Luận văn tết nghiệp

0399 AC3B 502 mov R4,cddonvi4


039B 12041E 503 call putchar
039E 22 504 ret
505 .9* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

506 ;chuong trinh truyen du lieu den may tinh


507 .s i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9
039F 508 nhandata:
039F 120416 509 call getchar
03A2 8C30 510 mov cdtraml,R4
03 A4 120416 511 call getchar
03A7 8C31 512 mov cdchucl,R4
03 A9 120416 513 call getchar
03AC 8C32 514 mov cddonvil,R4
03 AE 120416 515 call getchar
03B1 8C33 516 mov cdtram2,R4
03B3 120416 517 call getchar
03B6 8C34 518 mov cdchuc2,R4
03B8 120416 519 call getchar
03BB 8C35 520 mov cddonvi2,R4
03BD 120416 521 call getchar
03C0 8C36 522 mov cdtram3,R4
03C2 120416 523 call getchar
03C5 8C37 524 mov cdchuc3,R4
03C7 120416 525 call getchar
03CA 8C38 526 mov cddonvi3,R4

Mạch đếm sản phẩm g im tiếp PC


Luận văn tốt nghiệp

A51 MACRO ASSEM BLER 9F DATE 03/01/05 PAGE 10

LOC OBJ LINE SOURCE

03CC 120416 527 call getchar


03CF 8C39 528 mov cdtram4,R4
03D1 120416 529 call getchar
03D4 8C3A 530 mov cdchuc4,R4
03D6 120416 531 call getchar
03D9 8C3B 532 mov cddonvi4,R4
03DB 22 533 ret
534 9
535 ;chuong trinh giai ma BCD
536 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9
03DC 537 BinBCDl:
03DC 85212D 538 mov tram,traml
03DF 85222E 539 mov chuc,chucl
03E2 85232F 540 mov donvi,donvil
03E5 22 541 ret
03E6 542 BinBCD2:
03E6 85242D 543 mov tram,tram2
03E9 85252E 544 mov chuc,chuc2
03EC 85262F 545 mov donvi,donvi2
03EF 22 546 ret
03F0 547 BinBCD3:
03F0 85272D 548 mov tram,tram3
03F3 85282E 549 mov chuc,chuc3
03F6 85292F 550 mov donvi,donvi3
03F9 22 551 ret
03FA 552 BinBCD4:
03FA 852A2D 553 mov tram,tram4
03FD 852B2E 554 mov chuc,chuc4
0400 852C2F 555 mov donvi,donvi4
0403 22 556 ret
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
557
558 ;chuong trinh delay 10ms
559 .í t :* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
0404 7EFF 560 delay 10ms: mov R6,#255

Mạch đếm sần phẩm giao tiếp PC


Luận văn tết nghiệp

0406 7FFF 561 NI: mov R7,#255


0408 DFFE 562 DJNZ R7,$
040A DEFA 563 djnz R6,N1
040C 22 564 ret •

565 .H i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
5
566 ;chuong trinh delay 5ms
567 .S H * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
5
040D 7E64 568 delay5ms: mov R6,#100
040F 7FFA 569 N: mov R7,#250
0411 DFFE 570 DJNZ R7,$
0413 DEFA 571 djnz R6,N

0415 22 572 ret


573 .S K * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

574 ;chuong trinh doc du lieu tu SBUF


575 ; input: data in serial
576 ; output: R4
577 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>
0416 578 getchar:
0416 3098FD 579 jnb RI,$
0419 AC99 580 mov R4,Sbuf

0 4 1B C298 581 clr RI


041D 22 582 ret
583
584 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

585 ;chuong trinh goi du lieu ra SBUF

Mạch đếm sân phẩm giao tiếp PC 90


Luận vãn tết nghiệp

A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 11

LOC OBJ LINE SOURCE

586 ; input: data in serial


587 ; output: R4
588 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
5

0 4 1E 589 putchar:
0 4 IE 3099FD 590 jnb TI,$

0421 8C99 591 mov Sbuf,R4

0423 C299 592 clr TI

0425 22 593 ret


.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
594
595 ;chuong reset bo cai dat

596 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

0426 597 reset:


0426 7821 598 mov R0,#traml

0428 7600 599 xoatiep: mov @r0,#0

042A 08 600 inc R0

042B B83CFA 601 cjne R0,#3Ch,xoatiep

042E 22 602 ret


.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
603 5

042F C0F9A4B0 604 MALED : DB


0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,090H

0433 999282F8
0437 8090
605 END

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

A51 M ACROASSEMBLER 9F -DATE 03/01/05 PAGE 12

SYMBOL TABLE LISTING

NAME TYPE VALUE ATTRIBUTES

BINBCD1. . CADDR 03DCH A


BINBCD2. . C ADDR 03E6H A
BINBCD3. . C ADDR 03F0H A
BINBCD4. . C ADDR 03FAH A
CAID AT . . C ADDR 016AH A
CD2. . . . C ADDR 0142H A
CD3. . . . CADDR 0150H A
CD4. . . . C ADDR 015EH A
CDCHUC1. . N NUMB 0031H A
CDCHUC2. . N NUMB 0034H A
CDCHUC3. . N NUMB 0037H A
CDCHUC4. . N NUMB 003AH A
CDDONVI1 . N NUMB 0032H A
CDDONVI2 . N NUMB 0035H A
CDDONVI3 . N NUMB 0038H A
CDDONVI4 . N NUMB 003BH A
CDTRAM1. . N NUMB 0030H A
CDTRAM2. . N NUMB 0033H A
CDTRAM3. . N NUMB 0036H A
CDTRAM4. . N NUMB 0039H A
CHUAXONG. CADDR 0125H A
CHUC . . . N NUMB 002EH A
CHUC1.. . N NUMB 0022H A
CHUC2.. . N NUMB 0025H A
CHUC3. . . N NUMB 0028H A
CHUC4. . . N NUMB 002BH A
COUNT. . . C ADDR 00F9H A

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

DELAY 10MS. C ADDR 0404H A


DELAY5MS . C ADDR 040DH A
DEM. .. . N NUMB 0030H A
DEM2 . .. C ADDR 0105H A
DEM3 . . . C ADDR 010FH A
DEM4 . . . C ADDR 0119H A
DEMXONG. . C ADDR 012EH A
DONVI. . . N NUMB 002FH A
DONVI1 . . N NUMB 0023H A
DONVI2 . . N NUMB 0026H A
DONVI3 . . N NUMB 0029H A
DONVI4 . . N NUMB 002CH A
EA . . . . B ADDR 00A8H.7 A
ETO. . . . B ADDR 00A8H.1 A
EXO. . . . B ADDR 00A8H.0 A
EXIT . . . C ADDR 01DEH A
GETCHAR. . C ADDR 0416H A
H ETD EM .. C ADDR 0123H A
HIENCHUC . C ADDR 0222H A
HIENDONVI. C ADDR 0236H A
HIENTRAM . C ADDR 020BH A
INPUTDATA. N NUMB 003CH A
ITO. . . . B ADDR 0088H.0 A
KENH . . . N NUMB 0020H A
KENH2. . . C ADDR 00B3H A
KENH3. . . C ADDR OOBBH A
KENH4. . . C ADDR 00C3H A
KHAC . . . C ADDR 00A3H A

Mạch đếm sấn phẩm g im tiếp PC Trang 93


Luận văn tất nghiệp

A51 MACRO ASSEMBLER 9F DATE 03/01/05 PAGE 13

NAME TYPE VALUE ATTRIBUTES

LEDCHUC. . B ADDR 00B0H.6 A


LEDDONVI. BA D D R 00B0H.7 A
LEDKENH. . B ADDR 00B0H.4 A
LEDTRAM. . B ADDR 00B0H.5 A
MAIN . . . c ADDR 0028H A
MALED. . . c ADDR 042FH A
MODE . . . B ADDR 00A0H.7 A
N.........CADDR 040FH A
N1 . . . . c ADDR 0406H A
NEXT1. . . CADDR 00A9H A
NEXT2. . . c ADDR 00C6H A
NEXT3. . . c ADDR 00E2H A
NEXT4. . . c ADDR 00F7H A
NHANCHUC. CADDR 017AH A
NHANDATA. CADDR 039FH A
NHANDONVI. c ADDR 018AH A
NHAY . . . c ADDR 023EH A
NOEQU1 . . c ADDR 0177H A
NOEQU2 . . CADDR 0187H A
NOEQU3 . . c ADDR 0197H A
NOT1 . . . c ADDR 01FEH A
NOT2 . . . CADDR 0215H A
NOT3 . . . c ADDR 022CH A
NOT5 . . . c ADDR 0248H A
P0 . . . . D ADDR 0080H A
PI . . . . D ADDR 0090H A
P2 . . . . D ADDR 00A0H A
P3 . . . . D ADDR 00B0H A
PUTCHAR. . c ADDR 041 EH A
QUIT . . . c ADDR 0197H A
RESET. . . c ADDR 0426H A
R I . . . . B ADDR 0098H.0 A
SAVE .. . c ADDR 01A6H A
SAVE2. . . c ADDR 01B9H A

Mạch đếm sản phẩm g im tiếp PC 94


Luận văn tết nghiệp

SAVE3. . . CADDR 01C7H A


SAVE4. . . C ADDR 01D5H A
SBUF . . . D ADDR 0099H A
SCON . . . D ADDR 0098H A
SETTING.. CADDR 012FH A
SSKENH1. . CADDR 02C1H A
SSKENH2. . C ADDR 02DAH A
SSKENH3. . C ADDR 02F3H A
SSKENH4. . C ADDR 030CH A
SWCHUC . . B ADDR 00A0H.5 A
SWDONVI. . B ADDR 00A0H.4 A
SWSET. . . B ADDR 00A0H.3 A
SWTRAM . . B ADDR 00A0H.6 A
TANGKENH1. CADDR 0249H A
TANGKENH2. CADDR 0267H A
TANGKENH3. CADDR 0285H A
TANGKENH4. CADDR 02A3H A
THO. . . . D ADDR 008CH A
TH1___ D ADDR 008DH A
THO ATI . . C ADDR 0266H A
THOAT2 . . C ADDR 0284H A
THOAT3 . . C ADDR 02A2H A
THOAT4 . . C ADDR 02C0H A
THO ATS SI . CADDR 02D9H A
TH OA TSS2. CADDR 02F2H A

Mych dim sdn phdm giao hip PC 95


Luận văn tốt nghiệp

A51 MACRO ASSEM BLER 9F DATE 03/01/05 PAGE 14

NAME TYPE VALUE ATTRIBUTES

THOATSS3 . CADDR 030BH A


TH OA TSS4. CADDR 0324H A
T I. . . . B ADDR 0098H.1 A
TIEP1. . . CADDR 00D4H A
TIEP2. . . C ADDR 00DCH A
TIMERO_ISR CADDR 01DFH A
TLO. . . . D ADDR 008AH A
TL1. . . . D ADDR 008BH A
TMOD . . . D ADDR 0089H A
TRO___ B ADDR 0088H.4 A
TR1. . . . B ADDR 0088H.6 A
TRAM . . . N NUMB 002DH A
TRAM1. . . N NUMB 0021H A
TRAM2. . . N NUMB 0024H A
TRAM3. . . N NUMB 0027H A
TRAM4. . . N NUMB 002AH A
TRUYENDATA CADDR 0325H A
WAIT . . . C ADDR 0096H A
XOATIEP. . C ADDR 0428H A

REGISTER BANK(S) USED: 0

ASSEM BLY COMPLETE, NO ERRORS FOUND

96
Liiận văn tố t nghiệp

Chươns I I I :
CHƯƠNG TRÌNH GIAO T IE P VỚI MÁY TÍNH
Chương trình này dùng để tạo một giao diện trên máy tính để hiện thị sô"
liệu của mạch đếm và gởi tính hiệu điều khiển đến phần cứng.
Giao diện của chương trình như hình

MẠCH ĐẾM SẢN PHẨM ĐA KÊNH


TRƯỜNG ĐHDL K Ỹ THUẬT CÔNG NGHỆ
Khoa: Điện Tứ - Viễn Thông
SV.'Nguỵễn Minh Thắng

S ổ sản phẩm S ố cài đật Điểu khiển bảng chuyên


Kênh 1 20 100 r Kênh 1 r Kênh 3
Kênh 2 25
Kênh 3 220 r Kênh 2 r Kênh 3
K ênh 4 225

X / Chọn
Nhập sô" sản Sô" sản Sô" sản phẩm kênh cần
phẩm cài đăt đang đếm đươc cài đăt điều khiển
V-_______ ___ V ___
Hình 3.3.1: Giao diện chương trình giao tiếp

Mạch đếm sản phẩm giao tiếp PC 97


Luận văn tốt nghiệp

IIĨ.1. G IẢI THUẴT CHƯƠNG TRÌNH:


1. Chương trình nhân dữ liêu:

Mạch đếm sản phẩm giao tiếp PC


Luận văn tết nghiệp

III.2 . CHƯƠNG TRÌNH GIAO T IẺ P :


Dim cdl, cd2, cd3, cd4 As Integer
Private Sub cmdExit_Click()
End
End Sub

Private Sub cmdreset_Click()


MSCom.Output = "R"
End Sub

Private Sub cmdset_Click()


cdl = Val(txtcdl)
cd2 = Val(txtcd2)
cd3 = Val(txtcd3)
cd4 = Val(txtcd4)
' check value kenh 1
If IsNumeric(cdl) And (cdl < = 0 Or cdl > 999) Then
Baoloi = MsgBox("Nhập lại giá trị kênh 1", vbOKOnly," Type Error !!! ")
txtcdl.Text= " "
txtcdl.SetFocus
Exit Sub
End If
' check value kenh 2
If IsNumeric(cd2) And (cd2 <= 0 Or cd2 > 999) Then
Baoloi = MsgBox("Nhập lại giá trị kênh 2", vbOKOnly," Type Error !!! ")
txtcd2.Text = " "
txtcd2.SetFocus
Exit Sub
End If
' check value kenh 3
If IsNumeric(cd3) And (cd3 <= 0 Or cd3 > 999) Then
Baoloi = MsgBox("Nhập lại giá trị kênh 3", vbOKOnly," Type Error !!! ")
txtcd3.Text = " "
txtcd3.SetFocus
Exit Sub
End If
' check value kenh 4
If IsNumeric(cd4) And (cd4 < = 0 Or cd4 > 999) Then
Baoloi = MsgBox("Nhập lại giá trị kênh 4", vbOKOnly, " Type Error !!! ")

Mạch đếm sân phẩm giao tiếp PC


Luận văn tot nghiệp

txtcd4.Text = " "


txtcd4.SetFocus
Exit Sub
End If
' all ok
' send chanel 1
MSCom.Output = "N"
MSCom.Output = Chr$(cdl /100)
MSCom.Output = Chr$((cdl / 10) Mod 10)
MSCom.Output = Chr$(cdl Mod 10)
' send chanel 2
MSCom.Output = Chr$(cd2 / 100)
MSCom.Output = Chr$((cd2 / 10) Mod 10)
MSCom.Output = Chr$(cd2 Mod 10)
' send chanel 3
MSCom.Output = Chr$(cd3 / 100)
MSCom.Output = Chr$((cd3 / 10) Mod 10)
MSCom.Output = Chr$(cd3 Mod 10)
' send chanel 4
MSCom.Output = Chr$(cd4 / 100)
MSCom.Output = Chr$((cd4 / 10) Mod 10)
MSCom.Output = Chr$(cd4 Mod 10)

End Sub

Private Sub Form_Load()


MSCom.CommPort = 1
MSCom. Settings = "9600,N,8,1"
MSCom.PortOpen = True
Timer 1. Enabled = True

End Sub

Private Sub Timerl_Timer()


MSCom.Output = "T"
Do
DoEvents
Loop Until MSCom.InBufferCount > = 24

Mach dem sän pham giao tiep PC


Luận văn tốt nghiệp

lblkenhl.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &


Asc(MSCom.Input))
lblkenh2.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
lblkenh3.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
lblkenh4.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
lblcdl.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
lblcd2.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
lblcd3.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
lblcd4.Caption = Val(Asc(MSCom.Input) & Asc(MSCom.Input) &
Asc(MSCom.Input))
End Sub

Mạch đếm sản phẩm giao tiếp PC Trang 101


Luận văn tết nghiệp

RÁO CÁO K Ế T OUẲ THƯC HIÊN

Qua thời gian nghiên cứu và tiến hành thi công mạch, cuối cùng mạch
đã hoàn thành và chạy tốt, sau đây là kêt quả thực hiện :

Mạch thu phát lúc đầu hoạt động không tốt do mất IV điện áp trên led
nên LM324 không cho đúng điện áp ngõ ra nên transistor không dẫn bảo hòa,
dẫn đến mức điện áp ra không rõ ràng làm cho vi điều khiển không nhận biết
được. Nhưng qua quá trình tìm hiểu và chỉnh sửa thì mạch đã hoạt động tốt.

Mạch điều khiển động cơ chưa điều khiển động cơ tốt. Để mạch hoạt
động tốt ta phải dùng nguồn nuôi 12V

Mạch giao tiếp máy tính cơ bản đã thực hiện tốt các chức năng nhưng ở
số liệu cài đặt trên kênh đêm 1 vẫn chưa chạy ổn định và chính xác và em vân
đang tiến hành điều chỉnh, sửa chữa để mạch hoàn thiện hơn.

Tuy mạch vẫn còn một số điểm cần khắc phục nhưng cơ bản thì mạch
đã đáp ứng được các nhiệm vụ được đề ra. Và nếu có thêm thời gian mạch sẽ
được hoàn chỉnh hơn.

Mạch đếm sẩn phẩm g im tiếp PC


Luận vãn

K Ế T LUẬN
Qua gần 15 tuần nghiên cứu và thực thi đề tài, với sự giúp đỡ tận tình
của thầy Phạm Hùng Kim Khánh và bạn bè, cuối cùng đề tài của em đã cơ bản
hoàn thành các nhiệm vụ được đề ra là:

/ Thiết kế và thi công mạch đếm sản phẩm đa kênh.
v' Giao tiếp 89C51 với PC

/ Điều khiển từ máy tính.
•/ Hiển thị giá trị đếm và cài đặt trên PC.
Mặc dù rất cố gắng nhưng do thời gian và trình độ chuyên môn có hạn
nên mạch được thiết kế vẫn còn nhiều điều chưa tối ưu. Nêu có thêm thời gian
và kinh phí mạch sẽ được mở rộng hơn và hoàn thiện các tính năng hơn.
Dưa trên đề tài đang nghiên cứu ta có thể phát triển đề tài như
sau:

S Có thể tăng số lượng kênh đêm.
V Tăng số lượng sản phẩm đếm.
•/ Tăng khoảng cách cảm biến.
•/ Điều khiển băng chuyền đa dạng hơn như cho dừng băng chuyên
để đóng thùng,...

Mạch đếm sần phẩm g im tiếp PC

You might also like