Bộ vi điều khiển được phát triên từ bộ vi xử lí, từ những năm 70 do sự phát triển và hồn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS Metal-Oxide-Semiconductor , mức độ tích hợp
Trang 1TRUONG DAI HOC BACH KHOA HA NOI
Giáo viên hướng dẫn
Sinh viên thực hiện
Lớp
HÀ NỘI, 6—2011
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 34 Các bản vẽ và đồ thị:
6 Ngày giao nhiệm vụ: .c 2Ÿ Ằ Sàn
7 Ngày hoàn thành nhiệm vụ: .-
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
SINH VIÊN ĐÃ HOÀN THÀNH
(Nộp toàn bộ bản thiết kế cho Khoa) Ngay thang nam 2011 (Ky và ghi rõ họ tên)
Trang 4LỜI NÓI ĐẦU
Khái niệm về đo nhiệt độ đã có từ lâu, trong tất cả các đại lượng vật lý thì nhiệt độ được quan tâm đến nhiều nhất Nhệt độ là yếu tố ảnh hưởng trực tiếp đến tính chất của vật chất và
môi trường sống Trong công nghiệp sản xuất và trong lĩnh vực đo lường điều khiến, quá trình
đo nhiệt độ và xử lý kết quả giữ một vai trò quan trọng
Ngày nay khi nền công, nông nghiệp phát triển mạnh, việc kiểm soát nhiệt độ, độ 4m khi bảo quản, lưu trữ các sản phẩm công, nông nghiệp trong các kho chứa là rất quan trọng Thông
thường, với các loại hàng hóa được lưu trữ, nhiệt độ, độ âm trong kho phải luôn duy trì ở một
mức nhất định Ở nước ta, nhiều gian hàng bảo quản vẫn làm theo các phương pháp thủ công Khi mua thóc tươi đồ về kho, quá trình sinh hóa vẫn diễn ra, do đó nhiệt độ và độ âm tăng nhanh Đề kiểm tra nhiệt độ, độ ẩm trong kho thóc, hàng ngày phải dùng thiết bị đo gắn vào đầu một cái thuốn và chọc vào thóc ở các điểm khác nhau, rồi ghi vào số Với phương pháp thủ
công này, việc đo nhiệt độ, độ am không chính xác, không đo được nhiệt độ độ âm trong lòng
khối thóc, nhất là phía đáy, không theo dõi được nhiệt độ, độ ẩm thường xuyên
Vì vậy với yêu cầu đó em đã được thầy giao cho đề tài: “Thiết kế hệ thông đo
nhiệt độ phòng”
Em rất mong nhận được sự chỉ đạo và hướng dẫn của các thầy cô, cũng như ý kiến
đóng góp của các bạn sinh viên đề đề tài của em hoàn thiện hon
Em xm chân thành cảm ơn !
Hà Nội, ngày thang nam 2011
Trang 5lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian và
tiến hành đóng mở một cơ cấu nào đó
Trong các thiết bị điện và điện và điện tử dân dụng, các bộ vi điều khiển, điều khiển
hoạt động của TV, máy giặt, đầu đọc laser, điện thọai, lò vi-ba Trong hệ thống sản xuất
tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuyên tự động Các hệ thống càng “thông minh” thì vai trò của hệ vi điều khiển càng quan trọng
ILLICH SU PHAT TRIEN CUA CAC BO VI DIEU KHIỂN
Bộ vi điều khiển thực ra, là một loại vi xử lí trong tập hợp các bộ vi xử lý nói chung Bộ
vi điều khiển được phát triên từ bộ vi xử lí, từ những năm 70 do sự phát triển và hồn thiện
về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-Oxide-Semiconductor) , mức độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng cao
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 đo công ty texas Instruments vừa là nơi phát minh vừa là nhà sản xuất Nhìn tổng thẻ thì bộ vi xử lí chỉ có chứa trên một chip những chức năng cần thiết để xử lí chương trình theo một trình tự, còn tat cả bộ phận phụ
trợ khác cần thiết như : bộ nhớ dữ liệu , bộ nhớ chương trình , bộ chuến đồi AID, khối điều
khiển, khối hiền thị, điều khiển máy in, hối đồng hồ và lịch là những linh kiện nằm ở bên
ngồi được nói vào bộ vi xử lí
Trang 6Mãi đến năm 1976 công ty INTEL (Interlligen- Elictronics) Mới cho ra đời bộ vi điều
khiển đơn chip đầu tiên trên thế giới với tên gọi 8048 Bên cạnh bộ xử lí trung tâm 8048 còn chứa bộ nhớ dữ liệu, bộ nhớ chương trình, bộ đếm và phát thời gian các công vào và
ra Digital trên một chip Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8bit tương tự như 8048 và hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-
48) Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn
chip với tên gọi 8051 Và sau đó hàng loạt các vi điều khiển cùng loại với 8051 ra đời và hình thành họ vi điều khiển MCS-51
Đến nay họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết các công ty hàng dẫn hàng dau thế giới chế tạo Đứng đầu là céng ty INTEL và rất nhiều công ty khác
như : AMD, SIEMENS, PHILIPS, DALLAS, OKI
Ngôi ra còn có các công ty khác cũng có những họ vi điều khiển riêng như:
Ho 68HCOS cua cong ty Motorola
Họ ST62 của công ty SGS-THOMSON
Họ H§ của công ty Hitachi
Ho pic cua công ty Microchip
HI.KHẢO SÁT BỘ VI ĐIÊU KHIỂN 8051 VÀ 8031:
IC vi điều khiển 8051/8031 thuộc họ MCSS5I có các đặt điểm sau :
- 4kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
- 128 bit RAM
- Aport 110 8bit
Hai bộ định thời 16bit
-_ Giao tiếp nói tiếp
-_64KB không gian bộ nhớ chương trình mở rộng
- 64 KB không gian bộ nhớ dữ liệu mở rộng
- một bộ xử lí luận lí (thao tác trên các bit đơn)
- 210 bit duge dia chi hoa
- b6 nhan/ chia 4s
1.Cấu trúc bên trong của 8051 / 8031 :
Trang 7
- Thanh ghi tích lũy A
- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
- Don vi logic hoc (ALU : Arithmetic Logical Unit )
- Tir trang thai chuong trinh (PSW : Prorgam Status Word)
- Bốn băng thanh ghi
-_ Con trỏ ngăn xếp
- Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiến thời gian và logic Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ giao động, ngồi ra còn có khả năng
đưa một tín hiệu giữ nhịp từ bên ngồi Chương trình đang chạy có thể cho dừng lại nhờ một
khối điều khiển ngắt ở bên trong Các nguôn ngắt có thể là : các biến có ở bên ngôi , sự tràn bộ đếm định thời hoặc cũng có thể là giao diện nói tiếp Hai bộ định thời 16 bit hoạt động như một bộ đếm Các công (port0, port1, port2, port3 ) Sử dụng vào mục đích điều
Trang 8khiển ngoài ra có thêm các đường dẫn điều khiển ding để trao đồi với một bộ nhớ bên
ngoài, hoặc để đầu nối giao diện nối tiếp, cũng như các đường ngất dẫn bên ngoài Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau Tốc độ truyền qua công nói tiếp có thể đặt trong vảy rộng và được ấn định bằng một bộ định thời
Trong vi điều khiển 8051 /8031 có hai thành phần quan trọng khác đó là bộ nhớ và các
I2MHz[— _] XTALI Po6 —3#—— AD6
Po2 + 32— AD2 Pol C—Ỷ—— ADI
P24 P23
Trang 9PortI là một port I/O trên các chân 1-8 Các chân được ký hiệu P1.0, P1.1, P1.2 cd thể dùng cho các thiết bị ngồi néu can Portl không có chức năng khác, vì vay
chúng ta chỉ được dùng trong giao tiếp với các thiết bị ngoài
c.port2 :
Port là một port công dụng kép trên các chân 21 — 28 được dùng như các
đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế đùng bộ nhớ mở rong
d.Port3 :
Port3 là một port công dụng kép trên các chan 10 — 17 Cac chân của port này
có nhiêu chức năng, các công dụng chuyên đôi có liên hệ với các đặc tín đặc biệt của 8051
8031 như ở bảng sau :
Bit Ten Chức năng chuyên đôi
P34 TO Ngõ vào của timer/counter 0
P3.5 Tl Ngé vao cua timer/counter |
P3.6 WR Xung ghi bộ nhớ dữ liệu ngồi
Bảng : Chức năng của các chân trên port3
e.PSEN (Program Store Enable ) :
8051 /8031 có 4 tín hiệu điều khiển
PSEN là tín hiệu ra trên chân 29 Nó là tín hiệu điều khiển để cho phép bộ nhớ chương trình mở rộng và thường được nối đến chân OE (Output Enable) của một EPROM đề cho phép đọc các bytes mã lệnh PSEN sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trình được đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của 8051
để giải mã lệnh Khi thi hành chương trình trong ROM nội (8051) PSEN sẽ ở mức thụ động (mức cao)
f.ALE (Address Latch Enable ) :
Trang 10Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các xử lí 8585,
8088, 8086, 8051 dùng ALE một cách tương tự cho làm việc giải các kênh các bus địa chỉ
và dữ liệu khi port 0 được dùng trong chế độ chuyên đổi của nó : vừa là bus dữ liệu vừa là búyt thấp của địa chỉ, ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngồi trong
nữa đầu của chu kỳ bộ nhớ Sau đó, các đường port 0 dùng đề xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của bộ nhớ Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng là nguồn xung nhịp cho các hệ thống Nếu xung trên 8051 là 12MHz thì ALE có tần số 2MHz Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE
sẽ bị mắt Chân này cũng được làm ngõ vào cho xung lập trinh cho EPROM trong 8051
g.EA (External Access) :
Tín hiệu vào EA trên chân 31 thường được mắc lên mức cao (+5V) hoặc mức thấp
(GND) Nếu ở mức cao, 8051 thi hành chương trình từ ROM nội trong khoảng địa chỉ
thấp (4K) Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng Khi dùng
8031, EA luôn được nôi mức thấp vì không có bộ nhớ chương trình trên chip Nếu EA được nối mức thấp bộ nhớ bên trong chương trình 8051 sẽ bị cắm và chương trình thi hành
từ EPROM mở rộng Người ta còn dùng chân EA làm chân cấp điện áp 21V khi lập trình cho EPROM trong 8051
h.SRT (Reset) :
Ngõ vào RST trên chân 9 là ngõ reset của 8051 Khi tín hiệu này được đưa lên múc cao - (trong ít nhât 2 chu kỳ máy ), các thanh ghi trong 8051 được tải những giá trị thích hợp đề khởi động hệ thông
i.Các ngõ vào bộ dao động trên chip :
Như đã thấy trong các hình trên , 8051 có một bộ dao động trên chip Nó thường được nối với thạch anh giữa hai chân 18 và 19 Các tụ giữa cũng cần thiết như đã vẽ Tần số thạch anh thông thường là 12MHz
j.Các chân nguồn :
8051 van hanh với nguồn đơn +5V Vcc được nói vào chân 40 và Vss (GND) được nói
vào chân 20
3.Các thanh ghi chức năng đặc biệt:
Các thanh ghi nội của 8051/8031 được truy xuất ngầm định bởi bộ lệnh Ví dụ lệnh
“INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1 Tác động này được ngầm định trong mã lệnh Các thanh ghi trong 8051/8031 được định dạng 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 trực tiếp, sẽ không có
lợi khi đặt chúng vào trong RAM trên chip) Đó là lý do dé 8051/0831 cé nhiéu thanh ghi
Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Rgister) ở
vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hau hết 128 dia chi tir 80H
Trang 11đến FFH không được định nghĩa Chỉ có 21 địa chỉ SER là được định nghĩa Ngoại trừ
tich lity (A) có thé duge truy xuat ngầm như đã nói, đa số các SFR được truy xuất dùng địa
chỉ trực tiếp chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte
Người thiết kế phải thận trọng khi truy xuat bit va byte
Ví dụ lệnh sau:
SETB 0E0H
Sẽ Set bit 0 trong thanh ghi tích lũy, các bit khác không thay ddi Ta thay rang E0H đồng thời là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bit có trọng số nhỏ nhất trong thanh ghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bít là có hiệu quả
Chế độ nghĩ
Ở chế độ nghỉ, CPU được đặt ở chế độ ngủ trong khi tất cả bộ phận ngoại vi vẫn hoạt
động Chế độ này được gọi ra bởi phần mềm Nội dung của các thanh ghi trong RAM va tat
cả các giá trị trong thanh ghi đặc biệt cũng sẽ không đôi ở ché độ này Ché độ nghỉ có thể
bị dừng lại bất kì khi nào có sự kích hoạt hay thay đổi nào đó, hoặc được reset bằng phần
cứng
Các P1.0 va P1.1 nên được thiết lập ở mức "L" nếu bên ngoài-up không được sử dụng, hoặc thiết lập ở mức "H" nếu bên ngoài pull-up được sử dụng
Cần lưu ý răng khi “nghỉ ”là kết thúc bằng một phần cứng Tài liệu thực hiện chương trình
từ đâu nó lại tắt, lên tới hai chu kỳ máy trước khi các nguyên tắc điều khiển bên trong thiết
lập lại Trên chíp phần cứng quyết định quyền truy cập vào bộ nhớ trong RAM trong trường hợp này, nhưng truy cập vào các port không thể quyết định được Đề loại trừ khả
năng này xảy ra một cách bắt ngờ viết cho một port khi chế độ nghỉ được lặp lại, ta không
nên việt tới một Port hay bộ nhớ ngoài
Chế độ power-down
Ö chế độ power-down, bộ dao động ngừng, và chương trình sẽ gọi power-down và lệnh cuối cùng được thực hiện Trên chíp nội dung RAM và tất cả các giá trị trong thanh ghi đặc biệt cũng sẽ không đôi ở chế độ này cho đến khi chế độ này kết thúc Chế độ power-down chỉ thoát ra khi reset lại phần cứng Thiết lập lại giá trị các SFR ( thanh ghi
có chức năng đặc biệt) nhưng trên RAM vẫn giữ nguyên
Chú ý: Không nên reset lại trước khi VCC được phục hồi lại hoạt động bình thường và phải được giữ mức tích cực đủ dài, để cho phép bộ giao động khởi động lại và làm việc ôn định
a Từ trạng thái chương trình:
Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H chứa các bit trạng thai nhu bang tom tat sau:
Trang 12PSW4 | RSI D4H Bit | chọn bank thanh ghi
PSW.3 | RSO D3H Bit chọn bank thanh ghỉ
00=bank 0; địa chỉ 00H-07H O1=bank |: địa chỉ I§H-0FH
1I=bank 3:địa chỉ I§H-IFH
ADD A#1
Sẽ trả về thanh ghi tich liiy két quia 00H và set cờ nhớ trong PSW
Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit
Vi dụ, lệnh sẽ AND bit 25H với cờ nhớ và đặt kết qủa trở vào cờ nhớ:
ANL C,25H
* Co nho phu:
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết qua của 4 bit thấp trong
khoảng 0AH đến 0FH Nếu các giá trị cộng được là số BCD, thì sau lệnh cộng cần có DA
A( hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết qủa lớn hon 9 trở về tâm từ 0+9
* Cod
Cờ 0 (F0)là một bit cờ đa dung dành các ứng dụng của người dùng
5 Các bit chọn bank thanh ghi
Cac bit chon bank thanh ghi (RSO va RSI) xác định bank thanh ghi được tích cực
Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyên nội dung của thanh ghi R7 (địa chỉ byte
IFH)
đến thanh ghi tích lũy:
SETB RSI
SETB RSO
Trang 13MOV A,R7
Khi chương trình được hợp dịch các dia chi bit đúng được thay thế cho các ký hiệu
“RSI” và “RS0” Vậy lệnh SETB RSI sẽ giống như lệnh SETB 0D4H
* Co Tran
Cờ tràn (OV) được set một lệnh cộng hoặc trừ nếu có một phép tốn bị tràn Khi các số
có đầu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết qủa của nó có năm tron; tầm xác định không Khi các số không dấu được cộng, bit OV có thé được bỏ qua Các kết qủa lớn hơn +127 hoặc nhỏ hơn —128 sẽ set bit OV
b Thanh ghi B:
Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép tốn nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dau 8 bit trong A và B roi tra vé két qua 16 bit trong A (byte thấp) và B (byte cao) Lệnh DIV AB sẽ chia A cho B rồi trả về kết qủa nguyên trong A và phần dư trong B Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng Nó được địa chỉ hóa ttừng bit bằng các địa chỉ bit FOH đến F7H
c Con trỏ ngăn xếp:
Con trỏ ngăn xếp (SP) là một thanh ghi 8 bít ở địa chỉ 81H Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xép Lệnh cất đữ liệu vào ngăn xếp sẽ làm
tăng
SP trước khi ghi dữ liệu, và lệnh lấy đữ liệu ra khỏi ngăn xếp sẽ dọc dữ liệu và làm giảm
SP Ngăn xếp của 8051/8031 được giữ trong RAM nội và được giới hạn các địa chỉ có thé truy xuất bằng địa chỉ gián tiếp chung 1a 128 byte dau của 8051/8031
Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng:
MOV SP,#%FH
Trên 8051/8031 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trên chip
là 7FH Sở đĩ cùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte đữ lệu đầu tiên
Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp ma dé nó lấy giá trị mặc định khi reset hệ thống Giá tri mac dinh đó là 07H và kết qủa là ngăn đầu tiên để cất dữ liệu có địa chỉ 08H Nếu phần mềm ứng dụng không khởi động lại SP , bank thanh
ghi I (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm ngăn xếp Ngăn xêp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu giữ tạm thời va lấy lại dữ liệu hoặc được truy xuât ngâm bằng các lệnh gọi chương trình con (ACALL, LACALL) và các lệnh trở về (RET,RETI) đề cất và lay lại bộ đếm chương trình
d Con trỏ dữ liệu:
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngồi là một thanh ghi 16 bit ở
dia chi 82H(DPL: byte thấp) va 83H (DPH:byte cao) Ba lệnh sau sẽ ghi 55H vào RAM
Trang 14Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy, lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bit 1000H vào con trỏ dữ liệu
Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngồi ở địa chỉ được chứa trong DPTR (1000H)
e Các thanh ghi port xuất nhập:
Các port của 8051/8031 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90 H, Port 2 ở dia chi AOH va Port 3 6 dia chi BOH Tat cả các Port đêu được địa chỉ hóa từng bít Điêu
đó cung câp một khả năng giao tiêp thuận lợi
f Các thanh ghi timer:
8051/8031 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đếm sự kiện Timer 0 ở địa chỉ §AH (TL0:byte thấp) và §CH (TH0:byte cao).Timer 1 ở địa chỉ
§BH (TLI:byte thấp) va 8DH (THI: byte cao) viée vận hành timer được set bởi thanh ghi
Timer Mode (TMOD) 6 dia chỉ 89H và thanh ghi điều khién timer (TCON) ở địa chi 88H
Chỉ có TCON được địa chỉ hóa từng bit
g Các thanh ghi port nối tiếp:
§051/8031 chức một port nối tiếp trên chip dành cho việc trao đồi thông tin với các thiết
bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nói tiếp (có bộ chuyên đồi A/D, các thanh ghi dịch ) Một thanh ghi gọi là bộ đệm dữ liệu nối
tiếp (SBUF) ở địa chỉ 99H ssẽ giữ cả hai giữ liệu truyền và nhận Khi truyền dữ liệu thì ghi
lên SBUE khi nhận dữ liệu thì đọc SBUF Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nói tiếp (SCON) (được địa chỉ hóa từng bit) ở địa chỉ 98H
h Các thanh ghi ngắt:
8051/8031 có cầu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cắm sau khi reset hệ thông và sẽ được cho phép băng việc ghi thanh ghi cho phép ngat (IE) 6 dia chi 8AH Ca hai thanh ghi được địa chỉ hóa từng bit
i Cac thanh ghi điều khiến công suất:
Thanh ghỉ điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển Chúng
được tóm tat trong bang sau:
Trang 15
SMOD Bit gap đôi tốc độ baud, nêu được set thì tốc độ baud sẽ
tăng gâp đôi trong các mode 1,2 và 3 của port nôi tiệp Không định nghĩa
2 GFO Giảm công suât, được set đê kích hoạt mode giảm công
1 PD suat, chi thé khi reset
Mode chờ, set để kích hoạt mode chờ, chỉ thốt khi có ngắt
0 IDL hoặc reset hệ thông
Bảng :Thanh ghi điều khiến công suất (PCON)
4 Lệnh reset
8051/8031 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kỳ máy
và trả nó về múc thâp RST có thê được kích khi câp điện dùng một mạch R-C
^
R1 10k
Trang 16Bảng Trạng thái các thanh ghi sau khi reset
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó được đặt
lại 0000H Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở địa chỉ đầu
tiên trong bộ nhớ trong chương trình: địa chỉ 0000H Nội dung của RAM trên chip không
bị thay đôi bởi lệnh reset
5 Hoạt động của bộ định thời (timer)
a Giới thiệu
Một định nghĩa đơn giản của timer là một chuỗi các flip-flop chia đôi tần số nói tiếp
với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp Ngõ ra của tần số cuối làm nguồn xung nhip cho flip-flop bao tran của timer (flip-flop cờ) Giá trị nhị phân trong các flip-flop ctia timer có thể xem như số đếm số xung nhịp (hoặc các sự kiện) từ khi khởi động timer
Vi du timer 16 bit sẽ đếm lên từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn từ
FFFFH đến 0000H 8051/8031 có 2 timer 16 bit, mỗi timer có bón cách làm việc Người ta
sử dụng các timer đề : a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud cho port nồi tiếp trong 8051/8031
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở một khoảng đều
đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình đề thực hiện một tác động như kiểm tra trạng thái của các cửa ngõ vào hoặc gửi các sự kiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer đề đo thời gian trôi qua giữa hai sự kiện (ví dụ : đo độ rộng xung)
Đếm sự kiện dùng để xác định số lần xây ra của một sự kiện Một “sự kiện” là bất cứ
Trang 17tác động ngồi nào có thể cung cấp một chuyền trạng thái trên một chân của 8051/8031 Các timer cũng có thê cung câp xung nhịp tôc độ baud cho port nôi tiệp trong 8051/8031.Truy xuất timer của 8051/8031 dùng 6 thanh hi chức năng đặc biệt cho trong bảng sau:
SFR |MỤCĐÍCH ĐỊACHỈ | Địchỉhúatingbit
TCON | Điểukhiểntimer 88H Có
TMOD | Ché dé timer 89H Không
TLO | Bytethép cua timer |§AH Không
TLI | Byte thap ciia timer 1 |§BH Không
THO —_| Byte cao cua timer 0 8CH Khong
THI Byte cao cua timer | 8DH Khong
Bảng : Thanh ghi chức năng đặc biệt dùng timer
b Thanh ghi chế độ timer (TMOD)
Thanh ghi TMOD chứa hai nhóm 4 bit dùng đề đặt chế độ lam viéc cho timer 0 va timer 1
W GATE 1 Bịt (Mở) công, khi lên 1 timer chỉ chạy khi INT] 6 mite cao
6 C/T 1 Bit chon ché độ counter/timer
1=bộ đếm sự kiện
0Ebộ định khoảng thời gian
4 M0 l Bit 0 của chế độ
00: chê độ 0 : timer 13 bit
Ol: chế độ I : timer 16 bit 10: chế độ 2 : tự động nạp lại 8255A bit
11: chê độ 3 : tách timer
2 CT 0 Bit chon counter/timer
Trang 18c Thanh ghi điều khiến timer (TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 va timer 1
Bit Ky hieu Dia chi Mo ta
TCON.7 TF] §FH Cổ bảo trần timer 1 Dat bởi phân cứng khi tràn, được xóa bởi
phân mêm hoặc phân cứng khi bộ xử lý chí đền chương trình phục vy ngất
TCON.6 TRI 8EH Bit điều khiển tỉmer 1 chạy Đặxóabằng phân mẻm cho timer
chay/ngung
TCON.§ TFO 8DH Co bao tran timer 0
TCON4 TRO 8CH Bit điều khiển timer 0 chạy
TCON.3 IE] §BH Cờ cạnh ngắt 1 bên ngồi, đặc bởi
TCON.2 II §AH Cờ kiểu ngắt một bên ngôi phản cứng khi phát hiện một cạnh
xuống ở INTI, xóa bằng phân mém hoặc phân cứng khi CPU chỉ đến chương trình phục vụ ngắt.Đặt xóa bằng phản mẻm đẻ ngất ngồi tích cực cạnh xuống/mức thấp
TCON.1 IE0 §9H Cờ cạnh ngất ( bên ngôi
TCON.0 ITO 88H Cờ kiểu ngắt 0 bén ngôi
Bảng : Tóm tắt thanh ghi TCON
d Các chế độ timer
» Chế độ 0, chế độ timer 13 bit
Để tương thích với 8048 (có trước 8051)
Ba bít cao của TLX (TL0 và/hoăc TLI) không dùng
Hoạt động như timer 16 bit đầy đủ
Cờ báo tràn là bit TFx trong TCON có thẻ đọc hoặc ghi bằng phầm mềm
MSB cua gia trị trong các thanh ghi timer là bít 7 của THx và LBS là bit 0 của TLx
Trang 19Các thanh ghi timer (TIx/THx) có thể được đọc hoặc ghi bat cu lic nao bằng phầm mềm
§M) | WMj —>
Timer 1 ngung 6 chế độ 3, nhưng có thể được khởi động bằng cách chuyển sang chế
độ khác Giới hạn duy nhất là cờ báo tràn TF1 khong con bi tac dong khi timer | bi tran vi
nó đã được nói tới TH0
Khi timer 0 ở chế độ 3, có thé cho timer 1 chay va ngung bang cach chuyén nó ra ngồi và vào chế độ 3 Nó vẫn có thê được sử dụng bởi port nôi tiếp như bộ tạo tôc độ baund hoặc
nó có thể được sử dụng bằng bắt cứ cách nào không cần ngắt (vì nó không còn được nói
với T1)
Trang 20e.Nguồn tạo xung nhịp
Có hai nguồn tạo xung nhịp có thể có, đượ chọn bằng cách ghi vao bit C/T
(counter/timer) trong TMOD khi khởi động timer M6t nguon tao xung nhip ding cho dinh
khoảng thời gian, cái khác cho đêm sự kiện
CIT 0=Up (Internal Timing)
I=Down (Event Counting)
Nguồn xung tạo nhịp
- Dinh khoang thoi gian (interval timing)
Nếu C/T =0 hoạ t động timer liên tục được chọn và timer được dùng cho việc định khoảng thời gian Lúc đó, timer lấy xung nhịp từ bộ đao động trên chip Bộ chia 12 được thêm vào đề giảm tần số xung nhịp đến giá trị thích hợp cho phần lớn các ứng dụng Như vậy thạch anh 12 MHz sé cho tốc độ xung nhip timer 1 MHz Boa tràn timer xảy ra sau một
số (có địng) xung nhịp, phụ thuộc vào giá trị ban đầu được nạp vào các thanh ghi timer TLx/THx
-_ Đếm sự kiện (Event counting)
Trang 21- Nếu C/T=I, timer lay xung nhịp từ nguồn bên ngồi Trong hau hết các ứng dụng
nguồn bên ngồi này cung cấp cho timer một xung kh xảy ra một “sự kiện “, timer dùng đếm sự kiện được xác định bằng phần mềm bằng cách đọc các thanh ghi TLx/THx vì giá tri 16 bit trong các thanh ghi này tăng thêm 1 cho mỗi sự kiện
Nguồn xung nhịp ngồi có từ thay đổi chú7c năng của các chân port 3 Bit 4 của port 3 (P3.4) dùng làm ngõ vào tạo xung nhịp bên trong timer 0 và được gọi là “T0” Và p3.5 hay
®TI” là ngõ vào tạo xung nhịp cho timer Ì
f.Bắt đầu dừng và điều khiến các timer
Phương pháp mới đơn giản nhất đề bắt đầu (cho chạy) và dừng các timer là dùng các bít điêu khiên chạy zTRx trong TCON, TRx bị xóa sau khi reset hệ thông Như vay, cac timer theo mặc nhiên là bị câm (bị dừng) TRx được đặt lên I băng phan mém dé cho cac timer
cho chay va dimg timer
cho chạy và dừng timer
Vì TRx ở trong thanh ghi TCON có địa chỉ bịt, nên dé dang cho việc điều khién cac timer trong chương trình Ví dụ : cho timer 0 chạy băng lệnh : SETB TR0 và dừng băng lệnh
Trình biên dịch sẽ thực hiện việc chuyên đôi ký hiệu cân thiệt từ “TRO” sang dia chi bit đúng
SETB TRO chính xác giống như SETB 8CH
g.Khới động và truy xuất các thanh ghi timer
Thông thường các thanh ghi được khởi động một lần ở đầu chương trình để đặt chế độ
làm việc cho đúng Sau đó trong thân chương trình các timer được cho chạy, dừng , các bit
cờ được kiểm tra và xóa, các thanh ghi timer được đọc và cạp nhật theo đòi hỏi của các ứng dụng TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động Ví dụ
các lệnh sau khi khởi động timer I như timer 16 bít (chê độ 1) có xung nhịp từ bộ dao động
trên chíp cho việc địng khoảng thời gian
MOV TMOD,#00010000B
Trang 22Lệnh này sẽ đặt MI=0 vả M0=I cho chế độ 1, C/T=0 và GATE=0 cho xung nhịp nội
và xóa các bit chế độ timer 0 Dĩ nhiên timer thật sự không bắt đầu định thời cho đến khi
bit điều khiển chạyy TRI được đặt lên 1
Nếu cần số đếm ban đầu, các thanh ghi timer TLI/TH1 cũng phải được khởi động Nhớ lại
là các timer đếm lên và đặt cờ báo tràn khi có sự truyền tiếp
FFFFH sang 0000H
- Doc timer đang chạy
Trong một số ứng dụng cần đọc giá trị trong các thanh ghi timer đang chạy Vì phải đọc 2 thanh ghi timer “sai pha” có thể xây ra nếu byte thap tràn vào byte cao giữa hai lần đọc Giá trị có thê đọc được không đúng Giải pháp là đọc byte cao trước, kê đó đọc byte thấp rồi đọc byte cao lại một lần nữa Nếu byte cao đã thay đổi thì lập lại các hoạt động đọc
h Các khoảng ngắn và các khoảng dài
Dãy các khoảng thời gian có thê định thời là bao nhiêu ? vấn đề này được khảo sát với 8051/8031 hoạt động với tần số 12MHz như vậy xung nhịp của các timer có tần số lá I
MHz Khoảng thời gian ngắn nhất có thê có bị giới hạn không chỉ bởi tần số xung nhịp của
timer ma con béi phần mềm Do ảnh hưởng của thời khoảng thực hiện một lệnh Lệng ngắn
nhất 8051/8031 là một chu ky may hay Ips Sau đây là bảng tóm tắt các kỹ thuật dé tao
những khoảng thời gian có chiều dài khác nhau (với giả sử xung nhịp cho 8051/8031 có tần
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 chi 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
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 bịt 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 bít 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ố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 déi, timer 1 sẽ cung cấp xung nhịp tốc độ baud và phải được lập trình
Trang 23b 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
ni tiệp (SCON) 6 dia chi 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 :
SCON.7 SMO 9FH Bit 0 của chế độ port nói tiếp
SCON.6 SMI 9EH Bit 1 của chế độ port nối tiếp
SCON.5 SM2 9DH Bit 2 của chế độ 2 nói tiếp
cho phép truê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 phai dat lén 1 dé
thu (nhận) các ký tự
SCON.3 TBS 9BH Bit 8 phat, bit thir 9 được phát các
chế độ 2 và 3; được đặt và xóa
bằng phần mềm
SCON.2 RB§ 9AH Bit 8 thu, bit thir 9 thu duge
SCON.I TI 99H Cờ ngắt phát Đặt lên I khi kết thúc
phát ký tự; được xóa phần mềm SCON.0 RI 9§H Cờ ngắt thu Đặt lên I khi kết thúc thu
ký tự: được xóa bằng phần mềm
Bảng :Tóm tắt thanh ghi chế độ port nói tiếp SCON
Trước khi sử dụng port nói tiếp, phải khởi động SCON cho đúng chế độ Ví dụ ,lệ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 :
Trang 24» 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 TB§ 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ý)
s Thêm | bit parity:
Thuong str dung 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 I 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
5 Các cờ ngắt:
Hai cờ ngắt thu và phat (RI va TI) trong SCON dong m6t 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
d 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à I MHz
Trang 25
b Chế d6 1 và 3
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 l bit trong thanh ghi điều khiến nguôn cung cấp
(PCON) Bit 7 của PCON là bit SMOD Đặt bít 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 co thé bi gap đôi từ giá trị mặc nhiên của 1/64 tần số đao động (SMOD=0) đến 1/32 tần số dao động (SMOD=I)
Vì PCON không được định địa chỉ theo bit, nên dé dat bit SMOD lên 1 can phai theo các lệnh sau:
MOV A,PCON lay gia tri hién thoi của PCON
SETB ACC.7 dat 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 I
Vì timer hoạt động ở tần số tương đối cao, tràn timer được chia thêm cho 32 (hay l6 nếu SMOD=I) trước khi cung cấp xung nhịp tốc độ baud cho port nói tiếp