1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CHƯƠNG 3 sơ lược AT89C51

33 301 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 1,29 MB

Nội dung

Chương 2: SƠ LƯC AT89C51 I GIỚI THIỆU KHÁI QUÁT VỀ 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 MCS51 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 • 64K không gian nhớ chương trình mở rộng • 64K không gian nhớ liệu mở rộng • Một xử lý luận lý (thao tác bit đơn) • 210 bit đòa hóa • Bộ nhâ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 sản xuất 8031 8051 8751 8951 Bộ nhớ chương trình chip 0K 4K ROM 4K EPROM 4K FLASH Bộ nhớ liệu chip 128 byte 128 byte 128 byte 128 byte Số đònh thời (bộ đếm) 2 2 8032 8052 8752 8952 II 0K 8K ROM 8K EPROM 8K FLASH 256 byte 256 byte 256 byte 256 byte 3 3 GIỚI THIỆU AT89C52 : AT89C52 Microcomputer bit, họ 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") Với kết nối linh hoạt bit CPU với flash chip, AT89C52 Atmel micro-computer tuyệt vời với độ linh hoạt cao giải hiệu nhiều chương trình điều khiển ghi vào Sơ đồ khối AT89C51 Những đặc trưng AT89C52 + Tương thích với sản phẩm MCS-51 + 8KByte 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 + 256 x bit RAM nội + 32 đường xuất-nhập lập trình (tương ứng port) + Ba timer/counter 16 bit + Một cấu trúc ngắt 6-vector mức + Một port nối tiếp song công lập trình dạng full + Mạch đồng hồ dao động chip Cấu hình chân AT89C52 sau: Như AT89C52 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 IIL có điện trở kéo lên 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 IIL 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 Các chức 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 INT0 Ngắt bên P3.3 INT1 Ngắt bên P3.4 T0 Ngõ vào Timer/Counter P3.5 T1 Ngõ vào Timer/Counter P3.6 WR Xung ghi nhớ liệu P3.7 RD 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ục đí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 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 flip-flop 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 III TỔ CHỨC BỘ 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: Theo hình vẽ sau, 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) 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 đònh mã lệnh ghi tích lũy A Tóm tắt vùng nhớ 8031/8051 RAM bên truy xuất dùng cách đánh đòa gián tiếp FFFF FFFF qua R0 hay R1 Ví dụ, hai lệ nh sau thi hành cù ng nhiệm vụ lệnh đơn : Bộ nhớ chương trình chọn qua PSEN F F 00 Bộ nhớ Bộ nhớ liệu 0000 chọn qua WR RD 0000 Bộ nhớ mở rộng chip Đòa byte Đòa bit 7F MOV R0, #5FH MOV Đòa byte Đòa bit F F0 F7 F6 F5 F4 F3 F2 F1 F0 F B A, @R0 E E7 E6 E5 E4 E3 E2 E1 E0 ACC dụnchỉ g tức thời để di chuyể Lệnh đầRAM u dùnđa g đòa vàoPSW ghi R0, D D trò D 5FH D – D D D Dn giá n4dữ liệ u “đượ lệnh thứ hai dùng đòa trực tiếp để 0di chuyể c trỏ R0” vào – – – BC BB B B9 B8 IP 30 B ghi tích lũy A 2F 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 B B7 B6 B5 B4 B3 B2 B1 B0 P3 E 6F 6E 6D 6C 6B 6A 69 68 66 65 64 63 62 61 60 67 A AF – – A A A A9 A8 IE D C B A 5D 5C 5B 5A 59 58 C 5F 5E A A7 A6 A A4 A3 A2 A1 A0 P2 B 57 56 55 54 53 52 51 50 A 4F 4E 4D 4C 4B 4A 49 48 29 46 45 44 43 42 41 40 khô n g đòa hóa bit SBUF 47 99 28 3D 3C 3B 3A 9D 9C 9B 9A 99 98 SCON 39 38 98 9F 9E 27 3F 3E 26 37 36 35 34 33 32 31 30 90 97 96 95 94 93 92 91 90 P1 25 2F 2E 2D 2C 2B 2A 29 28 26 25 24 23 22 21 20 27 24 không đòa hóa bit TH1 23 1F 1E 1D 1C 1B 1A 19 18 không đòa hóa bit TH0 22 17 16 15 14 13 12 11 10 D không đòa hóa bit TL1 21 0F 0E 0D 0C 0B 0A 09 08 C không đòa hóa bit TL0 07 06 05 04 03 02 07 00 B 20 1F Bank 89 không đòa hóa bit TMOD A 88 8F 8E 8D 8C 8B 8A 89 88 TCON 18 Bank 17 87 không đòa hóa bit PCON 10 Bank 0F 83 không đòa hóa bit DPH 08 82 không đòa hóa bit DPL 07 Bank ghi 81 không đòa hóa bit SP 00 (mặc đònh cho R0-R7) 80 87 86 85 84 83 82 81 80 P0 RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Tóm tắt nhớ liệu chip Bit Ký hiệu Ý nghóa Bit gấp đôi tốc đọ baud, set tốc độ baud tăng gấp đôi mode 1,2 port nối tiếp 6 – Không đònh nghóa timer2:Không đònh nghóa Xác lập MODE – SMOD RCLK– + TCLK CP/ KhônRL g 2đònhTR2 nghóa MODE GF10 GF0 PD0 Bit cờ đa dụng1 16-Bit Auto-Reload Bit cờ đa dụng công suấ t, set 16-Bit Capture Giảm để kích hoạt mode t, Rate thoát reset X giảm cô1ng suấBaud Generator IDL Mode chờ, set để kích hoạt mode chờ, X t reset hệ (Off) thoáXt có ngắ thống TFx : ( Timer flag) : cờ tràn timer x : đếm bò tràn TF x =1 ( sau tràn phải xóa 0) 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 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 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 : V BẢO VỆ BỘ NHỚ : Các bit khoá nhớ chương trình Vi điều khiển AT89C52 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ế độ LB LB LB3 Kiểu bảo vệ U U U Không khoá chương trình P U U 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 UNhư 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 VI HOẠT ĐỘNG CỦA PORT NỐI TIẾP: 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 TXD RXD (P3.1) (P3.0) D SBUF CLK Q Thanh ghi dòch (chỉ ghi) Xung nhòp tốc độ baud (phát) Xung nhòp tốc độ baud (thu) SBUF (chỉ đọc) Bus nội 8051/8031 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ạng 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 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 SCON.7 SCON.6 SCON.5 SM0 SM1 SM2 9FH 9EH 9DH SCON.4 REN 9CH SCON.3 TB8 9BH SCON.2 SCON.1 RB8 TI 9AH 99H SCON.0 RI 98H Mô tả Bit chế độ port nối tiếp Bit chế độ port nối tiếp 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 Cho phép thu phải đặt lên để thu (nhận) ký tự Bit phát, bit thứ phát chế độ 3; đặt xóa phần mềm Bit thu, bit thứ thu Cờ ngắt phát Đặt lên kết thúc phát ký tự; xóa phần mềm 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 SM1 Chế độ 0 1 1 Mô tả Thanh ghi dòch UART bit UART bit UART bit Tốc độ baud Cố đònh (FOSC /12) Thay đổi (đặt timer) Cố đònh (FOSC chia cho 12 64) Thay đổi (đặt timer) Các chế độ port nối tiếp 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 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 dòch đơn giản a) 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 Một chu kỳ máy S1 P1 OS C AL E Dữ liệu xuất Clock dòch S2 P2 P1 S3 P2 P1 S4 P2 P1 S5 P2 P1 S6 P2 P1 P2 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) D0 D0 D0 D0 D0 D0 D0 D0 Clock dòch (TXD) Giản đồ 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) 8051 RXD (P3.0) Clock Dữ liệu Thanh ghi dòch Chế độ ghi dòch port nối tiếp b) 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 chọn qua phần mềm ÷ 16 16 × tốc độ baud Xung nhòp tốc độ baud Thanh ghi dòch port nối tiếp Tạo xung nhòp port nối 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 TX D bit start TI (SCON.1) tốc độ D0 D1 D2 baud D3 D4 D5 D6 D7 bit stop 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ạp á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) c) 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 d) 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 (có đònh chế độ 2, thay đổi chế độ 3) số bit liệu (8 chế độ 1, chế độ 3) Khởi động truy xuất ghi cổng nối tiếp: a) Cho phép thu: Bit cho phép thu (REN = Receiver Enable) SCON phải đặt lên phần mềm phép thu ký tự Thông thường thực việc đầ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) b) Bit liệu thứ 9: 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ý) c) 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ểm 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 ; Đặt bit parity chẵn vào cờ C CPL 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 ACC.7 PMOV C, P ; bảo đảm MSB xóa ; parity chẵn MOV ACC.7, C ; Đặt parity chẵn vào MSB MOV SBUF, A ; Gởi ký tự bit liệu cộng prity chẵn d) 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 : CLR MOV JNB RI, WAIT ; Kiểm tra RI = 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 : CLR TI JNB TI, WAIT ; Kiểm tra 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 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 ÷ 12 xung nhòp tốc độ baud a) chế độ ÷ 64 dao động chip ÷ 32 SMOD = SMOD = xung nhòp tốc độ baud b) chế độ ÷ 32 dao động chip ÷ 16 SMOD = SMOD = c) chế độ xung nhòp tốc độ baud 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 ; Lấy giá trò thời PCON SETB ACC.7 MOV ; Đặt bit (SMOD) lên PCON, A ; 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 hò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.059 MHz : Tốc độ baud 9600 2400 1200 19200 9600 2400 1200 Tần số thạch anh 12.000 MHz 12.000 MHz 12.000 MHz 11.059 MHz 11.059 MHz 11.059 MHz 11.059 MHz SMOD Giá trò nạp lại Tốc 0 0 vào TH1 –7 (F9H) –13 (F3H) –26 (E6H) –3 (FDH) –3 (FDH) –12 (F4H) –24 (E8H) độ Sai số baud thật 8923 7% 2404 0.16% 1202 0.16% 19200 9600 2400 1200 Bảng tóm tắt tốc độ baud [...]... Các bit khoá bộ nhớ chương trình Vi điều khiển AT89C52 có 3 bit khoá có thể bỏ không lập trình (U) hoặc được lập trình (P) để nhận các đặc trưng thêm vào được liệt kê trong bảng dưới đây (với LB1, LB2, LB3 là các bit khóa tương ứng) Chế độ LB 1 LB 2 LB3 Kiểu bảo vệ 1 U U U Không khoá chương trình 2 P U U Các lệnh MOVC được thi hành từ bộ nhớ chương trình ngoài bò cấm khi lấy các byte mã từ bộ nhớ nội,... 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ệ (trên RXD) 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 và trở về mức cao ở S6P1 Một chu kỳ máy S1 P1 OS C AL E Dữ liệu xuất Clock dòch S2 P2 P1 S3 P2 P1 S4 P2 P1 S5 P2 P1 S6 P2 P1 P2 Bit dữ 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)... 8051/8 031 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/8 031 để 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 8 ngõ ra TXD (P3.1) 8051 RXD (P3.0) Clock Dữ liệu Thanh ghi dòch Chế độ thanh ghi dòch của port nối tiếp b) UART 8 bit với tốc độ baud thay đổi được (chế độ 1) Ở chế độ 1, port nối tiếp của 8051/8 031 làm... sau mỗi lần tràn Việc này sẽ được thực hiện trong chương trình phục vụ ngắt Một chọn lựa khác là cấp xung nhòp cho Timer 1 từ ngoài dùng T1(P3.5) Và luôn luôn tốc độ baud là tốc độ tràn của Timer 1 được chia cho 32 (hoặc cho 16, nếu SMOD = 1) Công thức tổng quát để xác đònh tốc độ baud trong các chế độ 1 và 3 là : Tốc độ baud = Tốc độ tràn của Timer 1 ÷ 32 Ví dụ, muốn làm việc với tốc độ baud là 1200... 2400 1200 Tần số thạch anh 12.000 MHz 12.000 MHz 12.000 MHz 11.059 MHz 11.059 MHz 11.059 MHz 11.059 MHz SMOD Giá trò nạp lại Tốc 1 0 0 1 0 0 0 vào TH1 –7 (F9H) – 13 (F3H) –26 (E6H) 3 (FDH) 3 (FDH) –12 (F4H) –24 (E8H) độ Sai số baud thật 89 23 7% 2404 0.16% 1202 0.16% 19200 0 9600 0 2400 0 1200 0 Bảng tóm tắt tốc độ baud ... độ 2 là 1 /32 hoặc 1/16 tần số dao động trên chip d) 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 dữ liệu (8 trong chế độ 1, 9 trong các chế độ 2 và 3) 4 Khởi... lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có đòa chỉ bit là có hiệu quả 1 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 Đòa chỉ PSW.7 PSW.6 PSW.5 PSW.4 PSW .3 CY AC F0 RS1 RS0 D7H D6H D5H D4H D3H PSW.2 PSW.1 PSW.0 OV – P D2H D1H D0H Ý nghóa Cờ nhớ Cờ nhớ phụ Cờ 0 Bit 1 chọn bank thanh... Timer 1 ÷ 32 Ví dụ, muốn làm việc với tốc độ baud là 1200 baud, thì tốc độ tràn của Timer 1 phải là : 1200 × 32 = 38 .4 KHz Nếu dùng thạch anh 12 MHz, Timer 1 được cấp xung nhòp 1 MHz hay 1000 KHz Vì tốc độ tràn của Timer 1 là 38 .4 KHz và timer được cấp xung hòp 1000 KHz, thì cần tràn sau 1000 ÷ 38 .4 = 26.04 xung nhòp (làm tròn là 26) Vì timer đếm lên và tràn xảy ra khi có sự thay đổi từ FFH xuống 00H... 8051/8 031 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ trên một dã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... để 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 chỉ đọc để thu CLK TXD RXD (P3.1) (P3.0) D SBUF CLK Q Thanh ghi dòch (chỉ ghi) Xung nhòp tốc độ baud (phát) Xung nhòp tốc độ baud (thu) SBUF (chỉ đọc) Bus nội 8051/8 031 Thanh ghi điều khiển port nối tiếp (SCON) ở đòa chỉ 98H là thanh ghi có đòa chỉ bit chứa các bit trạng thái và các bit điều khiển ... A3 A2 A1 A0 P2 B 57 56 55 54 53 52 51 50 A 4F 4E 4D 4C 4B 4A 49 48 29 46 45 44 43 42 41 40 khô n g đòa hóa bit SBUF 47 99 28 3D 3C 3B 3A 9D 9C 9B 9A 99 98 SCON 39 38 98 9F 9E 27 3F 3E 26 37 36 ... 36 35 34 33 32 31 30 90 97 96 95 94 93 92 91 90 P1 25 2F 2E 2D 2C 2B 2A 29 28 26 25 24 23 22 21 20 27 24 không đòa hóa bit TH1 23 1F 1E 1D 1C 1B 1A 19 18 không đòa hóa bit TH0 22 17 16 15 14 13. .. đổi P3.0 RXD Port nhập nối tiếp P3.1 TXD Port xuất nối tiếp P3.2 INT0 Ngắt bên P3 .3 INT1 Ngắt bên P3.4 T0 Ngõ vào Timer/Counter P3.5 T1 Ngõ vào Timer/Counter P3.6 WR Xung ghi nhớ liệu P3.7 RD

Ngày đăng: 28/11/2015, 06:26

TỪ KHÓA LIÊN QUAN

w