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 chỉ 16 bit MOVX @DPTR trong ting du
Trang 1
TRUONG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP HCM
KHOA ĐIỆN TỬ VIÊN THÔNG
LUẬN VĂN TỐT NGHIỆP
MACH DEM SAN PHAM
GIAO TIEP VOI MAY TINH
ThS PHAM HUNG KIM KHANH SVTH : NGUYEN MINH THANG
00DDT121 : 00DDT0I1
Trang 2i 2 Dùng vi điều khiển sentiment 2 i
FIV GIGI HAN CUA DE TAL 00 cecccscseesssescsseeeseeerseersntessesseeesseeesns 3 F
: V HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI -++ 3 i
PHAN Il: LY THUYET : CHƯƠNG I : GIỚI THIEU VI DIEU KHIEN 89C51 4 :
‡ L1 TÓM TẮT PHẦN CỨNG -2222Svcetrtrrrtikerrrrrrririe 4 ‡ : mm ma ˆ 4 i
= 8 Hoạt động r€Set .- Ăn ngành HH1 111101111 1n 18 ‡
i 1.2 HOAT DONG DINH THOL oo eesssssessssssseccsssseecessetsecesnetessenneenen 19 t
‘ 1 Thanh ghi chế độ dinh thoi TMOD .sscccscsssssssesssecesssneeeeceessssneesees 20 i : 2 Thanh ghi điểu khiển định thời TCON . - 21 :
£ 3 Các chế độ định thời và cờ trần . -cccc+cccccrerrereerrreeee 22 ‡
i L3 PORT NỐI TIẾP . - 2£ ©2222E+++EE+tEExrtzrrrterkrerrrkerrre 27 :
i 1 Giới thiệu cccccccccreecrerree ¬ 27 i
i 2 Thanh ghi điều khiển port nối tiếp -cccssrcceer 28 :
Bebe tie hehe bie sóc sắc sắc te he abe he ete cóc tie sắc cắn cốc sắc sóc sắc he he eh sắc cóc sắc be hr FR
Mạch đếm sản phẩm giao tiếp PC
Trang 3
==————.—
LAA REA ATE AEA AEA AAA A ABE
i 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 -c+csrrererttrterrtrrderrtrrrtrrrrree 30 :
+ L4 HOẠT DONG NGAT .ssnnnennnernrrrrrrrrrrreree 32 ‡
' CHƯƠNG II: GIAO TIẾP VỚI MÁY TÍNH 4s 3
i I1 GIỚI THIỆU CỔNG NỐI TIẾP RS232 - 45 : IL2 GIỚI THIỆU VIMẠCH MAX232 . -ss 46 :
£113 SƠ ĐỒ KẾT NỐI CỔNG COM VỚI 89C51 - 47 |
PHẨN III:THIẾT KẾ VÀ THI CÔNG MẠCH!
Ì CHƯƠNG I: THIẾT KẾ PHẦN CỨNG .- 4 7
‡IILI SƠ ĐỒ KHỐI -22222222° 2S2SSS9SSErrttttttttttritrrrrrrrre 48 : IIL2 SƠ ĐỒ NGUYÊN LÝ . -ccc555552c+tsrrrttrrttrtrririrrrie 49 4
i II.3 TÍNH TOÁN THIẾT KẾ . ->tttttttrtt 50 i
{ 1 KhOi Cam DIED ooeeeceececesssceseeceseceececescsecsseeeneseeseeeeeesseesseeseneseeneensesntes 50 i
i 2_ Khối hiển thị c-ccctcccrttrrrttrrrerrrrrrttrrrrtirirrrrrrirrrrriiin 51 i
‡ 3 Khối điểu khiển động cơ -ceererrerretrrterrrtrrtrrrtrtrrrre 52 i
Ì CHƯƠNG ï : CHƯƠNG TRÌNH ĐIỀU KHIỂN 54 $
on GIẢI THUẬT CHƯƠNG TRÌNH . - 54 i
t 1 Giải thuật chương trình chính . -++tseeseereterterrtrttrttrtrte 54 :
i 2 Chương trình ngắt ngoài -ccccntnttnnnneeetrrrrrrrrrrrrr 55 i
{ 4 Chutong trình đếm kênh 2 -2++++cvrtttrrrttrerrrrtrtrrrrrrrrriiirr 57 i
: 5 Chương trình đếm kênh 3 -ec+eeereetertetrretrterrrtrrrrrrrrer 58 |
Be ie ee eile thet cửc các cức c cắc cức cc cửc ức ắc củc ắc cúc cn cúc he ahh He te cc cúc ÂN
Mạch đếm sản phẩm giao tiếp PC
Trang 4
=——
Be a A A A RP A A AE SIE I A AE A A A AB PR RE
ị 6 Chương trình đếm kênh 4 -eccseeerterertttrrerrrtrrrrrrrrrer 59 {
i 7 Chương trình cài đặt . -cstseserrrerrerrtrrrrrrterritrrrrrrirriee 60 i
+ 8 Chuong trinh cài đặt kênh 1 . -‹- -<+‡nseetrrrirrrrrrrrrrre 61 4
h 9 Chương trình cài đặt kênh 2 . -eerserreertrrrrrrrrrrem 62 ;
† Ỹ
: 10 Chương trình cài đặt kênh 3 . -«-cesererrrrrrrrrrrrrrte 63 {
‡ 12 Chương trình so sánh kênh Ì_ -eersreerrereerrreerrrrrree ¬
: 13 Chương trình so sánh kênh 2 . -ceetreeerhtrrtdrrrtrter 66 i
: 14 Chương trình so sánh kênh 3 TT 67 i
; 15 Chương trình so sánh kênh 4 . -+«eeeerertrrrrtrrrrre 68 i
4 16 Chương trình kiểm dữ liệu nhận . -: -+ *°+ 69 +
: I1 CHƯƠNG TRÌNH PHẦN MỀM CHO VI ĐIỀU KHIỂN 70 '
Ì CHƯƠNG I : CHƯƠNG TRÌNH GIAO TIẾP o7 t
: II.1 GIẢI THUẬT CHƯƠNG TRÌNH . -<>+ 98 i
#1, Chương trình nhận dữ liệu . -++eretretetrrrrtrree 93 Ÿ
| 2 Chương trình cài đặt -=<+setrerrrrrrrrrtrrrrrrrrrrrrrrrrrtrrrd 98 | Ỹ
+ HII.2 CHƯƠNG TRÌNH GIAO TIẾP . -5©©55<£+s+eexe2 99 ¿ : Báo cáo kết Quả . - 5555 *++ teen trerrtrrtretrrree 102 i
Trang 5
=—ễễễễễễễễỄễễ
Phan I:
DAN NHAP
IL DAT VAN DE:
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 tốc độ xử lí chậm chap it 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á
hơn cho việc đếm 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
Il MUC DICH CUA DE 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 diéu khiển nhằm tạo ra những sản phẩm, những
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ọ hiểu 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 Trang 1
Trang 6
==——— —
Tóm lại, quá trình nghiên cứu thực hiện dé tài là một cơ hội để chúng
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ƯƠNG ÁN THIẾT KẾ:
Qua quá trình tìm hiểu, nghiên cứu em thấy có các phương án sau là phù
a Tần số đáp ứng của mạch nhanh, cho phép đếm với tần số cao
a Khoảng cách đặt phần phát và phần thu xa nhau cho phép đếm
a Mạch đếm sản phẩm dùng IC rời không linh hoạt, khó có thể thay
đổi và nâng cao các tính năng của mạch
a_ 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 phap ding IC roi kết nối lại không thực hiện được
———ễỄễỄễ_o
Mạch đếm sản phẩm giao tiếp PC | Trang 2
Trang 7
DN
a Số linh kiện sử dụng trong mạch ít hơn
a 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
a Mạch có thể lưu lại số liệu của các ca sản xuất
a 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
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
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
IV GIỚI HẠN CỦA ĐỀ TÀI:
có thể giải quyết được các vấn đề sau:
a 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 5cm”
a Khoảng cách đặt cảm biến không lớn hơn 0,5m
a Mach 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ừ máy tính
V HUONG PHAT TRIEN CUA DE TAIL:
Từ để tài này ta có thể phát triển thêm các tính năng sau:
a_ 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
a_ 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 sản phẩm, đóng nắp
————-ằ ốc
Mạch đếm sản phẩm giao tiếp PC Trang 3
Trang 8
=ằ—Ỷỷýỷ
Chuong I:
GIỚI THIỆU VỀ VI DIEU KHIEN 89C51
1.1 TOM TAT PHAN CUNG:
1 Mô tả:
AT89C51 là một hệ vi tinh 8 bit don chịp CMOS có hiệu xuất cao, công xuất nguồn tiêu thụ thấp và có 4K by 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ớ không mất nội dung qui ước Bằng cách kết hợp một CPU linh hoạt 8§ bi với Flash trên mot chip don thé, Atmel 89C51 là một hệ vi tính 8 bit don chip manh cho ta một giải pháp có hiệu quả về chi phí và rất linh hoạt với các ứng dụng điều khiển
ATS§9C51 có các đặc trưng chuẩn sau:
— 4KB Flash
_ 128 byte RAM
—_ Hai bộ định thời / đếm 16 bữ
~_ Một cấu trúc ngắt ưu tiên và 5 nguyên nhân ngắt
— Mach dao déng va tao xung clock trén chip
Ngoai ra, AT§9C51 được thiết kế với logic 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 noi 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 cÍock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reser tiếp theo
2 Sơ đồ khối:
Sơ đồ khối của AT§9C51 được biểu diễn như hình 2.1.1
Trang 9
—;: RRREGISTER RAM LATCH LATCH FLASH l@€——
1 '
Trang 10P14 05 36h P0.3(AD3)
PI5 [6 3s P0.4(AD4) P16 (7 34 4 PO.5 (ADS) P17 08 33 4 0.6 (AD6)
XTALI H„o 21 HH p2.1(A9)
được ghi vào các chân của pòrí 0, các chân này cĩ thể được sử dụng làm các ngõ vào tổng trở cao
Mạch đếm sản phẩm giao tiếp PC Trang 6
Trang 11Luận văn tốt nghiệp
=== . -————=—
Port 0 con dudc c&u hinh lam 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, por: 0 có các điện trở kéo lên bên trong
Por: 0 cũng nhận các by/e mã trong khi lập trình cho Flash và truy xuất các byíe 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
e Port1:
| Port 1 1a port xuất nhập 8 bít hai chiều có các điện trở kéo lên bên trong
Các bộ đệm xuất của por¿ 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 pør 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ụ pør nhập, các chân của port 1 dang được kéo xuống mức
| Port 1 citing nhan byte dia chi thap trong thdi gian lap trinh cho Flash va
kiểm tra chương trình
e Port 2:
Port 2 1a port xuat nhap 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 pørr 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 pør? 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 nhap, cdc chan cla port 1 dang đượ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 chỉ
16 bit (MOVX @DPTR ) trong ting dung nay, port 2 sử dụng các điện trở kéo
lên trong khi phát các bi 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 @Ri ), port 2 phát các nội dung của thanh ghi
| chức năng đặc biệt P2
| Port 2 cũng nhận các bit dia chi cao va vai tin higu diéu khién trong thdi
e Port 3:
Port 3 1a port xuat nhap 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 porr 3 có thể hút và cấp dòng với 4 ngõ vào TL Khi các logic 1 được ghi lên các chân của por¿ 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 Trang 7
Trang 12
ii
Khi làm nhiệm vụ pòrr nhập, các chân của porí 3 đang được kéo xuống mức thấp do tác động bên ngồ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:
Chan ctia port Chức năng
P3.2 TINT0 ( ngõ vào ngắt ngồi 0 )
P3.4 T0 ( ngõ vào bên ngồi của bộ định thời 0 ) P3.5 T1 ( ngõ vào bên ngồi của bộ định thời 0 )
P3.6 WR ( điều khiển ghi bộ nhớ dữ liệu ngồ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
e Chân cho phép bộ nhớ chương trình PSEN:
khiển truy xuất bộ nhớ chương trình ngồi Khi AT89C51 đang thực thi chương
xuất bộ nhớ đữ liệu ngồi
e Chân cho phép chốt địa chỉ : ALE/PROG Xung của ngõ ra cho phép chốt địa chỉ ALE ( address latch enable ) cho
này cũng được làm ngõ vào xung lập trình ( PROG ) trong thời gian lập trình cho Flash
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 ngồi và tao xung clock Tuy nhiên cần lưu ý là một xung ALE sẽ bị bỏ qua
trong mỗi một chu kỳ truy xuất bộ nhớ dữ liệu ngồi
hố bằng cách sét bit 0 của thanh ghỉ của thanh ghi chức năng đặc biệt cĩ địa chỉ là 8EH Khi bi này được set, ALE chỉ tích cực trong thời gian thực thi lệnh
——m Mạch đếm sản phẩm giao tiếp PC Trang 8
Trang 13
===——=
MOVX hoặc MOVC Ngựcc lại chân này sẽ được kéo lên mức cao Việc set
bit khong cho phép hoạt động chốt by/e 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 cho phép bộ nhớ ngoài EA ( 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 nhiên cần lưu ý là nếu bử khoá 1 ( clock bit 1 ) được lập trình, EA sẽ được chốt bên
trong khi reset
e Chan RESET (RST):
Ngõ vào reseí Mức cao trên chan này trong 2 chu kỳ máy trong khi bộ dao động đang hoạt động sẽ rese AT89C51
e Chan XTALI:
Ngõ vào đến mạch khuếch đại đảo của mạch dao động và ngõ vào đến
mạch tạo xung clock bén trong chip
Hai đặc tính đáng lưu ý là: -
—_ Các thanh ghi và các port xuất / nhập được định địa chỉ theo kiểu á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 chỉ tiết của bộ nhớ dữ liệu trén chip Ta thay rằng
không gian nhớ nội này được chia thành : các dãy thanh ghi ( 00H + IFH ), ving RAM định dia chi bit ( 20H + 2FH ), vùng RAM đa mục đích ( 30H + 7FH ) và các thanh ghi chức năng đặc biệt ( 80H + FFH )
Mạch đếm sản phẩm giao tiếp PC Trang 9
Trang 14DN
EEE
5.1 Ving RAM da muc dich :
Mặc dù hình 2.1.3 trình bày vùng RAM đa mục đích có 80 byíe đặt ở các địa chỉ từ 30H đến 7FH, bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng
FF
FO 7F
22_ Ji7 (16 {15 {14 8C dude dia chi hoa bit THO
21 F OE OD 8B dude dia chi hoa bit TL1
20 8A ng dude dia chi hod bit TLO
1F 89 dude dia chi hoa bit TMOD
18 88 E |8D B TCON
17 87 ng duge dia chi hod bit PCON
10
OF 83 g được địa chỉ hoá bif DPH
08 82 dude dia chi hoa bit DPL
07 ay thanh ghi 0 81 ng dude dia chi hod bit SP
Trang 15
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 dinh dia chi bit :
§9C51 chứa 210 vị trí bi được định dia chi trong d6 128 bit chtfa trong cdc byte & dia chi tit 20H dé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 bi 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 bi có thể được ser, 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 por xuất / nhập cũng có thể định địa chỉ
từng bứ
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 rese 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 R0 đến R7 Để thay đổi dãy thanh ghi tích cực
ta phải thay đổi các bi: 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ừ R0 đế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ỉ S0H đến FFH ( hình 2.1.3 )
Mạch đếm sản phẩm giao tiếp PC Trang 11
Trang 16
Chú ý: không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa
mà chỉ có 21 đ8ja chỉ được định nghĩa
thanh ghi có chức năng đặc biệt SER có thể địa chỉ hóa từng bi hoac byte
6.1.Từ trạng thái chương trình PSW :
Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như bảng 2.1.1
Bit Ky hiéu Địa chỉ Mô tả bit
PSW.? CY D7H Cờ nhớ
PSW.6 AC D6H Cờ nhớ phụ
PSW.5 FO D5H Cờ 0
PSW4 RS1 D4H Chọn dãy thanh ghi ( bit 1 )
PSW.3 RSO D3H Chon day thanh ghi ( bit 0 )
các phép toán số học là được set bang 1 nếu có số nhớ từ phép cộng bử 7 hoặc
có số mượn mang đến bí 7
với các lệnh logic thao tác trên các bí
———7
Mạch đếm sẵn phẩm giao tiếp PC Trang 12
Trang 17
==—ễễ————===
s* Cờ nhớ phụ :
Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC
khiển 0AH~+ 0FH Ngược lại AC = 0
s Cờ:
Đâ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 bử chọn dãy thanh ghỉ :
Cac bit chon dãy thanh ghi RS0, RS1 ding để xác định dãy thanh ghi tích
phần mềm khi cần
% Cờ tràn:
Cờ 0V ( 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ó
hơn +128 hoặc nhỏ hơn -127 sẽ set cd OV bang 1
» Cờ chắn lẻ:
Bi: 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 bi 1 trong thanh chứa cộng với bi P luôn luôn là s6 chan
Bi: 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 ghỉ 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 MUL AB nhân hai số 8 bi: không dấu chứa trong À
va B, roi chita két qua 16 bit trong A (byte cao) va B(byte thấp) Lệnh DIV AB
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 bi định vị thông qua những địa chỉ từ FOH+F7H
6.3.Con trỏ stack :
—ễễ—.-.cc
Mạch đếm sản phẩm giao tiếp PC Trang 13
Trang 18
Nee
Con tré stack ( stack pointer ) 14 m6t thanh ghi 8 Dit ở địa chi 81H N6 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 vao stack (PUSH) va lấy dữ liệu ra khỏi s/ack ( POP )
Lệnh cất dữ liệu vao stack sé lam tang SP trước khi ghi dữ liệu và lệnh lấy ra khỏi s¿ack sẽ làm gidm SP Stack cha 8031/8951 được giữ trong RAM nội và
đầu của AT89C51
Để khởi động SP với søck bắt đầu tại địa chỉ 60H, các lệnh sau đây được dùng:
MOV SP, #5F V6i lénh trén thi stack cla AT89C51 chi c6 32 byte vi dia chi cao nhat của RAM trén chip 1a 7FH Sé di gid trị 5FH được nạp vào SP vi SP tang lén 60H trước khi cất by/e dữ liệu
Khi Reset AT89C51, SP sé mang giá trị mặc dinh 14 07H va dữ liệu dau tiên sẽ được cất vào ô nhớ s/ack 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 s/ack S:ack đượ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, RETL) để 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.Con 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 bi ở dia chi 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 Cac thanh ghi port :
Cee eee ee
Mạch đếm sản phẩm giao tiếp PC Trang 14
Trang 19
————
Các Por: của 89C51 bao gồm Porr 0 ở địa chi 80H, Port 1 ở địa chỉ 90H, Port 2 6 dia chi AOH, va Port 3 ở dia chi BOH Tất cả các Por? này đều có thể truy xuất từng bi nên rất thuận tiện trong khả năng giao tiếp
6.6.Các thanh ghi định thời :
§9C51 có chứa hai bộ định thời / bộ đếm 16 bi: được dùng cho việc định
khoảng thời hoặc để đếm các sự kiện Timer 0 6 dia chi 8AH ( TL0: by/e thấp )
va 8CH ( THO: byte cao ) Timer 1 & dia chi 8BH ( TLI: byte thap ) va 8DH (THI: by/e 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 0
6.7.Các thanh ghi của por¿ nối tiếp :
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à đữ liệu nhận về Việc ghi lên SBUE 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
được định địa chỉ từng bĩt
6.8.Các thanh ghỉ ngắt :
ghỉ 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 bứ
6.9.Thanh ghi điều khiển nguồn :
87H chứa các bi: đ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 chi bit
ene
Mach đếm sản phẩm giao tiếp PC Trang 15
Trang 20
=——
Bit Kýhiệun Mô tả
cho tốc độ baud tăng 2 ở các chế độ 1, 2, 3 cla Port
nối tiếp
- Khong dinh nghia
- Khong dinh nghia
GFO Bit cS đa mục dich 1
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
Bang 2.1.2: Thanh ghi PCON
7.Bộ nhớ ngoài:
AT89C51 c6 khả năng mở rộng bộ nhớ lên đến 64K byíe bộ nhớ chương
trình và 64k byứe bộ nhớ dữ liệu ngoài Do đó có thể dùng thêm RAM và ROM
nếu cần
Khi dùng bộ nhớ ngoài, Por 0 không còn chức năng LO nữa Nó được kết hợp giữa bus địa chỉ (A0 - A7) và bus dữ liệu (D0 - D7) với tín hiệu ALE để
byre cao của bus địa chỉ
7.1.Truy xuất bộ nhớ chương trình ngoà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
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
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ổ )
Mạch đếm sản phẩm giao tiếp PC Trang 16
Trang 21
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được cho phép c của tín hiệu RD va WR Hai tin hiéu nay 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 R0, R1 làm thanh ghi chứa địa chỉ
Các RAM có thể giao tiếp với AT89C51 theo cùng cách như EPROM ngoại trừ chân RD của AT§9C51 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 cdc bus địa chỉ và dữ liệu tương tự như cách nối của EPROM ( hình
Trang 22
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:
0000H IFFFH, 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ối với những ngõ vào chọn Chip CS ( Chip Select ) trên những IC nhớ EPROM, RAM,
8 Hoạt động reset:
AT89C5I đượ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ìnhPC 0000H
Thanh chifa A 00H Thanh ghi B 00H
Trang 23—O oO
RESET R2
8.2K
Hình 2.1.6 : Reset bang tay
Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được nạp 0000H Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ 0000H của bộ nhớ chương trình Nội dung của RAM trên chíp không bị ảnh hưởng bởi hoạt động reset
L2 HOAT ĐÔNG ĐỊNH 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 l6 Dit, 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 øør: nối tiếp của chíp AT89C51
Với bộ định thời 16 bir, 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 2'° =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 của các ngõ nhập hoặc gởi
dữ liệu đến các ngõ xuất Các ứng dụng khác có thể sử dụng xung cỉock 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 ATS§9C51 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 Trang 19
Trang 24Luận văn tốt nghiệp
Byte cao cua bộ định thời
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 chế độ định thời TMOD:
Thanh ghi TMOD (timer mode register) chứa hai nhóm 4 bi dùng để
thiết lập chế độ hoạt động cho bộ định thời 0 và bộ định thời 1(bang 2.1.5) va bảng 2.1.6) TMOD không được định chỉ từng bi 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
được điều khiển bởi các bi: 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 bi/ chọn chế độ của
Trang 25được set lên 1, bộ định thời chỉ
hoạt động trong khi INTI ở mức
cao
hoặc định thời:
1=đếm sự kiện 0=định thời trong một khoảng thời gian
Bảng 2.1.6 : Thanh ghi chọn chế độ định thời
2.Thanh ghỉ điều khiển định thời TCON: ˆ
Thanh ghi TCON chứa các bi: đ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 bử 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 ( TFO, TF† )
Bốn b¡/ thấp của TCON ( TCON.0 - 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
Trang 26===——
| 3 Chế độ đỉnh thời và cờ tràn:
đị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
chi bit
TCON.7 TF1l 8FH Cờ tràn của bộ định thời 1,dudc 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 phục vụ ngắt
TCON.5 | TFO |S§DH_ | Cờ tràn của bộ định thời 0
TCON.6 TRI SEH
TCON.3 IE1 8§8BH | Cờ ngắt bên ngoài 1 (kich 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 INT! , đượ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 SAH _ | 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.0 ITO 88H Cờ ngắt ngoài 0 ( kích khởi cạnh hoặc
Trang 27==— ừừ.F.,
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ế
EE
Mạch đếm sản phẩm giao tiếp PC Trang 23
Trang 28các thanh ghi cao và thấp (TLx, THx) Khi xung ciock đượ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ừ FFEH sang 0000H va sé set cd tran Timer, sau
đó Timer đếm tiếp
- Cờ tràn là b¿/ TFx trong thanh ghi TCON mà nó sẽ được đọc hoặc ghi
bởi phần mềm
- Bi có trọng số lớn nhất (MSB) của giá trị trong thanh ghi Timer là bi/
7 của THx và bi có trọng số thấp nhất (LSB) là bi: 0 của TLx Bi LSB đổi
trạng thái ở tần số ciock vào được chia 2!° = 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 nạp lại ( chế độ 2):
Mode 2 là mode tự động nạp 8 bi, byíe thấp TLx của Timer hoạt động như một Timer 8 bi/ trong khi by/e 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ế độ đỉnh 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 va THO hoat déng như những Timer riêng lẻ với sự tràn sẽ set các bit TLO va 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 TH0
- Mode 3 cung cap 1 Timer ngoai 8 bit 1a Timer thứ ba của AT89C51
Khi vao Timer 0 6 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 Pør: 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 gaotiểÐPCO Trang 24
Trang 29
———C—————————
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 8i C/T trong TMOD cho phép chọn | trong 2 khi Timer được khởi động
1 = Down (Event Counting)
Hinh 2.1.8 : Nguén xung clock 3.6 Dinh 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 Chíp 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 tan số dao động trên Chịp Nếu dùng thạch anh
12MH:z thì sẽ đưa đến tốc độ ciock 1MHz
- Các sự tràn Timer sinh ra sau một con số cố định của 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
16 bit trong các thanh này tăng lên cho mỗi sự kiện
- Nguồn xung ciock bên ngoài đưa vào chân P3.4 là ngõ nhập của xung clock bởi Timer 0 (T0) và P3.5 là ngõ nhập của xung cÍock bởi Timer 1 (T1)
- 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 (2u) để nhận ra
————ỶỶỶ-aơơơaaaaơasaazơợơợgesnayợợơơơơợơợgnnnnượợgnnnnợnnrraamemm=
Mạch đếm sản phẩm giao tiếp PC Trang 25
Trang 30
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ởi động dừng và điều khiển các bộ đỉnh thời:
Bi: TRx trong thanh ghi có bi đị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 bi: 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 (bi Gate= 0) Bi 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 v6i TLO/THO = 0000H, GATE = 1, TRO = 1
Như vay khi INTO = 1 thì Timer “được mở cổng” và ghi giờ với tốc độ của tần
số 1MHz Khi INT0 xuống thấp thì Timer “đóng cổng” và khoảng thời gian
của xung tinh bang ps 14 su dém được trong thanh ghi TL0/TH0
cụ thể
Mạch đếm sản phẩm giao tiếp PC Trang 26
Trang 31
== ———
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 6 mode 1 (mode Timer 16) và được ghi giờ bằng dao động trên Chip ta dùng lệnh : MOV TMOD, # 00001000B Trong lénh nay M1 = 0, MO = 1 dé vao mode 1
và C/T = 0, GATE = 0 để cho phép ghi giờ bên trong đồng thời xóa các bí mode của Timer 0 Sau lệnh trên Timer vẫn chưa đếm giờ, nó chỉ bắt đầu đếm giờ khi set bi đ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ừ 0000Hlê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, thi Timer sé bat đầu đếm 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 us, ta sẽ gọi mode Timer ty
động nạp 8 bử 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 DONG PORT NOI TIEP:
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ối 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 cla 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
——saỶaỶ-Ằờẳẳcs-.-.ẳ-ẳẶiẳïsễzszazassasasaaaanasaarararsammmmmrmmmmmmm
Mạch đếm sản phẩm giao tiếp PC Trang 27
Trang 32
Luận văn 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
Hinh 2.1.10: So a6 port néi tiép
Thanh ghi điều khiển port nối 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ối 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 bít 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ối 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 port nối 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
Trang 33Luận văn tốt nghiệp
SM0 SMI Chế độ Mô tả Tốc độ baud
0 0 0 Thanh ghi Cố định (Fosc /12 )
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.5 | SM3 9DH |Bit 2 của chế độ port nối tiếp Cho
| độ 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 để
SCON.3 TB8 9BH_ | Bit 8 phát, bít 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 | Bit 8 thu, bit thi’ 9 thu dude
SCON.1 TI 99H | Cờ ngắt phát Đặt lên 1 khi kết thúc
Trang 34_ Luận văn tốt nghiệp
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,#xxx1xxxxB
Sẽ đặt REN I1 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 TB8 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 dé 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ờ ngắt:
Hai cờ ngắt thu và phát (RI và TD 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 port nối 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 số 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 giao tiếp PC Trang 30
Trang 35
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à bít SMOD Đặt bit sMOD lên một làm gấp đôi tốc độ baud trong chế độ 1, 2 va 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 (SMOD=1)
Vì PCON không được định địa chỉ theo bít, 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 dat bit 7 (SMOD) lén 1
MOV PCON.A ghi gid trị ngược vé PCON
Các tốc d6 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=I ) trước khi cung cấp xung nhịp tốc độ baud cho port nối tiếp
1†na——————————-ùẮÖ——=
Mạch đếm sản phẩm giao tiếp PC Trang 31
Trang 36chươ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à l ngắt Por: 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ý ngắ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 )
1.1.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 phi chức năng đặc biệt có các bi được địa chỉ hóa IE (Interrupt Enable) tai dia chỉ 0ASH
BIT | Kihiéu | Dia chi bit Mô tả:
(1:cho phép 0:khô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
IE5 | 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 ETI ABH Cho phép ngắt do bộ định thời 1
IE.2 | EXI AAH _ | Cho phép ngắt từ bên ngoài (ngắt ngoài 1) IE.1 EXO A9H Cho phép ngắt từ bên ngoài (ngắt ngoài 0) IE.0 ETO A8H Cho phép ngắt do bộ định thời 0
Trang 37
Neen
1.2 Uu tién ngat:
mức ưu tiên thông qua thanh ghi chức năng đặc biệt được định địa chỉ bit, thanh
Bit Kí Địa chỉ Mô tả:
hiệu bit (1:mức cao; 0: mức thấp)
IP.7 - - Không sử dụng
IP.6 - - Không sử dung IP.5 PT2 | 0BDH | Ưu tiên cho ngắt do bộ định thời 2
IP.3 PTI 0BBH | Ưu tiên cho ngắt do bộ định thời 1
IP2 | PXI | 0BAH | Ưu tiên cho ngắt dở bên ngoài (ngắt ngoài 1) IP.1 PTO 0B9H | Uu tién cho ngắt do bộ định thời 0
Bảng 2.1.11: Thanh ghi ưu tiên ngắt IP
2 Xử lý 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 vao stack
— Trang 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
Việc thực thi chương trình chính được tiếp tục ở nơi bị tạm ngưng
—————.n
Mạch đếm sản phẩm giao tiếp PC Trang 33
Trang 38Do bên ngoài (ngắt ngoài 0 ) IE0 TCON.1
Do bộ định thời 1 TFl TCON.7
Do bộ định thời 0 TFO ‘| TCON.5S
Khi ngắt được chấp nhận giá trị được đưa vào PC (ProgRAM Counter) gọi
là vector ngắt (Interrupt Vector)
Bộ định thời 2 TF2 hoặc EXF2 002BH
Trang 39
==
set cd 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 Por: nối Tiếp
Ngắt Por: nối tiếp xảy ra khi cả 2 cờ ngắt truyền (TD hoặc cờ ngắt nhận (RD được đặt Ngắt truyền xảy ra khi bử cuối cùng trong SBUF truyền xong tức là lúc này thanh ghi SBUF rỗng Ngắt nhận xảy ra khi SBUF đã hoàn thành việc nhận và đang đợi để đọc tức là lúc này thanh ghi SBUF day 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 INT0 hoặc INTI1 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 IE0 vá TE1 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 cdc bit ITO va IT1 trong TCON Néu IT1 = 0, ng&t ngoai 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 bằng cạnh xuống trong chế độ này, nếu các mẫu liên tiếp trên chân INT1 chỉ mức cao trong một chu kỳ và chỉ mức thấp trong chu kỳ kế, cờ yêu cau ngắt IEI1 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 thì nguồn bên ngoài phải 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 ngoài đượ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 TOM TAT TAP LENH:
1 Các kiểu đỉnh địa 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 địa chỉ cho phép ta xác định rõ nguồn và đí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ỉ:
EE
Mạch đếm sản phẩm giao tiếp PC Trang 35
Trang 40— Gidn ti€p ( indirect)
— Tic thdi (immediate)
— Tương đối ( relative)
— Tuyệt đối (absolute)
— Dài ( long)
— Chỉ số (index)
1.1.Dinh địa 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ừ R0 đến R7 các lệnh sử dụng kiểu định địa chỉ thanh ghi được
ma hod bang cach ding 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 l 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 by/e như sau:
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 dau tién cia RAM dữ liệu trên chip ( địa chỉ từ 00H đến 1FH ) và ta dùng các bi 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 bii
4 và 3 của PSW sao cho phù hợp
1.2.Điỉnh địa 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 Chịp hoặc thanh ghi phần cứng trên Chip Một bye địa chỉ trực tiếp được đưa vào Opcode
để định rõ vị trí được dùng như sau:
Opcode
L
Mạch đếm sản phẩm giao tiếp PC Trang 36