PHANI CƠ SỞ LÝ THUYẾT CHƯƠNG 1 CẢM BIẾN NHIỆT ĐỘ I KHAINIEM VỀ NHIỆT ĐỘ
Nhiệt độ là trạng thái cơ bản của vật chất, nó đặc trưng cho mức độ nóng lạnh
của vật chất Bản chất của nhiệt độ là do sự chuyển động của các phần tử gây
nên, chuyển động càng nhanh vật chất càng nóng, chuyển động của các phần
tử liên quan mật thiết đến nhiệt độ Do đó người ta gọi chuyển động giữa các phần tử là chuyển động nhiệt
Nhiệt độ luôn truyền từ nơi có nhiệt độ cao đến nơi có nhiệt độ thấp, có nhiều cách truyền nhiệt như : đối lưu, tiếp xúc hay bức xạ Tốc độ truyền nhiệt phụ
thuộc vào mức độ chênh lệch giữa nhiệt độ và hệ số truyền nhiệt Do tính chất
truyền nhiệt mà nguồn nhiệt luôn bị mất nhiệt ra môi trường xung quanh Il CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ
Để đo nhiệt độ, người ta thường dựa trên các nguyên lý sau :
Dựa trên sự giãn nở
Dựa trên đặc tính giãn nở của một số vật liệu theo sự thay đổi nhiệt độ mà người ta xác định được nhiệt độ dựa trên một mức chuẩn đã định trước Vật liệu thường dùng là Platin, thủy ngân, cổn, Tầm nhiệt đo giới bạn dưới
1000°C
Dựa trên sự thay đổi độ dẫn điện của vật liệu theo nhiệt độ
Dựa trên đặc tính này, ta tính được dòng điện tương ứng với một mức nhiệt độ
nào đó Nguyên lý này được ứng dụng dưới nhiều dạng :
“ Dạng thay đổi điện trở theo nhiệt : tầm đo (-200°C + -650°C)
= Dang ban dan : Tầm do -100°C + -1200°C
= Dang cap nhiét dién : tam do -270°C + -2500°C
Trang 2
Dựa trên sự bức xạ của vật liệu khi bị gia nhiệt
Các vật liệu khi bị gia nhiệt sẽ bức xạ, dựa trên đặc tính này ta đo độ bức xạ và tính ra nhiệt độ trên vật liệu Tầm nhiệt độ > 100°C
Để đo nhiệt độ có nhiều phương pháp
" Phương pháp đo trực tiếp bằng nhiệt kế thông thường
Chỉ đo ở tầm nhiệt độ thấp, dưới 1000°C Phương pháp này đơn giản, rẻ tiền, đọc trực tiếp giá trị nhiệt độ Tuy nhiên sai số lớn không thích hợp trong công nghệ cần sự chính xác cao
" Phương pháp đo bằng cảm biến điện tử
Dựa vào đặc tính dẫn điện khi nhiệt độ biến thiên của một số chất bán dẫn, người ta chế tạo các bộ cảm biến điện tử, nhiệt trổ của các bộ cảm biến này có
độ chính xác tương đối, giá thành rẻ Tuy nhiên, tầm nhiệt độ hoạt động cũng
không cao lắm, khoảng dưới 1000°C Tín hiệu thu được là tín hiệu dạng
Analog, rất nhỏ phải được khuếch đại và xử lý mới sử dụng được
Trong điện tử dùng vi mạch LM-335 để cam biến nhiệt độ LM 335 Khuếch đai Lấy giá trị điện áp để điều khiển, hiển thị
" Phương pháp đo bằng cặp nhiệt
Đây là phương pháp đo qua trung gian, giá trị điện có thể đo được ở tầm nhiệt độ cao từ 200°C + 2000°C Tin hiéu thu dugc cũng phải qua khâu xử lý đặc
biệt như khuếch đại, biến đổi A/D Phương pháp này có độ chính xác cao " Các phương pháp đo khác
Ngoài ra, người ta còn nhiều phương pháp đo đặc biệt để đo nhiệt độ ở những nơi có nhiệt độ quá cao hoặc nơi có tính chất đặc biệt : Đo qua tia hồng ngoại
Trong dé tai nay ta dùng phương pháp cảm biến điện tử (họ IC LM 335 ) để do
nhiệt độ
Các thang đo nhiệt độ
Để đo nhiệt độ, Người ta dùng nhiều thang đo tùy vào lĩnh vực ứng dụng và
quy định của từng quốc gia Có 4 dạng thang chia nhiệt độ hay dùng nhất là :
Thang chia Celcius (°C), thang chia Kelvin (°K), thang chia Fahrenhiet (F) và thang chia Réaumur (°R)
» Thang chia Celcius
Thang chia nhiệt độ này do Anders Celcius (1701 — 1744) đưa ra, nhiệt độ đông
Trang 3Khoảng thang chia nhiệt độ giữa hai điểm đó được chia thành 100 phần bằng nhau Nhiệt độ đông đặc của nước trong thang chia Celcius được lấy là 0°C
= Thang chia nhiét d6 tuyét đối Kelyin
Thang chia nhiét d6 tuyét d6i do William Thomson (Lord Kelvin) dwa ra c6 lién
hệ với Celcius bởi đẳng thức :
TK = TC + 273, 15
Độ không của thang chia tuyệt đối theo Kelvin: TK = 0 tương ứng với nhiệt độ = -273,15°C và được gọi là không tuyệt đối (°K) Đó là nhiệt độ tại đó
chuyển động nhiệt hổn loạn của các phân tử khí lý tưởng sẽ ngừng lại, tức là khí lý tưởng ở 0°K sẽ thành vật rắn
= Thang chia nhiệt độ Fahreinheit
Độ chia trong thang chia của Fahreinheit 14 0, 01 khoảng nhiệt độ giữa nhiệt độ
tan của hỗn hợp tuyết và Amoniclorua với nhiệt độ bình thường của cơ thể con
người
Theo thang chia này, nhiệt độ tan của băng (C) là 32”F và nhiệt độ sôi của nước ở áp suất bình thường (100°C) là 212”FE Khoảng nhiệt độ từ nhiệt độ tan
của tuyết đến nhiệt độ sôi của nước được xác định trong thang chia Fahreinheit la 180°F
= Thang chia nhiét d6 Réaumur
Nhiệt độ chia trong thang chia của Réaumur được lấy là nhiệt độ tan của tuyết hay băng như thang chia Celcius, nhưng độ chia được lấy bằng 1/80 khoảng
nhiệt độ giữa độ tan của tuyết và nhiệt độ sôi của nước ở áp suất bình thường Như vậy, khoảng từ nhiệt độ tan của tuyết đến nhiệt độ sôi của nước được xác định trong thang chia Réaumur là 80”R
Biểu thức chuyển đổi từ thang chia nhiệt độ này sang thang chia nhiệt độ khác có dạng Te TT -273,15 Th T.-32 5 5 4 9 i CAM BIEN NHIỆT ĐỘ
Tổng quan về cảm biến nhiệt độ
Cảm biến nhiệt độ là dụng cụ chuyển đổi đại lượng nhiệt thành các đại lượng
vật lý khác chẳng hạn như điện, áp suất, độ giãn nở dài, độ giãn nở khối, điện trở, Cảm biến nhiệt độ là phần tử không thể thiếu trong bất kỳ hệ thống đo lường điều khiển nhiệt độ nào Cảm biến nhiệt độ có khả năng nhận biết được
Trang 4
tín hiệu nhiệt độ một cách chính xác, trung thực và chuyển đổi thành tín hiệu có thể đo lường được như điện áp, dòng điện, điện trở, thể tích, áp suất,
Các thông số cảm biến nhiệt
- Thông số cấu tạo : được quyết định do nhà san xuất và phụ thuộc vào từng loại cảm biến
“ Thông số sử dụng : bao gồm các yếu tố sau
> Khoảng làm việc : là khoảng nhiệt độ mà cảm biến có khả năng khi chưa bị bão hòa Khoảng làm việc cao hay thấp là do tính chất cấu tạo và tính lý hóa của từng loại cảm biến qui định
> Độ nhạy: được định nghĩa
df
dx
df: sự thay đổi đại lượng đo của cảm biến dx : sự thay đổi đại lượng vật lý
> Ngưỡng độ nhạy: là mức thấp nhất mà cảm biến có thể phát hiện
được
> Tính trễ : còn gọi là quán tính của cảm biến Tính trễ của cảm biến tạo ra sai số của phép đo Tốc độ thay đối của đại lượng đo phải phù hợp với tính trễ của cảm biến Nếu đại lượng đo thay đổi quá nhanh
mà quán tính của cảm biến lớn thì không thể đo chính xác được Mọi
cảm biến đều có tính trễ do ảnh hưởng của vỏ bảo vệ Các loại cảm biến thông dụng
" Cặp nhiệt điện
Cặp nhiệt điện là dụng cụ đo nhiệt độ thường được sử dụng rộng rãi trong công nghiệp Cơ sở chế tạo cặp nhiệt điện dựa trên các nguyên lý sau :
> Hiệu ứng Thomson : qua một dây dẫn có dòng điện I và hiệu nhiệt trên dây là T1-T2 thì sẽ có một sự hấp thụ hay tỏa nhiệt
> Hiệu ứng Pentier : khi có dòng điện đi qua một mối nối của hai dây dẫn thì tại vị trí mối nối sẽ có sự hấp thụ hay tỏa nhiệt
> Hiệu ứng Seebeck: trong một dây dẫn bất kỳ, khi có sự chênh lệch nhiệt
độ tại một điểm thì ngay tại điểm đó sẽ xuất hiện một suất điện động > Định luật Macmut: trong một mạch điện kín của dây dẫn đồng nhất bất
kỳ, sự phân bố nhiệt độ ra sao, suất điện động tổng cộng của mạch luôn bằng không
Trang 5
Cấu tạo cặp nhiệt điện
Cặp nhiệt điện được chế tạo bằng hai sợi kim loại khác nhau và có ít nhất là hai mối nối Một đầu được giữ ở nhiệt độ chuẩn gọi là đầu ra, đầu còn lại tiếp xúc với đối tượng đo
Cặp nhiệt điện có cực dương và cực âm, cực dương thường đánh dấu mau dé E(mV) É: ChromeÍ/cons†anan — {: SAt/constantan T: Déng/constantan K: Chromel/Alumel R: Platin-RodiUl3%)/Platin S: Platin-RodidO%)/Platin 70 60 50 40 30 20 10 | | | | 200 600 1000 1400 1800 T CC) E
Tùy theo vật liệu chế tạo, cặp nhiệt điện được phân thành các loại sau:
Vật liệu cấu tạo
Về nguyên tắc, khi đốt nóng mối hàn của hai kim loại bất kỳ đều phát sinh một suất điện động nhiệt Nhưng không phải tất cả các kim loại và hợp kim nào cũng đều dùng làm cặp nhiệt được Vật liệu làm cặp nhiệt điện đòi hỏi một số yêu cầu sau :
> D6 tinh khiết cao > Tinh chong ăn mòn tốt
> Độ nóng chảy cao hơn nhiệt môi trường cần đo
> Một số tính chất chủ yếu như :dẫn điện, dẫn nhiệt tốt > Tinh lặp lại trong khoảng một thời gian dài
Ngoài ra độ chính xác của cặp nhiệt điện còn phụ thuộc vào độ chính xác chế
tạo và lý tính của môi trường đo Cách sử dụng
Để cặp nhiệt điện có thể làm việc tốt và lâu bền , khi sử dụng cần lưu ý:
> Cặp nhiệt điện cần có vỏ bảo vệ để chống tác động xâm thực của môi
trường, yêu cầu đối với vỏ bọc là cách điện nhưng không cách nhiệt
Trang 6
> Phải đặt cặp nhiệt ở nơi thích hợp vì thường là nhiệt không phân bố đều > Vị trí lắp đặt phải tránh chỗ có từ trường, điện trường mạnh
> Dé cap nhiệt thẳng đứng, để phòng ống bảo vệ bị biến dạng do nhiệt cao > Nên lắp đặt dây bù vào ống sắt nối đất để tránh nhiễu
: Nhiệt kế điện trở
Nguyên lý làm việc của nhiệt kế là dựa vào sự thay đổi điện trở theo nhiệt độ của các vật liệu dẫn điện
" Nhiệt điện trở kim loại Cấu tạo Vật liệu cấu tạo điện trở kim loại đòi hồi các yêu cầu sau: > Hệ số nhiệt lớn > Điện trở suất lớn > Tính ổn định lý hóa tốt > Tính thuần khiết Độ nhạy Độ nhạy SŠ của nhiệt điện trở kim loại có dạng sau: S=AR/ =axR œ : là hệ số nhiệt điện trở R : là điện trở ở 0C Hệ số nhiệt điện trở Hệ số nhiệt điện trở của kim loại sẽ tính như sau a= ARP or Hệ số nhiệt œ phụ thuộc vào tính đồng nhất của kim loại Nhiệt điện trở bán dẫn
Thay đổi nhiệt độ được chế tạo bằng chất bán dẫn thường gọi là Thermistor Thành phần chính của Thermistor là bột của các oxyt kim loại như Máy nghiền bi,Fe,Ni ,hoặc các hỗn hợp tinh chế như MgAlzO¿,Zn;TiO¿
Phân loại
Nhiệt điện trở bán dẫn được chia thành hai loại :
Nhiệt điện trở Pct :là loại nhiệt điện trở có hệ số nhiệt dương, nghĩa là nhiệt
độ tăng thì R giảm
Nhiệt điện trở Nct: thành phần chính là bột kim loại như: MnAlzO¿ và Zn;TiO¿
Độ tin cậy của nhiệt điện trở bán dẫn phụ thuộc vào độ tinh khiết của vật liệu
Trang 7Hệ số thu nhiệt độ
Thermistor sẽ bị đốt nóng khi nhiệt độ môi trường xung quanh tăng từ nhiệt độ T0 đến T, như vậy là nhiệt điện trở đã tiêu thụ được một công suất theo công
thức như sau:
W= C(T-To)
C : là hệ số thu nhiệt của điện trở, là năng lượng cần thiết để làm tăng nhiệt độ
của Thermistor lên 1”C so với nhiệt độ xung quanh, có đơn vị là wm/“C
Cách sử dụng
Khi sử dụng nhiệt kế không nên dùng nhiệt điện trở ở nhiệt độ quá cao hay quá thấp làm cơ cấu tinh thể kim loại thay đổi, cũng không nên để nơi quá ẩm sẽ
tạo điều kiện cho điện trở rỉ, không kiểm sốt được Khơng nên đặt điện trở
kim loại nơi có chấn động rung hay va đập Các ưu điểm
Có độ chính xác cao, có thể kết nối với máy tính IC cảm biến nhiệt độ
Đây là mạch tích hợp nhận tín hiệu nhiệt độ chuyển đổi thành điện, cho phép
đo được ở dạng biến áp hay dòng
Trang 8CHUONG 2
SU DUNG PORT NOI TIEP
I TRUYEN THONG NOI TIEP
Ta có thể thực hiện truyền đữ liệu giữa máy tính và vi xử lý theo nhiều chuẩn
khác nhau Vì trong luận văn này sử dụng đến việc thu phát dữ liệu theo kiểu
nối tiếp nên cần phải khái quát vài nét về các chuẩn truyền thông
Truyền thông nối tiếp là việc thu phát dữ liệu ở dạng chuỗi các xung điện — gọi
là các bit Hiệp hội điện tử công nghiệp (EIA) đưa ra các chuẩn truyền thông khác nhau nhu : RS 232-C, RS-422, RS-423, RS-485, RS-449, Ky hiéu RS là
viết tắt của Recommended Standard, nghĩa là tiêu chuẩn khuyến cáo
Việc truyền dữ liệu nối tiếp theo chuẩn RS-232 có ưu điểm hơn truyền song
song: Mức điện áp hoạt động là +12V và —12V, khoảng cách truyền xa hơn, it
nhiễu hơn
Việc trao đổi dữ liệu diễn ra trên hai đường dẫn TxD và RxD, 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 nằm trong khoảng —12V đến +12V, các bit dữ liệu được đảo ngược lại Mức cao nằm giữa -3V và —
12V, mức thấp nằm giữa +3V và +12V Ở trạng thái tĩnh, trên đường dây có
điện áp là —12V
Một chuỗi đữ liệu truyền đi được bắt đầu bằng một bít khởi đầu, tiếp theo đó là các bit dữ liệu, bit thấp nhất đi trước Số bit dữ liệu nằm trong khoảng 5 đến 8 bit, tiếp đó là bit kiểm tra chắn lẻ và cuối cùng là bit kết thúc (Stop bit) Tốc độ truyền được thiết lập bằng tham số Baud Rate, là số bit truyền đi trong 1 giây,
thông thường là 300, 600, 1200, 2400, 4800, 9600 và 19200
Việc thiết lập các thông số truyền nối tiếp được thực hiện bằng cách thay đổi các giá trị trong các thanh ghi phục vụ truyền nối tiếp
Bản đồ thanh ghi nội của bộ thu phát nối tiếp UART-8250 (không đồng bộ) Register Name Code | COM |COM |COM |COM | Function 1 2 3 4 Transmitter | Holding | THR | 3F8H | 2F8H | 3E8H | 2E8H | OUTPU Register T
Receiver Data Register |RDR | 3F8H | 2F8H | 3E8H | 2E8H | INPUT Baud Rate Divisor | BRDL | 3F8H | 2F8H | 3E8H | 2E8H | OUTPU
Trang 9
(LSB) T Baud Rate Divisor | BRDH | 3F9H | 2F9H | 3E9H | 2E9H | OUTPU (MSB) T Interrupt Enable | IER 3F9H | 2F9H | 3E9H | 2E9H | OUTPU Register T
Interrupt ID Register IID 3FAH | 2FAH | 3EAH | 2EAH | INPUT Line Control Register | LCR 3FBH | 2FBH | 3EBH | 2EBH | OUTPU
T
Modem Control | MDC | 3FCH | 2FCH | 3ECH | 2ECH | OUTPU
Register T
Line Status Register LSR 3FDH | 2FDH | 3EDH | 2EDH | INPUT Modem Status Register | MSR_ | 3FEH | 2FEH | 3EEH | 2EEH | INPUT
Thanh ghi điều khiển đường truyền (Line Control Register)
Bit cao của thanh ghi này gọi là bit chốt, truy xuất hệ số chia Nếu bit này được đặt lên 1 thì giá trị ở thanh ghi cơ sở được truy xuất làm byte thấp của thanh ghi hệ số chia chọn tốc độ truyền, và giá trị ở thanh ghi cơ sở +1 sẽ được truy xuất làm byte cao của thanh ghi hệ số chia chọn tốc độ truyền Nếu bit này được xóa
về 0 thì thanh ghi cơ sở sẽ thành thanh ghi đệm thu phát Bit 761514 21110
Bit Nội dung
Bit O Bit 1 | 00: 5 bit data ; O1 : 6 bit data 10: 7 bit data ; 11: 8 bit data Bit 2 0: 1 bit stop
1: 1,5 hay 2 bit stop
Bit 3 0 : không kiém tra parity 1 : kiểm tra parity
Bit 4 1 : kiém tra parity chan 0 : kiểm tra parity lẻ
Trang 10Thanh ghi diéu khién MODEM (Modem Control Register)
Thanh ghi diéu khién MODEM ding để đặt giao thức bắt tay khi truyền thông sử dụng MODEM Bit 7|6|15|14|13412|1110
Bit Nội dung
Bit 0 Data Terminal Ready
1 : DTR Active; 0: DTR Inactive Bit 1 Request to Send;
1: RTS Active; 0: RTS Inactive Bit 2 Output 1 (spare signal)
1: OUT 1: Active; 0: OUT 1 Inactive Bit 3 Output 2 (Interrupt Enable Signal)
1 : Communication Interrupt Active 0 : Communication Interrupt Inactive Bit 4 Loopback Feature
1 : Transmitter output looped back to receiver register Q : Normal Operation Bit 5,6,7 | 0,0,0
Thanh ghi trạng thái đường truyền (Line Status Register)
Báo cho máy tính biết thông tin, trạng thái của đữ liệu truyền đi Bit: !7|6|51413|121110
Bit Nội dung
BitO | 1: C6 d@& liệu trong bộ đệm nhận Bit 1 | 1: Overrun Error
Bit 2 | 1: Parity Error Bit3 | 1: Framing Error
Bit4 | 1: Béo ngắt (đường truyền trống ) Bit5 |1: Thanh phi phát trống
Trang 11Chuẩn RS-232
Chuẩn RS-232 lần đầu tiên được giới thiệu vào năm 1962 do hiệp hội kỹ thuật điện tử EIA (Electronics Industries Association) như là chuẩn giao tiếp truyền thông giữa máy tính và một thiết bị ngoại vi (modem, máy vẽ, mouse, máy tính khác, )
Giao tiếp RS-232 là giao diện phổ biến rộng rãi nhất Người dùng máy tính PC còn gọi cổng này là COM 1, còn COM 2 để tự do cho các ứng dụng khác Giống như cổng máy in, cổng nối tiếp RS-232 được sử dụng một cách rất thuận tiện cho mục đích đo lường và điều khiển
Việc truyền dữ liệu qua RS-232 được tiến hành theo cách nối tiếp, nghĩa là các bit dữ liệu được gửi đi nối tiếp nhau trên một đường truyền dẫn Trước hết, loại truyền này có thể dùng cho những khoảng cách lớn hơn, bởi vì các khả năng gây nhiễu nhỏ đáng kể hơn là dùng cổng song song Việc dùng cổng song song có một nhược điểm đáng kể là cáp truyền dùng quá nhiều sợi, và vì vậy rất đắt tiền Hơn nữa tín hiệu nằm trong khoảng 0 - 5V tổ ra không thích ứng với khoảng cách lớn Cổng nối tiếp RS-232 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 nối điểm giữa hai máy cần trao đổi thông tin với nhau, một thành phần thứ ba không thể tham gia vào cuộc trao đổi thông tin này
I2 ezssssJe)
Cổng COM 25 chân Cổng COM 9 chân Bảng sắp xếp chân của cổng nối tiếp ở máy tính
9 chân | 25 chân Chức năng
1 8 DCD _ Data Carrier Detect (Lối vào)
2 3 RxD _ Receive Data (Lối vào)
3 2 TxD _ Transmit Data (Lối ra)
4 20 DTR _ Data Terminal Ready (Lối ra)
5 7 GND _ Ground (Nối đất)
6 6 DSR _ Data Set Ready (Lối vào)
7 4 RTS _ Request to Send (Lối ra)
8 5 CTS _ Clear to Send (Lối vào)
0 22 RI _ Ring Indicator (Lối ra)
Chương 2 : Sử Dụng Port Nối Tiếp
Trang 12
Việc truyền đữ 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 lại được dẫn đến chân RxD Các tín hiệu khác đóng vai trò như là
tín hiệu hỗ trợ khi trao đổi thông tin và vì vậy không phải trong mọi ứng dụng đều dùng đến Các bít dữ liệu được gởi đi theo kiểu đảo ngược, nghĩa là các bit có giá trị “1” sẽ có mức điện áp LOW, các bít có giá trị “0” sẽ có mức điện áp
HIGH Mức tín hiệu nhận và truyền qua chân RxD và TxD thông thường nằm
trong khoảng —-12V đến +12V Mức điện áp đối với mức LOW nằm giữa +3V
đến +12V, mức HIGH là —-3V đến —12V
Ở trạng thái tĩnh, trên đường dây vẫn có điện áp -12V Một bit khởi động
(Start bit) sé mé dau việc truyền dữ liệu Tiếp sau đó là các bit riêng lẻ đến, trong đó các bit có trọng số thấp được gửi trước tiên Con số của các bit đữ liệu thay đổi giữa 5 và 8 Ở cuối dòng dữ liệu còn có một bit dừng (Stop bit) để đặt lại trạng thái lối ra (-12V)
Tốc độ Baud có giá trị thông thường là : 300; 600; 1200; 4800; 9600; 19200 Baud Ký hiệu Baud tương ứng với số bit truyền trong 1 giây ( bit per second _ bps) Chang han như khi tốc độ Baud bằng 9600 có nghĩa là có 9600 bit dữ liệu
được truyền trong 1 giây Vì mỗi byte dữ liệu có một bit bắt đầu và một bit
được dùng gởi kèm theo, do đó khi truyền một byte dữ liệu đã có 10 bit được
gửi đi Với tốc độ Baud thông thường, mỗi giây cho phép truyền nhiều nhất từ 30 đến 1920 byte dữ liệu, vì vậy nhược điểm lớn nhất của cổng truyền nối tiếp là tốc độ truyền dữ liệu bị hạn chế
So sánh giữa TTL và RS-232, ta thấy TTL sử dụng mức Logic dương và 0,4V
chống nhiễu Trong khi đó, RS-232 sử dụng mức điện áp 12V để đảm bảo truyền được trên đường dây dài Với khoảng chống nhiễu 12V cho phép tín
hiệu đi qua môi trường nhiễu mạnh mà đối với TTL không thể có được
Một trong những yêu cầu quan trọng của RS-232 là thời gian chuyển từ một mức logic này tới một mức logic khác không vượt quá 4% thời gian một bít Vì
thế ở tốc độ 19200 Baud, thời gian mức logic phải nhỏ hơn 0,04/19200s Vấn dé này làm giới hạn chiều dài đường truyền Với tốc độ truyền 19200 Baud, ta có thể truyền xa nhất là 50 feet (15,24 m)
Một trong những vấn đề quan trọng cần chú ý khi sử dụng RS-232 là mạch thu phát không cân bằng (đơn cực) Điều này có ý nghĩa là tín hiệu vào/ra được so
Trang 13tăng dần đến áp rơi trên đất, sẽ lớn dần đến lúc tín hiệu logic rơi vào vùng
không xác định và mạch thu sẽ không nhận đúng đữ liệu được truyền từ mạch phát Chính sự không cân bằng trên mạch thu phát là một trong những nguyên
nhân giới hạn đường truyền
Do trong luận văn này không sử dụng các chuẩn giao tiếp khác, được giới thiệu
trên, nên không giới thiệu chỉ tiết
I MỞ RONG PORT DUNG 8255
Cấu trúc phần cứng
8255A là IC ngoại vi được chế tạo theo công nghệ LSI dùng để giao tiếp song song giữa Microprocessor và thiết bị điều khiến bên ngoài 8255A PIN OUTS (PDIP) TOP VIEW PA3 L1 YS a0] PA4 PA2 Ï2 3d PAS PA Ïa| [ad PAG
pao l a PAT (com RD\[5 ad WR\ D0-D7 CS\Js] gq RESET GNDIZ 3d DO ni Hi A0 Ís 83 D2 » Pcrm 8255A bịpa RD PC6fi 5đ D4 ———— WR\ PC4 fg 2d D6 Pcof4 27] D7 ——— A0 mi mộ pc1 ls 24 VCC S PC2fiä b] PB7 b PC3 f rapce |= CSN PB0 fig PIPCH5 PB1 fg PAPC Pp2 lad 2]PC3
Sơ đồ chân và sơ đồ logic của 8255
Tên các chân của §255A
" D,+D,: Data Bus (Bi-— Direction ) =" RESET: Reset, Input
Trang 14
» /CS :Chip Select, Input » /RD: Read, Input =» /WR: Write, Input =» AoA, : Port Address » PA7+PAO: PortA =» PB7~+PBO: Port B =» PC7+PCO: Port C
8255A giao tiếp với Microprocessor thông qua 3 bus : bus đữ liệu, bit D; + Dạ,
bus địa chỉ A:Aa, bus điều khién /RD, /WR, /CS, Reset
Mã lệnh, thông tin trạng thái và dữ liệu đều được truyền trên 8 đường dữ liệu
D; + Dạ Microprocessor gởi dữ liệu đến 8255A hoặc Microprocessor đọc dữ liệu từ 8255A tùy thuộc vào lệnh điều khiển Các đường tín hiệu /RD, /WR của
8255A được kết nối với các đường /RD, /WR của Microprocessor
Tín hiệu Reset dùng để khởi động 8255A khi cấp điện, khi bị Reset các thanh ghi bên trong của 8255A đều bị xóa và 8255A ở trạng thái sẵn sàng làm việc
Khi giao tiếp với Microprocessor, ngõ vào tín hiệu Reset này được kết nối với tín hiệu Reset Out của Microprocessor
Tín hiệu Chip Select /CS dùng để lựa chọn 8255A khi Microprocessor giao tiếp
với nhiều 8255A
8255A gồm 3 Port xuất/nhập (/O) có tên là Port A, Port B, Port C, mỗi Port
8255A gồm 8 bit Port A gồm PAạ - PA;, Port B gồm PBạ - PB;, Port C gồm các
bít PCo - PC¿ Các Port này có thể là các Port Input hay Output tùy thuộc vào
lệnh điều khiển, lệnh điều khiển do Microprocessor gởi đến chứa trong thanh
ghi lệnh (cồn gọi là thanh ghi điều khiển) để điều khiển 8255A
Các đường địa chỉ A¡Ao của 8255A dùng để lựa chọn các Port và thanh ghi AiAo= 00; dùng để chọn Port A, A¡Ao= 01; dùng để chọn Port B, A¡Ao=10; dùng để chọn Port C, A; Ap=11, ding dé chon thanh ghi điều khiển
Trang 15NHOMA NHOM B D7 D6 | D5 D4 D3 D2 DI DO
MODE MODE Port A Port C MODE Port B Port C SELECTION SELECTION 1 ‘INPUT (HIGH) 1: IN PUT (LOW)
-OUTPUT| g.QUTPUT 1:MODE 1 0:OUTPUT 01:MODE 1 0:MODE 0 1X:MODE 2 Cấu trúc từ điều khiển của 8255A Cấu trúc phần mềm của 8255
Do các Port ra của 8255A được chia ra làm 2 nhóm: nhóm A và nhóm B tách
rời nên từ điều khiển của 8255A cũng được chia làm 2 nhóm Các bit D;D¡Dạ dùng để định cấu hình cho nhóm B:
“ Bit Dạ dùng để thiết lập 4 bit thấp của Port C > Do=0: Port C xuat di liéu (Output),
> Do=1: Port C 1a Port nhap di liéu (Input)
= Bit D, ding dé thiét lap Port B
> D,=0: Port B 1a Port xuat di liéu (Output)
> D,=1:Port B 1a Port nhap di liéu (Input)
“ Bi( D; dùng để thiết lập Mode điều khiển của nhóm B:
> D;=0: nhóm B hoạt động ở Mode 0 > D;= 1: nhóm B hoạt động ở Mode 1
Các bit DạDzD„Dạ dùng để định cấu hình cho nhóm A: = Bit D; ding để thiết lập 4 bit cao của Port C
> D;=0:PortC là Port xuất dữ liệu (Output)
> D3=1:Port C là Port nhập dữ liệu (Input)
= Bit D, ding dé thiét lap Port A,
> D,=0:Port A 1a Port xuất đữ liệu (Output)
> D,=1:Port A 1a Port nhap dif liéu (Input)
Trang 16Giao tiếp giữa máy tính với 8255A
Vi mạch 8255A có thể giao tiếp với vi xử lý theo hai kiểu: kiểu xuấư/nhập (VO)
và kiểu bộ nhớ
Khi vi xử lý giao tiếp với 8255A theo kiểu I/O thi no chi ding 8 du@ng địa chỉ từ Ao đến A; dé giao tiếp, còn khi giao tiếp theo kiểu bộ nhớ thì nó dùng 16 đường A; đến A¡; để giao tiếp, vì vậy dung lượng giao tiếp theo kiểu L/O thấp hơn dung lượng giao tiếp theo kiểu bộ nhớ
Khi kết nối giữa vi xử ly va vi mach 8255A thi 2 đường dia chi Ap va A; ding để lựa chon các cổng và thanh ghi điều khiển, còn các đường A;-A; dùng để
lựa chọn vi mạch hoạt động, thông thường các đường địa chỉ này được đưa vào
vi mạch giải mã rồi các ngõ ra của vi mạch giải mã sẽ đưa đến chân /CS của
các vi mạch 8255A
Ví dụ: thiết kế 2 vi mạch 8255A giao tiếp với vi xử lý theo kiéu I/O Ta có
bảng địa chỉ các vi mạch 8255A như sau: IC A7 | Ag | As} Aq | Az | Ap | Ay | Ag | HEX 52551 0 0/010 L010L010 00 0 01010101011 ] 03 $255II 0 01010 0 1 0 0 04 0 01010 0 1 1 1 07
82551 chiếm 1 vùng địa chỉ từ 00; dén 03y , dia chi cia Port A= 00y, Port B=
Oly ,Port C= 02, va địa chỉ của thanh ghi điều khiển = 03H
825511 chiếm một vùng địa chỉ từ 04H đến 07H, địa chỉ của Port A= 04H, Port B= 05H, Port C= 06H va địa chỉ của thanh ghi điều khiển= 07H
Giao tiếp kiểu bộ nhớ
Khi thiết kế giao tiếp 8255A với vi xử lý theo kiểu bộ nhớ, chức năng của 8255A không có gì thay đổi, chỉ thay đổi về địa chỉ truy xuất Kiểu UO: địa chỉ của Port hay thanh ghi có độ dài 8 bit Kiểu bộ nhớ: địa chỉ của Port hay thanh
ghi sẽ có độ dài 16 bit giống như bộ nhớ nên gọi là kiểu bộ nhớ
Khi thiết kế kiểu LO theo kiểu bộ nhớ thì mỗi Port hay thanh ghi điều khiển của 8255A được xem là từng ô nhớ Khi đó, vi xử lý giao tiếp với 8255A giống
như giao tiếp với bộ nhớ và 2 lệnh IN, OUT không còn tác dụng Kiểu bộ nhớ
Trang 17Giao tiếp kiểu LO
Khi thiết kế vi xử lý giao tiếp với 8255A theo kiểu UO thì việc giao tiếp thông
qua hai lénh: In addr — Port va Out addr — Port Dữ liệu giao tiếp luôn chứa trong thanh ghi A, địa chi Port (Addr Port) có độ dài 8 bit
Cũng giống như bộ nhớ, Vi xử lý có thể giao tiếp với nhiều vi mạch 8255A
Với 8 bít địa chỉ, nếu xem mỗi một địa chỉ truy xuất một ô nhớ thì vi xử lý có khả năng truy xuất 255 ô nhớ (với 256 địa chỉ) Mỗi vi mạch 8255A chiếm 4 địa chỉ, 3 Port và 1 thanh ghi điều khiển, nên số lượng vi mạch 8255A có thể giao tiếp với vi xử lý là < a of % B Q1 ———— < +BV c oe Đưa đến ngố vào C§\ cửa các 8255A 4 —— i |„ S— E1 Ó8 F———— ®— E2 O7 — = —— © = “a Oo Q © a © A1-A0 -= 5 SZ SF s —cs\ —cs\ — cs\ 8255A 1 8255A 2 8255A 8 WR\ WR\ WR\ RD\ RD\ RD\ tet CONTROL BUS Giao tiép IC8255A véi Microprocessor Ứng dụng của 8255A
IC giao tiép I/O 8255A có rất nhiều ứng dụng trong các hệ thống điều khiến
dùng MicroProcessor, 8255A đóng vai trò là IC giao tiếp giữa MicroProcessor
và đối tượng điều khiển
Các ứng dụng của 8255A là truyền dữ liệu, giải mã hiển thị, giải mã bàn phím, giao tiếp điều khiển tùy theo yêu cầu
Trang 18
CHUONG 3
GIGI THIEU HO VI DIEU KHIEN 8051
I GIGI THIEU KHAI QUAT VE HO IC MCS-51™
MCS-51M là một họ IC vi điều khiển do Intel phát triển và sản xuất Một số nha san xuất được phép cung cấp các IC tương thích với các sản phẩm MCS-
51™ cua Intel là Siemens, Advanced Micro Devices, Fujitsu, Philips, Atmel Các IC của họ MCS-51"M có các đặc trưng như sau:
"_ 4PortLO 8bit
=m Giao tiếp nối tiếp
= 64K không gian bộ nhớ chương trình mở rộng " 64K 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) m 210 bit được địa chỉ hóa
=" B6 nhan/chia 4 us
Ngoài ra, tùy theo s6 hiéu san xuất mà chúng có những khác biệt về bộ nhớ và bộ định thời/bộ đếm như trong bảng so sánh dưới đây
Số hiệu sản | Bộ nhớ chương | Bộ nhớ dữ liệu | Số bộ định thời
xuất trình trên chip trên chip (bộ đếm) 8031 0K 128 byte 2 8051 4K ROM 128 byte 2 8751 4K EPROM 128 byte 2 8951 4K FLASH 128 byte 2 8032 OK 256 byte 3 8052 8K ROM 256 byte 3 8752 8K EPROM 256 byte 3 8952 8K FLASH 256 byte 3 II GIỚI THIEU AT89C52
AT89C52 14 mét Microcomputer 8 bit, họ CMOS, có tốc độ cao và công suất thấp với bộ nhớ Flash có thể lập trình được Nó được sản xuất với công nghệ bộ
Trang 19sau ta sẽ dùng thuật ngữ “80C51” (hoặc "8051") Với sự kết nối linh hoạt 8 bit CPU với flash trên chip, AT89C52 của Atmel là một micro-computer tuyệt vời
với độ linh hoạt cao và giải quyết hiệu quả nhiều chương trình điều khiển ghi vào nó , PLO: POF PRO - P27 Woo mi | PORT ¢ DRIVERS | | PORT 2 DAIVERS | QaD l † ! = RAM ADDR REITER pị RAM PORT 4 LATCH ea FLASH 1 F ` 7 1 1 q 1 se PROGRAM ReqxTE acc POINTER ADDRESS id ` 4 BUFFER l4 TME2 TMPI
INTERRUPT, SERIAL PORT
AND THER BLOCK
F i ả PROGRAM
Pew COANTER
Trang 20" 256 x8 bIt RAM nội
“ 32 đường xuất-nhập lập trình được (tương ứng 4 Port)
=" Ba Timer/Counter 16 bit
= Mo6t cấu trúc ngắt 6-vector 2 mức
“ Một Port nối tiếp song công lập trình được dạng full = Mach déng hồ và bộ dao động trên chip
Cấu hình chân của A T§9C52 như sau
Như vậy AT89C52 có tất cả 40 chân Mỗi chân có chức năng như các đường
V/O (xuất/nhập), trong đó 24 chân có công dụng kép: mỗi đường có thể hoạt động như một đường I/O hoặc như một đường điều khiến hoặc như thành phần
của bus địa chỉ và bus đữ liệu (T2) P1.0 LỊ 1 ~ 40 H Vö6 (T2 EX) P1.1 L2 3e H E0.0 (A09) P1.2 FrỈ 3 3B H1 P0.1 (AD1] P13 4 37 H P0.2 (AD2) P1.4 L| 5 38 H P0.3 (AD3] P1.5O 6 35 H P0.4 (AD4) P!6EL7 34 7 Po.s (ADS) P47 O 8 33 1 PG.6 (AD6) HST LÍ] s3 32 — Pa.7 (AD7) (AXD) P3.0 C] 10 31 H EA/VPP (TXD) P3.1 FỊ 1! 30 ALE/PRöG (INTO) P3.2 C] 12 29 1 PSEN (NTI) P3.3 4 13 28 P237 (A15) (T0) P3.4 rỊ 14 27 H P26(A14) (T1) P3.5 L 15 26 H P25 (A13) (WR) P3.6 | 18 25 H P24 (A12) (AD) P3870 17 ?4 P2 3 (A11) XTAL2 | 1E 23 H P2.2 (A10) XTAL1 TỊ 19 22 H F21 jA®) GND CJ 20 21 2 P2.0 (A8) Mô tả chân " VCC (chân 40) Chân cấp nguồn " GND (chân 20) Chân nối đất " Port 0
Port 0 là một Port xuấtnhập song hướng cực máng hở 8 bit Nếu được sử dụng như là một ngõ xuất thì mỗi chân có thể kéo 8 ngõ vào TTL Khi mức 1 được
viết vào các chân của Port 0, các chân này có thể được dùng như là các ngõ
nhập tổng trổ cao
Port 0 có thể được định cấu hình để hợp kênh giữa bus địa chỉ và bus dữ liệu (phần byte thấp) khi truy cập đến bộ nhớ dữ liệu và bộ nhớ chương trình ngoài
Trang 21Port 0 cũng nhận các byte code (byte mã chương trình) khi lập trình Flash, va
xuất ra các byte code khi kiểm tra chương trình Cần có các điện trở pull-up
bên ngoài khi thực hiện việc kiểm tra chương trình " Port I
Port 1 là một Port xuất/nhập song hướng 8 bít có các điện trở pull-up bên trong Các bộ đệm ngõ ra của Port 1 có thể kéo hoặc cung cấp 4 ngõ nhap TTL Khi mức 1 được viết vào các chân của Port 1, chúng được kéo lên cao bởi các điện trở pull-up nội và có thể được dùng như là các ngõ nhập Nếu đóng vai trò là các ngõ nhập, các chân của Port 1 (được kéo xuống thấp qua các điện trở bên ngoài) sẽ cấp dong Iq, do cdc điện trở pull-up bên trong
" Port 2
Port 2 là một Port xuất/nhập song hướng 8 bit có các điện trở pull-up bên trong
Các bộ đệm ngõ ra của Port 2 có thể kéo hoặc cung cấp 4 ngõ vào TTL Khi các mức 1 được viết vào các chân của Port 2 thì chúng được kéo lên cao bởi
các điện trổ pull-up nội và có thể được dùng như các ngõ vào Khi được dùng như các ngõ vào, các chân của Port 2 (được kéo xuống qua các điện trở bên ngoài) sẽ cấp dòng Iạ, do có các điện trở kéo lên bên trong
Port 2 phát ra byte cao của địa chỉ khi đọc từ bộ nhớ chương trình ngoài và khi truy cập bộ nhớ dữ liệu ngoài dùng các địa chỉ 16 bit ( MOVX @DPTR ) Trong ứng dụng này, nó dùng các điện trở pull-up nội "mạnh" khi phát ra các mức 1 Khi truy cập bộ nhớ dữ liệu ngoài dùng các địa chỉ 8 bít ( MOVX @RI ), Port 2 phát ra các nội dung của thanh ghi chức năng đặc biệt
Port 2 cũng nhận các bit cao của địa chỉ và một vài tín hiệu điều khiển khi lập
trình và kiểm tra Flash
" Port 3
Port 3 là một Port xuất - nhập song hướng 8 bit có điện trở pull-up nội bên trong
Các bộ đệm ngõ ra của Port 3 có thể kéo hoặc cung cấp 4 ngõ vào TTL Khi các mức 1 được viết vào các chân của Port 3 thì chúng được kéo lên cao bởi các điện trở pull-up nội và có thể được dùng như các ngõ vào Khi được dùng
như các ngõ vào, các chân của Port 3 (được kéo xuống qua các điện trở bên
ngoài) sẽ cấp dòng Iạ, do có các điện trở pull-up bên trong
Port 3 cũng cung cấp các chức năng của các đặc trưng đặc biệt như được liệt kê dưới đây
Trang 22
Chân | Tén Các chức năng chuyển đổi P3.0 RxD Port nhập nối tiếp
P3.1 TxD Port xuất nối tiếp P3.2 INTO Ngắt 0 bên ngoài
P3.3 INT1 Ngắt 1 bên ngoài
P3.4 T0 Ngõ vào Timer/Counter 0
P3.5 Tl Ng6 vao Timer/Counter 1
P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài
Các chức năng chuyển đổi trên Port 3
" RST (chan 9)
Ngõ vào Reset Một mức cao trên chân này khoảng hai chu kỳ máy trong khi bộ dao động đang chạy sẽ Reset thiết bị
" ALE/PROG
ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy cập bộ nhớ
ngoài Chân này cũng là ngõ nhập xung lập trình (PROG ) khi lập trình Flash Khi hoạt động bình thường, ALE được phát với một tỷ lệ không đổi là 1/6 tần số bộ dao động và có thể được dùng cho các mục đích timing và clocking bên ngoài Tuy nhiên, lưu ý rằng một xung ALE sẽ bị bổ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài
Nếu muốn, hoạt động ALE có thể cấm được bằng cách set bit 0 của thanh ghi
SFR tại địa chỉ 8Eh Nếu bit này được set, ALE chỉ được hoạt động khi có một lệnh MOVX hoặc MOVC Ngược lại, chân này được kéo lên cao bởi các điện trở pull-up "nhẹ" Việc set bit cấm ALE không có tác dụng khi bộ vi điều khiển
đang ở chế độ thi hành ngoài
= PSEN
PSEN (Program Store Enable) 14 xung đọc bộ nhớ chương trình ngoài Khi
AT89C52 đang thi hành mã (code) từ bộ nhớ chương trình ngoài, PSEN được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động PSEN sẽ bị bỏ qua
Trang 23" EA/Ypp
EA (External Access Enable) phải được nối với GND để cho phép thiết bị đọc code từ bộ nhớ chương trình ngoài có địa chỉ từ 0000H đến FFFFH Tuy nhiên, lưu ý rằng nếu bit khoá 1 ( lock-bit 1) được lập trình, EA sẽ được chốt bên
trong khi Reset
EA phải được nối với Vcc khi thi hành chương trình bên trong Chân này cũng
nhận điện áp cho phép lập trình Vpp=12V khi lập trình Flash (khi đó áp lập trình 12V được chọn)
" XTALI và XTAL2
XTALI1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại dao động
nghịch được cấu hình để dùng như một bộ dao động trên chip
Các kết nối của bộ dao động
Không có yêu cầu nào về duty cycle của tín hiệu xung ngoài, vì ngõ nhập nối
với mạch tạo xung nội là một flip-flop chia đôi, nhưng các chỉ định về thời gian
High và Low, các mức áp tối đa và tối thiểu phải được tuân theo
Các đặc trưng khác sẽ được trình bầy một cách chi tiết hơn ở những phần tiếp
theo sau đây
Figure 7 Oscillator Connections Ca ]| + XTAL2 C1 ej XTAL1 MP GND
Notes: C1, C2 = 30 pF + 10 pF for Crystals
= 40 pF + 10 pF for Ceramic Resonators
Trang 24
II TỔ CHỨC BỘ NHỚ
8051/8031 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong, dù vậy chúng có thể được mở rộng bằng các thành phần ngoài
lên đến tối đa 64 Kbyte bộ nhớ chương trình và 64 Kbyte bộ nhớ đữ liệu
Bộ nhớ bên trong bao gồm ROM và RAM trên chip, RAM trên chip bao gồm nhiều phần : phần lưu trữ đa dung, phan lưu trữ địa chỉ hóa từng bit, các bank
thanh ghi và các thanh ghi chức năng đặc biệt
Hai đặc tính cần lưu ý là
" Các thanh ghi và các Port xuất/nhập đã được xếp trong bộ nhớ và có thể được truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác
" Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài như trong các bộ vi xử lý khác
Chỉ tiết về bộ nhớ RAM trên chip
Trang 25
THANH GHI CHUC NANG DAC
Dia chi bit E7 |F6 |E5|F4 |E3|F2 |E1 |E0 E7|E6|E5|E4|E3|E2|E1|E0 D |p [p |p [p |p |- Dp -|-|-—|B |B |B |B9|B8 B |B |B |B |B |B |B |B AF| -|-]a |A |A |A9|A8 A la la |A |A |A |A |A không được đia chỉ hóa bit 9E |oE|9p|øC |9b |9A |oo |o8 97 |9 |95 |o4 |o3 |o2|o1 |oo không đươc đĩa chỉ hóa bit không được địa chỉ hóa bit không được địa chỉ hóa bit không được địa chỉ hóa bit không được địa chỉ hóa bịt 8E |SE|sD|sC |sB |3A |s9 |s8 không được dia chi héa bit không được địa chỉ hóa bít không được địa chỉ hóa bít không được địa chỉ hóa bít 87 |86 |85 |84 |83 |82 |81 |80
Địa chỉ Dia chi
byte Dia chi bit byte TE FF FO E0 RAM đa dụng Do 30 B8 QE |7F|7E|7DI7C [7B |7A[79 |78 2E |77|76J75|74|73|72 |71|70 BO 2D |6FIGE/6D|[6C |6B |6A 169 168 2C |67|66 [65 |64 [63 |62 |61 [60 A8 2B |5F|5E|5DI5C |Š5B|5A |59 |58 2A_ |57|56 |55|54|53 |52 |51 |50 A0 29_ |4F|4E|4D |4C |4B |4A |49 |48 28 |47]46 |45 J44 |43 |42 |41 |40 99 27 |3FJ3E|3DIJ5C |J35B|5A |39 |38 98 26 |37136 135 |34|33 {32 |31 [30 25 |2F|2E|2D|2C |2B |2A 1/29 |28 90 24 = |27|26 |25 |24 |23 |22 |21 |20 23_ |1iF|1EliD|ic|1B|1A|19 |18 8D 22 |17|16|15|14|13|12|11l10 8C 21 |0E|loEl0D|0C |0B |0A |09 |08 8B 20 |07}06 [05 |04 {03 {02 |01 {00 8A 1F Bank 3 89 18 88 17 Bank 2 87 10 OF Bank 1 83 08 82 07 Bank 0 81 00 80 RAM Tóm tắt bộ nhớ dữ liệu trên chip RAM đa dụng ACC PSW IP P3 P2 SBUF SCON Pl TH1 THO TL1 TLO TMOD TCON PCON DPH DPL SP PO BIET
Mặc dù trên hình cho thấy 80 byte RAM đa dụng chiếm các địa chỉ từ 30H-
7FH, 32 byte dưới cùng từ 00H đến 1FH cũng có thể được dùng với mục đích tương tự (mặc dù các địa chỉ này đã có mục đích khác)
Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp Ví dụ, để đọc nội dung ở địa chỉ 5EH
Trang 26
cua RAM nội vào thanh ghi tích lũy, lệnh sau sé được dùng :
MOV A,5FH
Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định
“địa chỉ nguồn” (SEH) Đích nhận dữ liệu được ngầm xác định trong mã lệnh là thanh ghi tích lũy A
Vùng RAM đa mục đích còn có thể được truy xuất bằng kiểu định địa chỉ gián
tiếp thông qua các thanh ghi R0 và R1 Thí dụ, 2 lệnh sau thực hiện cùng một
công việc như ở thí dụ trên
MOV RO,#5FH MOV A,@RO
Lệnh đầu tiên sử dụng kiểu định địa chỉ tức thì, di chuyển giá trị 5FH vào thanh ghi RO Lệnh tiếp theo sử dụng kiểu định địa chỉ gián tiếp, di chuyển dữ liệu trỏ bởi RO vào thanh ghi A
RAM dia chỉ hóa tiing bit
8051/8031 chứa 210 bit được địa chỉ hóa, trong đó 128 bít là ở các địa chi byte
20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt
Ý tưởng truy xuất từng bít riêng rẻ bằng phần mềm là một đặc tính tiện lợi của
vi điều khiển nói chung Các bịt có thể được đặt, xóa, AND, OR, với một
lệnh đơn Đa số các vi xử lý đòi hỏi một chuỗi lệnh đọc-sửa-ghi để đạt được
hiệu quả tương tự Hơn nữa, các Port LO cũng được địa chỉ hóa từng bít làm
đơn giản phần mềm xuất nhập từng bít
Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉ này được truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng Vi
dụ, để đặt bit 67H bằng 1, ta dùng lệnh sau :
SETB 67H
Chú ý rằng “dia chi bit 67H” 1a bit có trọng số lớn nhất (MSB) ở “địa chi byte 2CH” Lệnh trên sẽ không tác động đến các bit khác ở địa chỉ này Các vi xử lý
sẽ phải thi hành nhiệm vụ tương tự như sau :
MOV A,2CH ; đọc ca byte
ORL A,#10000000B ; setMSB MOV 2CH,A ; ghi lai ca byte
Cac Bank thanh ghi
Trang 27thống) các thanh ghi này ở các địa chỉ 00H—07H Lệnh sau đây sé đọc nội dung
ở địa chỉ 05H vào thanh ghi tích lũy : MOV A,R5
Đây là lệnh 1 byte dùng địa chỉ thanh ghi Tất nhiên, thao tác tương tự có thể
được thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai :
MOV A,05H
Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tương ứng nhưng dùng địa chỉ trực tiếp Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này
Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank
thanh ghi trong từ trạng thái chương trình (PSW) Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào dia chi 18H:
MOV R0,A
Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình
nhanh và hiệu quả (từng phần riêng rẻ của phần mềm sẽ có một bộ thanh ghi riêng không phụ thuộc vào các phần khác)
IV CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
Một bản đồ vùng bộ nhớ trên chip được gọi là không gian thanh ghi chức năng đặc biệt (SFR) như được trình bày trong bảng trên
Lưu ý rằng không phải tất cả các địa chỉ đều được sử dụng, và các địa chỉ
không được sử dụng có thể không được cung cấp trên chip Các hành động đọc
đến các địa chỉ này nói chung sẽ trả về các dữ liệu ngẫu nhiên, và các hành động viết sẽ có một hiệu ứng không xác định
Các phần mềm người dùng không nên viết các mức 1 đến những vị trí không được liệt kê này, vì chúng có thể được dùng trong các sản phẩm tương lai khi
thêm vào các đặc trưng mới Trong trường hợp này, các giá trị Reset hoặc
không tích cực của các bit mới sẽ luôn là 0
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 một 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 đế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, nên không lợi lộc gì khi đặt chúng vào trong RAM trên chịp)
Đó là lý do để 8051/8031 có nhiều thanh ghi như vậy Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SER : Special Function Register) ở vùng trên
Trang 28
của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa Chỉ có 21 địa chỉ SFR là được định nghĩa Ngoại trừ thanh ghi tích lũy (A) có thể được truy xuất 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 SER có thể được địa chỉ hóa bit hoặc byte Người thiết kế phải thận trọng khi truy xuất bít
va byte Vidu lénh sau: SETB OEOH sé set bit 0 trong thanh ghi tích lũy, các
bit khác không đổi Ta thấy rằng E0H đồng thời là địa chỉ byte của cả thanh ghi tích lũy và là địa chỉ bit của 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 bít, nên chỉ có địa chỉ bít là có hiệu quả 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 thái như bảng tóm tắt sau : Bit Ký hiệu | Dia chi Ý nghĩa PSW.7 CY D7H Cờ nhớ PSW.6 AC D6H Cờ nhớ phụ PSW.5 FO D5H Cờ 0
PSW.4 R81 D4H Bit I chọn bank thanh ghi
PSW.3 RS0 D3H Bit 0 chon bank thanh ghi
00 = bank 0: dia chi OOH—07H 01 = bank 1 : dia chi O8H—OFH 10 = bank 2 : địa chi 1OH—-17H 11 = bank 3 : địa chi 18H—1FH PSW.2 OV D2H Cờ tràn PSW.1 — D1H Dự trữ PSW.0 P D0H Cờ parity chan " Cờ nhớ
Cờ nhớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh toán
học : nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số
mượn bởi phép trừ Ví dụ, nếu thanh øghi tích lũy chứa FFH, thì lệnh ADD A,
#1 sẽ trả về thanh ghi tích lũy kết quả 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 Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ
nhớ
Trang 29" Cờ nhớ phụ
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bít thấp trong khoảng 0AH đến 0FH Nếu các giá trị được cộng 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 quả
lớn hơn 9 vào nibble cao
" Cờ 0: Cờ 0 (F0) là 1 bít cờ đa dụng dành cho các ứng dụng của người dùng " Các bit chọn bank thanh ghỉ
Các bit chọn bank thanh ghi (RSO và RŠ1) 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 1FH) đến thanh ghi tích lũy : SETB RS1
SEIB RSO
MOV A,R7
Khi chương trình được hợp dịch, các đại chỉ bit đúng được thay thế cho các ky hiệu “RS1” và “RS0” Vậy, lệnh SETB RSŠ1 sẽ giống như lệnh SETB 0D4H
" (Cờ tràn
Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có một phép toán bi tran
Khi các số có dấ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 quả có nằm trong 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 quả lớn hơn +127
hoặc nhỏ hơn -128 sẽ set bit OV
Kết quả là một số có dấu §EH được xem như -116, không phải là kết quả đúng
(142), vì vậy, bi: OV được set Thanh ghi B
Thanh ghi B ở địa chỉ FOH được dùng cùng với thanh ghi tích lũy A cho các
phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bít trong A (byte thấp) và B (byte cao) Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả 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 từng bit bằng các địa chi bit F0H đến F7H
Con trỏ ngăn xếp
Con trổ ngăn xếp (SP) là một thanh ghi 8 bit ở đị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 dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP Ngăn xếp của
Trang 30
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 Chúng là 128 byte đầu 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, #5FH
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ở đĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ
liệ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 mà để nó lấy giá trị mặc định khi Reset hệ thống Giá trị mặc định đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có địa chỉ là 08H Nếu phần
mềm ứng dụng không khởi động lại SP, bank thanh ghi 1 (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 trữ tạm thời và 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, LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại
bộ đếm chương trình
Con trỏ dữ liệu
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài 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 MOVX @DPTR,A
Lệ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 đữ liệu trong
A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR (1000H)
Các thanh ghỉ Port xuất nhập
Các Port của 8051/8031 bao gồm Port 0 ở dia chi 80H, Port 1 ở địa chỉ 90H, Port 2 6 dia chỉ A0H và Port 3 ở địa chỉ B0H Tất 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 Ví dụ, nếu
một motor được nối qua một cuộn dây có transistor lái đến bit 7 của Port 1, nó
có thể được bật và tắt bằng một lệnh đơn :
SETB PI.7 ; bật motor CLR Pl.7 ; tắt motor
Các lệnh trên dùng dấu chấm để xác định một bit trong một byte Trình hợp dịch sẽ thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là như nhau :
Trang 31Trong một ví dụ khác, xem xét giao tiếp đến một thiết bị với một bit trạng thái gọi là BUSY, được set khi thiết bị đang bận và được xóa khi thiết bị đã sẵn sàng Nếu BUSY được nối tới P1.5, vòng lặp sau sẽ được dùng để chờ thiết bị trở lại trạng thái sẵn sàng
WAIT : JB P1.5, WAIT
Lệnh này có nghĩa là “nếu bit P1.5 được set thì nhảy tới nhãn WAIT” Nói
cách khác “nhảy trở lại và kiểm tra lần nữa”
Cac thanh ghi Timer
8051/8031 chứa ba bộ định thời/ đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiện Timer 0 ở địa chi 8AH (TLO: byte thdp) va 8CH (THO : byte
cao) Timer 1 6 dia chi 8BH (TL1 : byte thap) va 8DH (THI : byte cao) Timer 2 (TL2: byte thấp và TH2: byte cao) Việc vận hành Timer0 và Timerl được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển Timer (TCON) ở địa chỉ 88H Việc vận hành Timer2 được set bởi thanh ghi Timer2 Mode ( T2MOD) ở địa chỉ 0C9H và thanh ghi điều khiển (T2CON) ở địa chỉ 0C8H Chỉ có TCON và T2CON được địa chỉ hóa từng bit Được cho ở
bảng sau :
Thanh ghỉ TMOD (Timer Mode)
Dùng để xác lập chế độ hoạt động cho bộ Timer Gate C/T M1 MO | Gate C/T | Ml MO 4 bit cao xdc lap Timer I 4 bịt thấp xác lap Timer 0 - MI,MO : xác lập Mode MI MO Mode 0 0 0 0 1 1 1 0 2 1 1 3 C/T =: b6 Timer nhận xung clock từ dao động nỘi —C/ T (counter! timer)
= C/T =: b6 Timer nhận xung clock từ bên ngoài ( từ ngõ T0 hay T1)
- Gate : điều khiển mở rộng
Trang 32
"_ Gate =0: bộ Timer hoạt động bình thường
" Gate = l : bộ Timer chỉ hoạt động khi ngõ INT,=0 Thanh ghi TCON ( Timer Control)
TF1 |TRI |TEO |TRO |IEI | IT2 | IEO | ITO
(4 bit thấp khéng ding cho Timer)
Thanh ghi T2CON : TF2 | EXF2 |RCLK |TCLK |EXEN2 |TR2 |C/72 |CP/RL2 7 6 5 4 3 2 1 0 Xác lập MODE Timer2: RCLK + TCLK | CP/ Rr2 | TR2 MODE 0 0 1 16-Bit Auto-Reload 0 1 1 16-Bit Capture 1 x 1 Baud Rate Generator X xX 0 (Off)
TF, : ( Timer Flag) : co tran Timer x : khi bộ đếm bị tràn thi TF, =1 ( sau khi tran phải xóa về 0)
Các thanh ghi Port nối tiếp
8051/8031 chứa 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, mode hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (cá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 sẽ giữ cả
hai dữ liệu truyền và nhận Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì doc SBUF Cac mode van 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
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 ngắt (IE) ở địa chỉ A8H Cả hai thanh ghi được địa chỉ hóa từng bit
Thanh ghi điều khiển công suất
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bít điều
Trang 33
Bit Ky hiéu Y nghia
7 SMOD Bit gấp đô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
6 — Không định nghĩa
5 — Không định nghĩa
4 — Không định nghĩa
3 GF1 Bit co da dung 1
2 GFO Bit cd da dung 0
1 PD Giảm công suất, được set để kích hoạt
mode giảm công suất, chỉ thoát khi Reset
0 IDL Mode chờ, set để kích hoạt mode chờ, chỉ
V HOAT DONG CUA PORT NỐI TIẾP
Giới thiệu
8051/8031 có một Port nối tiếp trong chip có thể hoạt động ở nhiều chế độ trên một đải tần số rộng Chức năng chủ yếu của Port nối tiếp là thực hiện chuyển đổi song song sang nối tiếp đối 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.1 ở chân 11 (TXD) và P3.0 6 chan 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 (recelver buffering) cho phép một ký tự sẽ được thu và được 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 đượ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) ở địa chỉ 99H thật sự là hai bộ đệm Viết vào SBUF để nạp dữ liệu sẽ được phát, và doc SBUF để truy
xuất đữ liệu thu được Đây là hai thanh ghi riêng biệt : thanh ghi chỉ ghi để phát và thanh ghi chỉ đọc để thu
Trang 34
TxD RxD (P3.1) (P3.0) CLK SBUF Q ` Thanh ghi địch (chỉ ghi) CLK Xung nhịp tốc Xung nhịp độ Baud tốc độ Baud (chỉ đọc) Bus nôi 8051/6031
Thanh ghi điều khiển Port nối tiếp: ở đị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 bít đ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 kết thúc việc phát hoặc thu ký tự Tần số làm việc của Port nối tiếp, còn gọi là tốc độ Baud có thể cố định 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 Sau đây là các bảng tóm tắt thanh ghi SCON và các chế độ của Port nối tiếp :
Bit |Ký hiệu | Địa chỉ Mô tâ
SCON.7| SM0 |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 cua chế độ Port nối tiếp Cho phép truyền thông đa xử lý trong các chế độ 2 và 3
SCON.4| REN |9CH Cho phép bộ thu phải được đặt lên 1 để thu SCON.3| TB8 |9BH Bit 8 phát, bit thứ 9 được phát trong các chế độ 2
và 3
SCON.2| RBS |9AH Bit 8 thu, bit thứ 9 thu được
Trang 35Các chế độ hoạt động
Thanh ghi dich 8 bit (chế độ 0)
Chế độ 0 được chọn bằng cách ghi các bit 0 vào SMI và SM0 của SCON, đưa
Port nối tiếp vào chế độ thanh ghi dịch 8 bit Dữ liệu nối tiếp vào và ra qua
RxD và TxD xuất xung nhịp dịch 8 bit được phát hoặc thu với bit đầu tiên là
LSB Tốc độ Baud cố định ở 1/12 tần số dao động trên chip
Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF Dữ liệu được dịch ra ngoài trên đường RxD (P3.0) với các xung nhịp được gửi ra
đường TxD (P3.1) Mỗi bit phát đi hợp lệ trong một chu kỳ máy Trong mỗi chu kỳ máy, tín hiệu xung nhập xuống thấp ở S3P1 va trở về mức cao ở S6P1 Một chu kỳ máy SI S2 S3 S4 S5 S6 Pi |P2 | pi | p2 | pi | p2 | pt | p2 | Pi | p2 | Pi | p2 œc|||||[JLILILILILILILILILIL ALE Dữ liệu \ Bit dữ liệu hợp lệ xuất — Clock dịch — co i Phong to nn LEST ArrlL[L[ILILTLILILILILILILILILILILILILITLIL Dữ liệu xuất À_ D0 ð Y po \ ps \ pa Y Dp Y be Y DĐ Jj_ clockdich |_| LJ] LJ LJ LJ LI LJ LI L (TxD)
Giản đồ thời gian Port nối tiếp phát ở chế độ 0
Việc thu được khởi động khi bit cho phép bộ thu (REN) là 1 và bit ngắt thu (RD
là 0 Qui tắc tổng quát là đặt REN khi bắt đầu chương trình để khởi động Port nối tiếp, rồi xóa RI để bắt đầu hoạt động nhập dữ liệu Khi RI bị xóa, các xung nhịp được đưa ra đường TxD, bắt đầu chu kỳ máy kế tiếp, và dữ liệu theo xung nhịp ở đường RxD Lấy xung nhịp cho đữ liệu vào Port nối tiếp xảy ra ở cạnh dương của TxD
Trang 36
| | Một chu kỳ máy Dữ liệu nhập (RxD) Clock dich | | | | | | | L | | (TxD)
Giản đô thời gian Port nối tiếp thu ở chế độ 0
Một ứng dụng của chế độ thanh ghi dịch là mở rộng khả năng xuất của 8051/8031 IC thanh ghi dịch nối tiếp ra song song có thể được nối vào các đường TxD và RxD của 8051/8031 để cung cấp thêm 8 đường ra Có thể nối xâu chuỗi thêm các thanh ghi dịch để mở rộng thêm Thêm § ngố ra TxD (P3.1) Clock Thanh ghi 8051 2p (P3.0) Dữ liệu dịch
Chế độ thanh ghi dịch của Port nối tiếp
UART 8 bit với tốc độ Baud thay đổi được (chế độ 1)
Ở chế độ 1, Port nối tiếp của 8051/8031 làm việc như một UART 8 bit với tốc độ Baud thay đổi được Một UART (Universal Asynchronous
Receiver/Transmitter : Bộ thu/phát bất đồng bộ vạn năng) là một dụng cụ thu
và phát đữ liệu nối tiếp với mỗi ký tự đữ liệu đi trước là bit Start ở mức thấp và theo sau là bit stop ở mức cao Đôi khi xen thêm bít kiểm tra chấn lẻ giữa bít dữ liệu cuối cùng và bít stop Hoạt động chủ yếu của UART là 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
Trang 378051/8031 chế độ Baud được đặt bằng tốc độ báo tran cua Timer 1
Tạo xung nhịp và đồng bộ hóa các thanh ghi dịch của Port nối tiếp trong các chế độ 1, 2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16, ngõ ra là xung nhịp tốc độ Baud Ngõ vào của bộ đếm này được chọn qua phần mềm 16 x tốc độ + 12 Baud Xung nhịp tốc độ Baud Thanh phi dịch Port nối tiếp Tạo xung nhịp Port nối tiếp
Truyền dữ liệu (phát) được khởi động bằng cách ghi vào SBUF, nhưng vẫn chưa thật sự bắt đầu chạy cho đến khi sự thay thế kế tiếp của bộ đếm chia cho 16 cung cấp tốc độ Baud cổng nối tiếp Dữ liệu được dịch ra ngoài trên đường TxD bắt đầu bằng bít Start, theo sau là 8 bít dữ liệu và sau cùng là bit stop Độ rộng (theo thời gian của mỗi bít) là nghịch đảo của tốc độ Baud được lập trình trong Timer Cờ ngắt phát (TI) được đặt lên 1 khi xuất hiện bit stop trên TxD — L tốc độ TxD \ sax /DO \ bi \b2 Ys ¥ ba Ys Y bo Y D7 a TI / Ngắt phát (chuẩn bị cho dữ liệu)
Đặt cờ TI Port nối tiếp
Việc thu dữ liệu được khởi động bằng một chuyển trạng thái từ I1 xuống 0 trên
RxD Bộ đếm 16 tức thời được xóa để đồng bộ số đếm với luồng bit đến Luồng bit đến được lấy mẫu giữa 16 lần đếm Bộ thu sẽ phát hiện được bít Start sai bằng cách yêu cầu trạng thái 0 (bit Start) ở lần đếm thứ 8 sau khi có chuyển trạng thái từ 1 xuống 0 đầu tiên Nếu điều này không xảy ra, người ta
giả sử là bộ thu được kích bởi nhiễu chứ không phải do một ký tự hợp lệ Bộ
thu được Reset và quay về trạng thái nghỉ (idle), tìm kiếm (đợi) chuyển trạng
Trang 38
thái từ 1 xuống 0 kế
Giả sử đã phát hiện được bít Start hợp lệ, thì tiếp tục thu ký tự Bit Start được
bỏ qua và 8 bit dữ liệu được đưa vào thanh ghi dịch cổng nối tiếp theo xung
nhịp Khi đã có được tất cả 8 bit, điều sau đây xây ra :
1 Bitthứ 9 (stop bit) được chốt vào RB8 trong SCON
2 SBUF được nạp với 8 bit dữ liệu
3 Cờ ngắt bộ thu (RI) được đặt lên 1
Tuy nhiên, những điều này chỉ xảy ra nếu đã có những điều kiện sau :
1 RI=0
2 SM2= ] và bit stop thu được là 1, hoặc SM2 =0
Đồi hỏi RI = 0 để bảo đảm là phần mềm đã đọc ký tự trước (và RI được xóa) Điều kiện thứ hai hơi phức tạp nhưng chỉ áp dụng trong chế độ truyền thông đa xử lý Điều đó hàm ý là “không đặt RI lên một trong chế độ truyền thông đa
xử lý khi bít dữ liệu thứ 9 là 0)
UART 9 bit với tốc độ Baud cố định (chế độ 2)
Khi SM1 = 1 va SMO = 0, cổng nối tiếp làm việc ở chế độ 2, như một UART 9 bit có tốc độ Baud cố định 11 bit sé được phát hoặc thu : 1 bít Start, 8 bít dữ
liệu, bit dữ liệu thứ 9 có thể lập trình được và 1 bít stop Khi phát, bit thứ 9 là
bất cứ gì đã được đưa vào TB8 trong SCON (có thể là bít parity) Khi thu, bít thứ 9 thu được sẽ ở trong RB8 Téc d6 Baud 6 chế độ 2 là 1/32 hoặc 1/16 tan số dao động trên chip
UART 9 bit với tốc độ Baud thay đổi được
Chế độ này giống như chế độ 2, ngoại trừ tốc độ Baud có thể lập trình được và được cung cấp bởi Timer Thật ra, các chế độ 1,2 và 3 rất giống nhau Các khác biệt là ở tốc độ Baud (có định trong chế độ 2, thay đổi trong các chế độ 1 và 3) và ở số bit đữ liệu (8 trong chế độ 1, 9 trong các chế độ 2 và 3)
Khởi động và truy xuất các thanh ghi Port nối tiếp Thanh ghi 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, phải 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 lên 1 và đặt hoặc xóa các bIt khác trong SCON khi cần (Các x phải là 0 hoặc 1 để đặt chế độ làm việc)
Bit dữ liệu thứ 9:
Trang 39bằng phần mềm Bit dữ liệu thứ 9 thu được đặt ở RB8 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 tính kỹ thuật của thiết bị nối tiếp sử dụng (Bi: dữ liệu thứ 9 cũng đóng một vai trò quan trong trong truyền thông đa xử lý)
Thém 1 bit parity
Thường sử dụng bít dữ liệu thứ 9 để thêm parity vào ky tự Như đã xét ở các
chương trước, bit Parity trong từ trạng thái chương trình (PSW) được đặt lên 1
hoặc bị xóa mỗi chu kỳ máy để thiết lập kiểm tra chẵn với 8 bit trong thanh ghi tích lũy Ví dụ, nếu truyền thông cần 8 bit dữ liệu cộng thêm kiểm tra chẵn, có thể sử dụng các lệnh sau để phát 8 bít trong thanh ghi tích lũy với kiểm tra chấn
thêm vào bít thứ 9 :
MOV C,P ; Dat bit parity chan vao TB8
MOV TB8,C ;no trd thanh bit dữ liệu thứ 9
MOV SBUF,A Chuyển 8 bit từ ACC vào SBUFE Nếu cần parity lẻ thì sửa các lệnh lại như sau :
MOV C,P ; Dat bit parity chan vao cd C
CPL C ; Déi sang parity 1é
MOV TB8,C MOV SBUF,A
Dĩ nhiên, việc sử dụng parity không bị giới hạn ở các chế độ 2 và 3 Ở chế độ
1, 8 bít dữ liệu được truyền đi có thể bao gồm 7 bit dữ liệu cộng thém bit parity
Để truyền mã ASCII 7 bít với parity chắn ở bit 8, có thể sử dụng các lệnh sau CLR ACC.7 ; bao dam MSB dusgc xéa
MOV C,P ; parity chan ở trong
MOV ACC.7,C ; Dat parity chan vao MSB
MOV SBUF,A ; Gởi ký tự đi: 7 bít dữ liệu cộng parity chan Các cờ ngắt
Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quan trong
trong 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 Ví dụ, thường RI được đặt
lên 1 khi kết thúc việc thu ký tự và báo “bộ đệm thu tràn”
Trang 40CLR RI ; X0a RI
MOV A, SBUF ; Đọc ký tự
TI được đặt lên 1 ở cuối lúc phát ký tự và báo “ bộ đệm phát trống” Nếu phần mềm muốn gửi một ký tự đến một thiết bị được nối vào cổng nối tiếp, trước hết nó phải kiểm tra xem cổng nối tiếp sẵn sàng chưa Nói cách khác, nếu ký tự trước đã được gởi đi, đợi cho đến khi việc truyền đữ liệu hoàn tất trước khi gửi ký tự kế Các lệnh sau sẽ truyền ký tự trong thanh ghi tích lũy:
WAIT: JNB TI, WAIT _ ; Kiểm tra TIcho đến khi nó bằng 1 CLR TI , Xóa TI
MOV SBUF, A Gởi ký tự đi
Các đoạn chương trình trên là một phần của các hàm nhập và xuất ký tự chuẩn
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