ĐIỆN tử VIỄN THÔNG 89c51 khotailieu

29 59 0
ĐIỆN tử VIỄN THÔNG 89c51 khotailieu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Giới thiệu khái quát họ IC MCS-51™ MCS-51 họ IC vi điều khiển Intel phát triển sản xuất Một số nhà sản xuất phép cung cấp IC tương thích với sản phẩm MCS-51 Intel Siemens, Advanced Micro Devices, Fujitsu, Philips, Atmel… Các IC họ MCS-51 có đặc trưng chung sau: • port I/O bit • Giao tiếp nối tiếp • rộng • 64K không gian nhớ chương trình mở 64K không gian nhớ liệu mở rộng • Một xử lý luận lý (thao tác bit đơn) • 210 bit ủửụùc ủũa chổ hoựa Boọ nhaõn/chia às Ngoài ra, tùy theo số hiệu sản xuất mà chúng có khác biệt nhớ đònh thời/bộ đếm bảng so sánh đây: Số hiệu Bộ nhớ Bộ nhớ Số đònh sản xuất chương trình liệu thời chip chip (bộ ñeám) 8031 0K 128 byte 8051 4K ROM 128 byte 8751 4K 128 byte 8951 EPROM 128 byte 4K FLASH 8032 0K 256 byte 8052 8K ROM 256 byte 8752 8K 256 byte 8952 EPROM 256 byte 8K FLASH Giới thiệu AT89C51 AT89C51 Microcomputer bit, loại CMOS, có tốc độ cao công suất thấp với nhớ Flash lập trình Nó sản xuất với công nghệ nhớ không bay mật độ cao hãng Atmel, tương thích với chuẩn công nghiệp 80C51 80C52 chân lệnh Vì lý đó, kể từ sau ta dùng thuật ngữ “80C51” (hoặc "8051") Sơ đồ khối AT89C51 2.1 Những đặc trưng AT89C51 + Tương thích với sản phẩm MCS-51 + 4KByte nhớ Flash lập trình lại với 1000 chu kỳ đọc/xoá + Hoạt động tónh đầy đủ: 0Hz đến 24MHz + Khoá nhớ chương trình ba cấp + 128 x bit RAM nội + 32 đường xuất-nhập lập trình (tương ứng port) + Hai timer/counter 16 bit + Một port nối tiếp song công lập trình + Mạch đồng hồ dao động chip Cấu hình chân AT89C51 sau: Như AT89C51 có tất 40 chân Mỗi chân có chức đường I/O (xuất/nhập), 24 chân có công dụng kép: đường hoạt động đường I/O đường điều khiển thành phần bus đòa bus đữ liệu Mô tả chân • VCC (chân 40) Chân cấp nguồn • GND (chân 20) Chân nối đất • Port Port port xuất/nhập song hướng cực máng hở bit Nếu sử dụng ngõ xuất chân kéo ngõ vào TTL Khi mức viết vào chân port 0, chân dùng ngõ nhập tổng trở cao Port đònh cấu hình để hợp kênh bus đòa bus liệu (phần byte thấp) truy cập đến nhớ liệu nhớ chương trình Ở chế độ này, P0 có điện trở pullup bên Port nhận byte code (byte mã chương trình) lập trình Flash, xuất byte code kiểm tra chương trình Cần có điện trở pullup bên thực việc kiểm tra chương trình • Port Port port xuất/nhập song hướng bit có điện trở pullup bên Các đệm ngõ port kéo cung cấp ngõ nhập TTL Khi mức viết vào chân port 1, chúng kéo lên cao điện trở pullup nội dùng ngõ nhập Nếu đóng vai trò ngõ nhập, chân port (được kéo xuống thấp qua điện trở bên ngoài) cấp dòng IIL điện trở pullup bên • Port Port port xuất/nhập song hướng bit có điện trở pullup bên Các đệm ngõ port kéo cung cấp ngõ vào TTL Khi mức viết vào chân port chúng kéo lên cao điện trở pullup nội dùng ngõ vào Khi dùng ngõ vào, chân port (được kéo xuống qua điện trở bên ngoài) cấp dòng I IL có điện trở pullup bên Port phát byte cao đòa đọc từ nhớ chương trình truy cập nhớ liệu dùng đòa 16 bit (MOVX @DPTR) Trong ứng dụng này, dùng điện trở pullup nội "mạnh" phát mức Khi truy cập nhớ liệu dùng đòa bit (MOVX @RI), port phát nội dung ghi chức đặc biệt P2 Port nhận bit cao đòa vài tín hiệu điều khiển lập trình kiểm tra Flash • Port Port port xuất-nhập song hướng bit có điện trở pullup nội bên Các đệm ngõ port kéo cung cấp ngõ vào TTL Khi mức viết vào chân port chúng kéo lên cao điện trở pullup nội dùng ngõ vào Khi dùng ngõ vào, chân port (được kéo xuống qua điện trở bên ngoài) cấp dòng I IL có điện trở pullup bên Port cung cấp chức đặc trưng đặc biệt liệt kê đây: Chân Tên P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD TXD INT0 INT1 T0 T1 WR RD đổi Các chức chuyển Port nhập nối tiếp Port xuất nối tiếp Ngắt bên Ngắt bên Ngõ vào Timer/Counter Ngõ vào Timer/Counter Xung ghi nhớ liệu Xung đọc nhớ liệu Các chức chuyển đổi Port • RST (chân 9) Ngõ vào reset Một mức cao chân khoảng hai chu kỳ máy dao động chạy reset thiết bò • ALE/ PROG ALE xung ngõ để chốt byte thấp đòa truy cập nhớ Chân ngõ nhập xung lập trình ( PROG ) lập trình Flash Khi hoạt động bình thường, ALE phát với tỷ lệ không đổi 1/6 tần số dao động dùng cho mụch đích timing clocking bên Tuy nhiên, lưu ý xung ALE bò bỏ qua truy cập nhớ liệu Nếu muốn, hoạt động ALE cấm cách set bit SFR đòa 8Eh Nếu bit set, ALE dược hoạt động có lệnh MOVX MOVC Ngược lại, chân kéo lên cao điện trở pullup "nhẹ" Việc set bit cấm-ALE tác dụng vi điều khiển chế độ thi hành • PSEN PSEN (Program Store Enable) xung đọc nhớ chương trình Khi AT89C52 thi hành mã (code) từ nhớ chương trình ngoài, PSENđược kích hoạt hai lần chu kỳ máy, hai hoạt động PSEN bò bỏ qua truy cập nhớ liệu • EA /Vpp EA (External Access Enable) phải nối với GND phép thiết bò đọc code từ nhớ chương trình có đòa từ 0000H đến FFFFH Tuy nhiên, lưu ý bit khoá (lock-bit 1) lập trình, EA chốt bên reset EA phải nối với Vcc thi hành chương trình bên Chân nhận điện áp cho phép lập trình Vpp=12V lập trình Flash (khi áp lập trình 12V chọn) • XTAL1 XTAL2 XTAL1 XTAL2 hai ngõ vào khuếch đại dao động nghòch cấu hình để dùng dao động chip Hình Các kết nối dao động Không có yêu cầu duty cycle tín hiệu xung ngoài,vì ngõ nhập nối với mạch tạo xung nội flipflop chia đôi, đònh thời gian high low, mức áp tối đa tối thiểu phải tuân theo Các đặc trưng khác trình bày cách chi tiết phần sau Tổ chức nhớ 8051/8031 có nhớ theo cấu trúc Harvard: có vùng nhớ riêng biệt cho chương trình liệu Như nói trên, chương trình liệu bên trong; dù chúng mở rộng thành phần lên đến tối đa 64 Kbytes nhớ chương trình 64 Kbytes nhớ liệu Bộ nhớ bên bao gồm ROM RAM chip, RAM chip bao gồm nhiều phần : phần lưu trữ đa dụng, phần lưu trữ đòa hóa bit, bank ghi ghi chức đặc biệt Hai đặc tính cần lưu ý : • Các ghi port xuất nhập xếp nhớ truy xuất trực tiếp giống đòa nhớ khác • Ngăn xếp bên RAM nội nhỏ so với RAM vi xử lý khác Chi tiết nhớ RAM chip: Như ta thấy hình ( ), RAM bên 8051/8031 phân chia bank ghi (00H–1FH), RAM đòa hóa bit (20H–2FH), RAM đa dụng (30H–7FH) ghi chức đặc biệt (80H–FFH) 3.1 RAM đa dụng Mặc dù hình cho thấy 80 byte RAM đa dụng chiếm đòa từ 30H–7FH, 32 byte từ 00H đến 1FH dùng với mục đích tương tự (mặc dù đòa có mục đích khác) Mọi đòa vùng RAM đa dụng truy xuất tự dùng cách đánh đòa trực tiếp gián tiếp Ví dụ, để đọc nội dung đòa 5FH RAM nội vào ghi tích lũy, lệnh sau dùng : MOV A, 5FH Lệnh di chuyển byte liệu dùng cách đánh đòa trực tiếp để xác đònh “đòa nguồn” (5FH) Đích nhận liệu ngầm xác đònhFFFF mã lệnh FFFF ghi tích lũy A RAM bên truy xuất dùng cách Bộ nhớ đánh đòa gián tiếp quaBộ R0 nhớ hay R1 Ví dụ, hai liệu lệnh sau thi chương hành nhiệm vụ lệnh đơn : trình Tóm tắt vùng nhớ 8031/8051 chọn qua PSEN F F 0 Bộ nhớ 000 chọn qua WR RD 000 Bộ nhớ mở MOV R0, #5FH MOV A, @R0 Lệnh đầu dùng đòa tức thời để di chuyển giá trò 5FH vào ghi R0, lệnh thứ hai dùng đòa trực tiếp để di chuyển liệu “được trỏ R0” vào ghi tích lũy Đòa byte F 3.2 Đòa Đòa chỉ bit byte F F F7 F6 F5 F4 F3 F2 F1 F0 B E E E E E E E E E ACC RAM đa dụng D D D D D D D – D PSW 0 – – – BC BB BA B9 B8 IP B 7C 7B 7A 7 7F D F E 7 7 B B B B B B B B B P3 E 6F 6 6C 6B 6A 6 D E 6 6 D A AF – – AC AB A A9 A8 IE 6 A 5C 5B 5A C 5 5F D B E 5 5 A A A A A A A A A P2 A 4F 4 4C 4B 4A 4 D E 4 4 9 4 không đòa SBUF bit9A 9 3C 3B 3A 9C 9B 9F 9 hoùa 3 SCON 3F D D E E 3 3 3 3 2 2C 2B 2A 2 2F 9 9 9 9 P1 D E 5 2 2 2 2 1C 1B 1A 1 không đòa TH1 1F D E D 1 1 đượcbit đòa TH0 khônghóa hóa C đòa TL1 0F 0 0C 0B 0A 0 không đượcbit D E hóa bit B không đòa TL0 0 0 0 0 hoùa bit 7 A Bank khoâng đòa TMOD bit8A 8 8C 8B F TCON 8F 8 hoùa D E 8 không đòa9chỉ PCON Bank hoùa bit 7 Bank không đòa DPH F đượcbit đòa DPL khônghóa hóa đòa SP Bank ghi không đượcbit Tóm tắt nhớ liệuhóa chip bit 8 8 8 8 P0 (maëc ñònh cho R08 R7) 0 RAM đòaRAM hóa bitCÁC THANH GHI CHỨC NĂNG Đòa bit ĐẶC BIỆT 8051/8031 chứa 210 bit đòa hóa, 128 bit đòa byte 20H đến 2FH, phần lại ghi chức đặc biệt Ý tưởng truy xuất bit riêng rẽ phần mềm đặc tính tiện lợi vi điều khiển nói chung Các bit đặt, xóa, AND, OR, với lệnh đơn Đa số vi xử lý đòi hỏi chuỗi lệnh đọc-sửa-ghi để đạt hiệu tương tự Hơn nữa, port I/O đòa hóa bit làm đơn giản phần mềm xuất nhập bit Có 128 bit đòa hóa đa dụng byte 20H đến 2FH Các đòa truy xuất byte bit phụ thuộc vào lệnh dùng Ví dụ, để đặt bit 67H, ta dùng lệnh sau : SETB 67H Chú ý “đòa bit 67H” bit có trọng số lớn (MSB) “đòa byte 2CH” Lệnh không tác động đến bit khác đòa Các vi xử lý phải thi hành nhiệm vụ tương tự sau : MOV A, 2CH ORL ; đọc byte A, #10000000B ; set MSB MOV 2CH,A ; ghi lại byte 3.3 Các bank ghi : 32 byte thấp nhớ nội dành cho bank ghi Bộ lệnh 8051/8031 hỗ trợ ghi (R0 đến R7) theo mặc đònh (sau reset hệ thống) ghi đòa 00H–07H Lệnh sau đọc nội dung đòa 05H vào ghi tích lũy : MOV A, R5 Đây lệnh byte dùng đòa ghi Tất nhiên, thao tác tương tự thi hành lệnh byte dùng đòa trực tiếp nằm byte thứ hai : MOV A, 05H Các lệnh dùng ghi R0 đến R7 ngắn nhanh lệnh tương ứng dùng đòa trực tiếp Các giá trò liệu dùng thường xuyên nên dùng ghi Bank ghi tích cực chuyển đổi cách thay đổi bit chọn bank ghi từ trạng thái chương 4.4 Con trỏ liệu Con trỏ liệu (DPTR) dùng để truy xuất nhớ ghi 16 bit đòa 82H (DPL : byte thấp) 83H (DPH : byte cao) Ba lệnh sau ghi 55H vào RAM đòa 1000H : MOV A, #55H MOV DPTR, #1000H MOVX @DPTR, A Lệnh dùng đòa tức thời để tải liệu 55H vào ghi tích lũy Lệnh thứ hai dùng đòa tức thời, lần để tải liệu 16 bit 1000H vào trỏ liệu Lệnh thứ ba dùng đòa gián tiếp để di chuyển liệu A (55H) đến RAM đòa chứa DPTR (1000H) 4.5 Các ghi port xuất nhập Các port 8051/8031 bao gồm Port đòa 80H, Port đòa 90H, Port đòa A0H Port đòa B0H Tất port đòa hóa bit Điều cung cấp khả giao tiếp thuận lợi Ví dụ motor nối qua cuộn dây có transistor lái đến bit Port 1, bật tắt lệnh đơn : SETB P1.7 ; bật motor CLR P1.7 ; tắt motor Các lệnh dùng dấu chấm để xác đònh bit byte Trình hợp dòch thi hành chuyển đổi cần thiết, hai lệnh sau : CLR P1.7 CLR 97H Trong ví dụ khác, xem xét giao tiếp đến thiết bò với bit trạng thái gọi BUSY, set thiết bò bận xóa thiết bò sẵn sàng Nếu BUSY nối tới P1.5, vòng lặp sau dùng để chờ thiết bò trở lại trạng thái sẵn sàng : WAIT : JB P1.5, WAIT Lệnh có nghóa “nếu bit P1.5 set nhảy tới nhãn WAIT” Nói cách khác “nhảy trở lại kiểm tra lần nữa” 4.6 Các ghi timer 8051/8031 chứa hai đònh thời / đếm 16 bit dùng cho việc đònh thời đếm kiện Timer đòa 8AH (TL0 : byte thấp) 8CH (TH0 : byte cao) Timer đòa 8BH (TL1 : byte thấp) 8DH (TH1 : byte cao) Việc vận hành timer set ghi Timer Mode (TMOD) đòa 89H ghi điều khiển timer (TCON) đòa 88H Chỉ có TCON đòa hóa bit 4.7 Các ghi port nối tiếp 8051/8031 chứa port nối tiếp chip dành cho việc trao đổi thông tin với thiết bò nối tiếp máy tính, modem cho việc giao tiếp với IC khác có giao tiếp nối tiếp (các chuyển đổi A/D, ghi dòch ) Một ghi gọi đệm liệu nối tiếp (SBUF) đòa 99H giữ hai liệu truyền nhận Khi truyền liệu ghi lên SBUF, nhận liệu đọc SBUF Các mode vận hành khác lập trình qua ghi điều khiển port nối tiếp (SCON) (được đòa hóa bit) đòa 98H 4.8 Các ghi ngắt 8051/8031 có cấu trúc nguồn ngắt, mức ưu tiên Các ngắt bò cấm sau reset hệ thống cho phép việc ghi ghi cho phép ngắt (IE) đòa A8H Cả hai ghi đòa hóa bit 4.9 Thanh ghi điều khiển công suất Thanh ghi điều khiển công suất (PCON) đòa 87H chứa nhiều bit điều khiển Chúng tóm tắt bảng sau : Bit Ký hiệu Ý nghóa SMOD set mode – – Bit gấp đôi tốc đọ baud, tốc độ baud tăng gấp đôi 1,2 port nối tiếp Không đònh nghóa Không đònh nghóa hoạt – GF1 GF0 PD Không đònh nghóa Bit cờ đa dụng Bit cờ đa dụng Giảm công suất, set để kích mode giảm công suất, thoát IDL Mode chờ, set để kích hoạt reset mode chờ, Bảo vệ nhớ thoát có ngắt reset hệ thống Các bit khoá nhớ chương trình Vi điều khiển AT89C51 có bit khoá bỏ không lập trình (U) lập trình (P) để nhận đặc trưng thêm vào liệt kê bảng (với LB1, LB2, LB3 bit khóa tương ứng) Chế độ LB1 LB2 LB3 Kiểu bảo vệ U P U U U U Không khoá chương trình Các lệnh MOVC thi hành từ nhớ chương trình bò cấm lấy byte mã từ nhớ nội, /EA lấy mẫu chốt lại reset nữa, việc lập trình nhớ Flash bò cấm P P U Như chế độ việc kiểm tra bò cấm P P P Như chế độ việc thi hành bò cấm Khi bit khoá lập trình, mức logic chân EA lấy mẫu chốt lại reset Nếu thiết bò bật nguồn mà reset, việc chốt khởi tạo với giá trò ngẫu nhiên reset Giá trò chốt EA phải với mức logic chân thiết bò làm việc cách xác Hoạt động port nối tiếp 6.1 Giới thiệu 8051/8031 có port nối tiếp chip hoạt động nhiều chế độ dãi tần số rộng Chức chủ yếu port nối tiếp thực chuyển đổi song song sang nối tiếp liệu xuất, chuyển đổi nối tiếp sang song song với liệu nhập Truy xuất phần cứng đến port nối tiếp qua chân TXD RXD Các chân có chức khác với hai bit Port 3, P3.1 chân 11 (TXD) P3.0 chân 10 (RXD) Port nối tiếp cho hoạt động song công (full duplex : thu phát đồng thời), đệm lúc thu (receiver buffering) cho phép ký tự thu giữ ký tự thứ hai nhận Nếu CPU đọc ký tự thứ trước ký tự thứ hai thu thu đầy đủ liệu không bò Hai ghi chức đặc biệt cho phép phần mềm truy xuất đến port nối tiếp : SBUF SCON Bộ đệm port nối tiếp (SBUF) đòa 99H thật hai đệm Viết vào SBUF để nạp liệu phát, đọc SBUF để truy xuất liệu thu Đây hai ghi riêng biệt : ghi ghi để phát ghi đọc để thu CLK Q TXD RXD (P3.1) (P3.0) D CLK SBUF Thanh ghi dòch (chỉ ghi) Xung nhòp tốc độ baud (phát) Xung nhòp tốc độ baud (thu) Bus nội 8051/8031 SBUF (chỉ đọc) Thanh ghi điều khiển port nối tiếp (SCON) đòa 98H ghi có đòa bit chứa bit trạng thái bit điều khiển Các bit điều khiển đặt chế độ hoạt động cho port nối tiếp, bit trạng thái báo kết thúc việc phát thu ký tự Các bit trạnh thái kiểm tra phần mềm lập trình để tạo ngắt Tần số làm việc port nối tiếp, gọi tốc độ baud cố đònh (lấy từ dao động chip) Nếu sử dụng tốc độ baud thay đổi, Timer cung cấp xung nhòp tốc độ baud phải lập trình 6.2 Thanh ghi điều khiển port nối tiếp Chế độ hoạt động port nối tiếp đặt cách ghi vào ghi chế độ port nối tiếp (SCON) đòa 98H Sau bảng tóm tắt ghi SCON chế độ port nối tiếp : Bit Ký hiệu Đòa Mô tả SCON.7 SM0 9FH Bit chế độ port nối tiếp SCON.6 SM1 9EH Bit chế độ port nối tiếp SCON.5 SM2 9DH Bit chế độ port nối tiếp Cho phép truyền thông đa xử lý chế đọ 3; RI không bò tác động bit thứ thu SCON.4 REN 9CH Cho phép thu phải đặt lên để thu (nhận) ký tự SCON.3 TB8 9BH Bit phát, bit thứ phát chế độ 3; đặt xóa phần mềm SCON.2 RB8 9AH Bit thu, bit thứ thu SCON.1 TI 99H Cờ ngắt phát Đặt lên kết thúc phát ký tự; đượcxóa phần mềm SCON.0 RI 98H Cờ ngắt thu Đặt lên kết thúc thu ký tự; xóa phần mềm Tóm tắt ghi chế độ port nối tiếp SCON SM0 SM1Chế độ Mô tả Tốc độ baud 0 Thanh ghi dòch Cố đònh (FOSC /12) 1 UART bit Thay đổi (đặt timer) UART bit Cố đònh (FOSC chia cho 12 64) Các chế portđổi nối(đặt tiếp.bằng timer) 1 UART bit độThay Trước sử dụng port nối tiếp, phải khởi động SCON cho chế độ Ví dụ, lệnh MOV SCON, #01010010B khởi động port nối tiếp cho chế độ (SM0/SM1 = 0/1), cho phép thu (REN = 1) đặt cờ ngắt phát (T1 = 1) để phát sẵn sàng hoạt động 6.3 Các chế độ hoạt động Port nối tiếp có chế độ hoat động, chọn cách viết số hay vào bit SM0 SM1 SCON Có ba chế độ cho phép truyền thông bất đồng bộ, với ký tự thu (nhận) phát đóng khung bit start bit stop Ở chế độ thứ tư, port nối tiếp hoạt động ghi dich đơn giản 6.3.1 Thanh ghi dòch bit (chế độ 0) Chế độ chọn cách ghi bit vào SM1 SM0 SCON, đưa port nối tiếp vào chế độ ghi dòch bit Dữ liệu nối tiếp vào qua RXD TXD xuất xung nhòp dòch bit phát thu với bit LSB Tốc độ baud cố đònh 1/12 tần số dao động chip Việc phát khởi động lệnh ghi liệu vào SBUF Dữ liệu dòch đường RXD (P3.0) với xung nhòp gửi đường TXD (P3.1) Mỗi bit phát hợp lệ (trên RXD) chu kỳ máy Trong chu kỳ máy, tín hiệu xung nhập xuống thấp S3P1 trở mức cao S6P1 S P1 P2 Một chu kỳ máy S S P1 P2 P1 P2 S P1 P2 S P1 P2 S P1 P2 OSC ALE Dữ liệu xuất Clock dòch Bit liệu hợp lệ Phóng to ALE Dữ liệu xuất D0 D1 D2 D3 D4 D5 D6 D7 Clock dòch (TXD) Giản đồ thời gian port nối tiếp phát chế độ Việc thu khởi động bit cho phép thu (REN) bit ngắt thu (RI) Qui tắc tổng quát đặt REN bắt đầu chương trình để khởi động port nối tiếp, xóa RI để bắt đầu hoạt động nhập liệu Khi RI bò xóa, xung nhòp đưa đường TXD, bắt đầu chu kỳ máy kế tiếp, 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 cạnh dương TXD Một chu kỳ máy ALE Dữ liệu nhập (RXD) Clock dòch Giản (TXD) D0 D0 D0 D0 D0 D0 D0 D0 đồ thời gian port nối tiếp thu chế độ Một ứng dụng chế độ ghi dòch mở rộng khả xuất 8051/8031 IC ghi dòch nối tiếp song song nối vào đường TXD RXD 8051/8031 để cung cấp thêm đường Có thể nối xâu chuỗi thêm ghi dòch để mở rộng thêm Thêm ngõ TXD (P3.1) 8051RXD (P3.0) Clock Dữ liệu Thanh ghi dòch Chế độ ghi dòch port nối tiếp 6.3.2 UART bit với tốc độ baud thay đổi (chế độ 1) Ở chế độ 1, port nối tiếp 8051/8031 làm việc UART bit với tốc độ baud thay đổi Một UART (Universal Asynchronous Receiver/Transmitter : Bộ thu/phát bất đồng vạn năng) dụng cụ thu phát liệu nối tiếp với ký tự liệu trước bit start mức thấp theo sau bit stop mức cao Đôi xen thêm bit kiểm tra chẵn lẻ bit liệu cuối bit stop Hoạt động chủ yếu UART chuyển đổi song song sang nối tiếp với liệu xuất chuyển đổi nối tiếp sang song song với liệu nhập Ở chế độ 1, 10 bit phát TXD thu RXD Những bit : bit start (luôn 0), bit liệu (LSB đầu tiên) bit stop (luôn 1) Với hoạt động thu, bit stop đưa vào RB8 SCON Trong 8051/8031 chế dộ baud đặt tốc độ báo tràn Timer Tạo xung nhòp đồng hóa ghi dòch port nối tiếp chế độ 1, thiết lập đếm bit chia cho 16, ngõ xung nhòp tốc độ baud Ngõ vào đếm choùn qua phan mem 16 ì toỏc ủoọ baud ữ 16 Xung nhòp tốc độ baud Thanh ghi dòch port nối Tạo xung nhòp port nối tiếp tiếp Truyền liệu (phát) khởi động cách ghi vào SBUF, chưa thật bắt đầu chạy thay đếm chia cho 16 cung cấp tốc độ baud cổng nối tiếp Dữ liệu dòch đường TXD bắt đầu bit start, theo sau bit liệu sau bit stop Độ rộng (theo thời gian bit) nghòch đảo tốc độ baud lập trình timer Cờ ngắt phát (TI) đặt lên xuất bit stop TXD TXD bit star t D0 D1 tốc ñoä baud D2 D3 D4 D5 D6 D7 bit stop TI (SCON.1) Ngắt phát (chuẩn bò cho liệu) Đặt cờ TI port nối tiếp Việc thu liệu khởi động chuyển trạng thái từ xuống RXD Bộ đếm 16 tức thời xóa để đồng số đếm với luồng bit đến Luồng bit đến lấy mẫu 16 lần đếm Bộ thu phát bit start sai cách yêu cầu trạng thái (bit start) lần đếm thứ sau có chuyển trạng thái từ xuống Nếu điều không xảy ra, người ta giả sử thu kích nhiễu ký tự hợp lệ Bộ thu reset quay trạng thái nghỉ (idle), tìm kiếm (đợi) chuyển trạng thái từ xuống kế Giả sử phát bit start hợp lệ, tiếp tục thu ký tự Bit start bỏ qua bit liệu đưa vào ghi dòch cổng nối xung nhòp Khi có tất bit, điều sau xảy : Bit thứ (bit stop) chốt vào RB8 SCON SBUF nạp với bit liệu Cờ ngắt thu (RI) đặt lên Tuy nhiên, điều xảy có điều kiện sau : RI = SM2 = bit stop thu 1, SM2 = Đòi hỏi RI = để bảo đảm phần mềm đọc ký tự trước (và RI xóa) Điều kiện thứ hai phức tạpn áp dụng chế độ truyền thông đa xử lý Điều hàm ý “không đặt RI lên chế độ truyền thông đa xử lý bit liệu thứ 0) 6.3.3 UART bit với tốc độ baud cố đònh (chế độ 2) Khi SM1 = SM0 = 0, cổng nối tiếp làm việc chế độ 2, UART bit có tốc độ baud cố đònh 11 bit phát thu : bit start, bit liệu, bit liệu thứ lập trình bit stop Khi phát, bit thứ đưa vào TB8 SCON (có thể bit parity) Khi thu, bit thứ thu RB8 Tốc độ baud chế độ 1/32 1/16 tần số dao động chip 6.3.4 UART bit với tốc độ baud thay đổi Chế độ giống chế độ ngoại trừ tốc độ baud lập trình cung cấp timer Thật ra, chế độ 1,2 giống Các khác biệt tốc độ baud (ccó đònh chế độ 2, thay đổi chế độ 3) số bit liệu (8 chế độ 1, chế độ 3) 6.4 Khởi động truy xuất ghi cổng nối tiếp 6.4.1 Cho phép thu Bit cho phép thu (REN = Receiver Enable) SCON phải đặt lên phầm mềm phép thu ký tự Thông thường thực việc nàû đầu chương trình khởi động cổng nối tiếp, timer, Có thể thực việc theo hai cách Lệnh SETB REN đặt REN lên 1, lệnh MOV SCON, #xxx1xxxxB đặt REN lên đặt xóa bit khác SCON cần (Các x phải để đặt chế độ làm việc) 6.4.2 Bit liệu thứ Bit liệu thứ cần phát chế độ phải nạp vào TB8 phần mềm Bit liệu liệu thứ thu đặt RB8 Phần mềm cần không cần bit liệu thứ 9, phụ thuộc vào đặc tính kỹ thuật thiết bò nối tiếp sử dụng (Bit liệu thứ đóng vai trò quan trọng truyền thông đa xử lý) 6.4.3 Thêm bit parity Thường sử dụng bit liệu thứ để thêm parity vào ký tự Như xét chương trước, bit P từ trạng thái chương trình (PSW) đặt lên bò xóa chu kỳ máy để thiết lập kiểm tra chẵn với bit ghi tích lũy Ví dụ, truyền thông cần bit liệu cộng thêm kiểm tra chẵn, sử dụng lệnh sau để phát bit ghi tích lũy với kiển tra chẵn thêm vào bit thứ : MOV C, P ; Đặt bit parity chẵn vào TB8 MOV TB8, C ; trở thành bit liệu thứ MOV SBUF, A ; Chuyển bit từ ACC vào SBUF Nếu cần parity lẻ sửa lệnh lại sau : MOV C, P CPL C ; Đặt bit parity chẵn vào cờ C ; Đổi sang parity lẻ MOV TB8, C MOV SBUF, A Dó nhiên, việc sử dụng parity không bò giới hạn chế độ Ở chế độ 1, bit liệu truyền bao gồm bit liệu cộng thêm bit parity Để truyền mã ASCII bit với parity chẵn bit 8, sử dụng lệnh sau : CLR PMOV ACC.7 C, P MOV ACC.7, C MOV SBUF, A chẵn ; bảo đảm MSB xóa ; parity chẵn ; Đặt parity chẵn vào MSB ; Gởi ký tự bit liệu cộng prity 6.4.4 Các cờ ngắt Hai cờ ngắt thu phát (RI TI) SCON đóng vai trò quan trọng truyền thông nối tiếp dùng 8051/8031 Cả hai bit đặt lên phần cứng, phải xóa phần mềm Ví dụ, thường RI đặt lên kết thúc việc thu ký tự báo “bộ đệm thu tràn” Điều kiện kiểm tra phần mềm lập trình để gây ngắt Nếu phần mềm muốn nhập ký tự từ thiết bò nối vào cổng nối tiếp (có thể thiết bò đầu cuối hiển thò video), phải đợi RI đặt lên 1, xóa RI đọc ký tự từ SBUF Chương trình sau : WAIT : JNB CLR MOV RI, WAIT RI ; Kieåm tra RI = ; Xóa RI A, SBUF ; Đọc ký tự TI đặt lên cuối lúc phát ký tự báo “ đệm phát trống” Nếu phần mềm muốn gửi ký tự đến thiết bò nối vào cổng nối tiếp, trước hết phải kiểm tra xem cổng nối tiếp sẵn sàng chưa Nói cách khác, ký tự trước gởi đi, đợi việc truyền liệu hoàn tất trước gửi ký tự kế Các lệnh sau truyền ký tự ghi tích lũy: WAIT : JNB TI, WAIT ; Kiểm tra TI CLR TI ; Xóa TI MOV SBUF, A ; Gởi ký tự Các đoạn chương trình phần hàm nhập xuất ký tự chuẩn 6.5 Tốc độ baud port nối tiếp Như nói, tốc độ baud cố đònh chế độ Trong chế độ 0, luôn tần số dao động chip chia cho 12 Thông thường thạch anh ấn đònh tần số dao động chip 8051/8031, sử dụng nguồn xung nhòp khác Giả sử với tần số dao động danh đònh 12 MHz, tốc độ baud chế độ MHz dao động chip ÷ xung nhòp tốc độ baud 12 a) chế độ ÷ dao động chip ÷ 64 32 SMOD = SMOD = xung nhòp tốc độ baud SMOD = SMOD = xung nhòp tốc độ baud b) chế độ ÷ dao động chip ÷ 32 16 c) chế độ Các nguồn tạo xung nhòp cho port nối tiếp Mặc nhiên sau reset hệ thống, tốc độ baud chế độ tần số dao động chia cho 64 Tốc độ baud bò ảnh hưởng bit ghi điều khiển nguồn cung cấp (PCON) Bit PCON bit SMOD Đặt bit SMOD lên làm gấp đôi tốc độ baud chế độ 1, Trong chế độ 2, tốc độ baud bò gấp đôi từ giá trò 1/64 tần số dao động (SMOD = 0) đến 1/32 tần số dao động (SMOD = 1) Vì PCON không đònh đòa theo bit, nên để đặt bit SMOD lên cần phải theo lệnh sau : MOV A, PCON SETB ACC.7 MOV PCON, A ; Lấy giá trò thời PCON ; Đặt bit (SMOD) lên ; Ghi giá trò ngược PCON Các tốc độ baud chế độ xác đònh tốc độ tràn Timer Vì timer hoạt động tần số tương đối cao, tràn timer chia thêm cho 32 (16 SMOD = 1) trước cung cấp xung nhòp tốc độ baudcho port nối tiếp * Sử dụng Timer làm xung nhòp tốc độ baud Xét 8051, cách thông dụng để tạo tốc độ baud khởi động TMOD cho chế độ bit tự động nạp lại (chế độ 2) đặt giá trò nạp lại vào TH1 tốc độ tràn với tốc độ baud TMOD khởi động sau : MOV TMOD, #0010xxxxB Các x bit cần cho timer Cũng đạt tốc độ baud thấp cách sử dụng timer chế độ với TMOD = 0001xxxxB Tuy nhiên, tốn thêm phần mềm ghi TH1/TL1 phải khởi động lại sau lần tràn Việc thực chương trình phục vụ ngắt Một chọn lựa khác cấp xung nhòp cho Timer từ dùng T1(P3.5) Và luôn tốc độ baud tốc độ tràn Timer chia cho 32 (hoặc cho 16, SMOD = 1) Công thức tổng quát để xác đònh tốc độ baud chế độ : Tốc độ baud = Tốc độ tràn Timer ÷ 32 Ví dụ, muốn làm việc với tốc độ baud 1200 baud, tốc độ tràn Timer phải : 1200 × 32 = 38.4 KHz Nếu dùng thạch anh 12 MHz, Timer cấp xung nhòp MHz hay 1000 KHz Vì tốc đô tràn Timer 38.4 KHz timer cấp xung nhòp 1000 KHz, cần tràn sau 1000 ÷ 38.4 = 26.04 xung nhòp (làm tròn 26) Vì timer đếm lên tràn xảy có thay đổi từ FFH xuống 00H số đếm Như giá trò cần nạp vào TH1 –26 Cách dễ để đặt giá trò nạp lại vào TH1 : MOV TH1, # –26 Trình hợp dòch thực chuyển đổi cần thiết Trong trường hợp –26 chuyển thành 0E6H Như vậy, lệnh hoàn toàn giống với lệnh : MOV TH1, # 0E6H Do việc làm tròn nên có sai số nhỏ tốc độ baud Tổng quát cho phép dung sai 5% truyền thông bất đồng (start/stop) Có thể có tốc độ baud xác dùng thạch anh 11.059 MHz Bảng sau tóm tắt giá trò nạp lại cho tốc độ baud thông dụng nhất, dùng thạch anh 12 MHZ 11.0592 MHz : Tốc độ baud 9600 2400 1200 19200 9600 2400 1200 Tần số thạch anh 12.000 12.000 12.000 11.059 11.059 11.059 11.059 MHz MHz MHz MHz MHz MHz MHz SMOD Giaù trò nạp Tốc độ Sai số 0 0 lại vào –7 TH1 (F9H) baud thật 8923 –13 (F3H) –26 (E6H) –3 (FDH) –3 (FDH) –12 (F4H) –24 (E8H) 2404 1202 19200 9600 2400 1200 Baûng tóm tắt tốc độ baud 7% 0.16% 0.16% 0 0 ... trò ngõ nhập, chân port (được kéo xuống thấp qua điện trở bên ngoài) cấp dòng IIL điện trở pullup bên • Port Port port xuất/nhập song hướng bit có điện trở pullup bên Các đệm ngõ port kéo cung cấp... viết vào chân port chúng kéo lên cao điện trở pullup nội dùng ngõ vào Khi dùng ngõ vào, chân port (được kéo xuống qua điện trở bên ngoài) cấp dòng I IL có điện trở pullup bên Port phát byte cao... bit + Một port nối tiếp song công lập trình + Mạch đồng hồ dao động chip Cấu hình chân AT89C51 sau: Như AT89C51 có tất 40 chân Mỗi chân có chức đường I/O (xuất/nhập), 24 chân có công dụng kép:

Ngày đăng: 12/11/2019, 13:25

Mục lục

  • 1. Giới thiệu khái quát về họ IC MCS-51™

    • 2 Giới thiệu AT89C51

      • Sơ đồ khối của AT89C51

      • Mô tả chân

        • Hình. Các kết nối của bộ dao động

        • 3 Tổ chức bộ nhớ

        • 4 Các thanh ghi chức năng đặc biệt

        • 5 Bảo vệ bộ nhớ.

          • 6 Hoạt động của port nối tiếp.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan