Chương 19: VI XỬ LÝ TRONG ĐIỀU KHIỂN Vào năm 1971 tập đoàn Intel đã giới thiệu 8080, bộ vi xử lý (micro-processor) thành công đầu tiên. Sau đó không lâu Motorola, RCA, kế đến là MOS Thechnology và Zilog đã giới thiệu bộ vi xử lý tương tự: 6800, 1801, 6502 và Z80ø. Bản thân các vi mạch (IC: integrated circuit) này tuy không có nhiều hiệu quả sử dụng nhưng khi là một phần của máy tính đơn board (single-board computer) chúng trở thành phần trung tâm trong các sản phẩm có ích dùng để nghiên cứu và thiết kế. Các máy tính đơn board này, trong đó có D2 của Motorola, KIM-1 của MOS Technology và SDK-85 của Intel là đáng nhớ nhất, đã nhanh chóng xâm nhập vào các phòng thí nghiệm thiết kế của trường trung học, trường đại học và các công ty điện tử. Vào năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương tự như bộ vi xử lý và là chip đầu tiên trong họ vi điều khiển MCS-48. 8748 là một vi mạch chứa trên 17000 transistor bao gồm một CPU, 1K byte EPROM, 64 byte RAM, 27 chân xuất nhập và một bộ đònh thì 8- bit. IC này và các IC khác tiếp theo của họ MCS-48 đã nhanh chóng trở thành chuẩn công nghiệp trong các ứng dụng hướng điều khiển (control-oriented application). Việc thay thế các thành phần cơ điện trong các sản phẩm như máy giặt và các bộ điều khiển đèn giao thông là những ứng dụng phổ biến ban đầu. Các sản phẩm khác mà trong đó bộ vi điều khiển được tìm thấy bao gồm xe ô tô, thiết bò công nghiệp, các sản phẩm tiêu dùng và các ngoại vi của máy tính (bàn phím của IBM-PC là một thí dụ sử dụng bộ vi điều khiển trong các thiết kế tối thiểu thành phần). Độ phức tạp, kích thước và khả năng của bộ vi điều khiển được tăng thêm một bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ vi điều khiển đầu tiên của họ vi điều khiển MCS-51. So với 8048, chip 8051 chứa trên 60000 transistor bao gồm 4K byte ROM, 128 byte RAM, 32 đường xuất nhập, một port nối tiếp và 2 bộ đònh thì 16-bit, một lượng mạch đáng chú ý trong một IC đơn. Các thành viên mới được thêm vào cho họ MCS-51 và các biến thể ngày nay gần như có gấp đôi đặc trưng này. Tập đoàn Siemens, nguồn sản xuất thứ hai các bộ vi điều khiển thuộc họ MCS-51 cung cấp chip SAB80515, một cải tiến của 8051 chứa trong một vỏ 68 chân, có 6 port xuất nhập 8-bit, 13 nguồn tạo ra ngắt và một bộ biến đổi A/D 8-bit với 8 kênh ngõ vào. Họ 8051 là một trong những họ điều khiển 8-bi t mạnh và linh hoạt nhất, đã trở thành bộ vi điều khiển hàng đầu trong những năm gần đây. Ở đề tài này em sử dụng chip vi điều khiển (có thể gọi là chip vi xử lý do ít thói quen. Mặt khác, hiện nay ít có sự phân đònh rõ giữa hai thuật ngữ này) AT 8951, đây cũng thuộc MCS –51. Về cơ bản cấu tạo của AT9851 cũng giống như 8051, nhưng AT9851 là một hệ vi tính 8-bit đơn chip CMOS có hiệu suất cao, công suất nguồn tiêu thụ thấp và có 4K byte bộ nhớ ROM Flash xóa được/lập trình được. Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao của Atmel. 8.2.1 Tóm tắt phần cứng AT8951 Chip AT 8951 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp MCS-51. Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung quy ước. Bằng cách kết hợp một CPU linh hoạt 8-bit với Flash trên một chip đơn thể, Atmel 89C51 là một hệ vi tính 8-bit đơn chip mạnh cho ta một giải pháp có hiệu quả và rất linh hoạt đối với các ứng dụng điều khiển. AT8951 có các đặc trưng chuẩn sau: 4K byte ROM Flash. 128 byte RAM. 32 đường xuất nhập. Hai bộ đònh thời/đếm 16-bit. Một cấu trúc ngắt hai mức ưu tiên và 5 nguyên nhân ngắt. Một port nối tiếp song công. Mạch dao động và tạo xung clock trên chip. Ngoài ra AT8951 được thiết kế với logic tónh cho hoạt động có tần số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ đònh thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hóa các hoạt động khác của chip cho đến khi có reset cứng tiếp theo. 8.2.1.1 Cấu hình chân ra: Vcc chân cung cấp nguồn. GND chân nối đất (0V). Port 0 Port 0 là port xuất nhập 8-bit hai chiều cực D hở. Khi làm nhiệm vụ là port xuất, mỗi chân của port có thể hút dòng của 8 ngõ vào TTL. Khi các logic 1 được ghi vào các chân của port 0, các chân này có thể được sử dụng làm các ngõ vào có tổng trở cao. Port 0 còn được cấu hình làm bus đòa chỉ (byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài. Trong chế độ đa hợp này, port 0 có các điện trở kéo lên bên trong. Port 0 cũng nhận các byte mã trong khi lập trình cho Flash và xuất các byte mã trong khi kiểm tra chương trình. Các điện trở kéo lên bên ngoài được cần đến trong khi kiểm tra chương trình. Port 1 Port1 là port xuất nhập 8-bit hai chiều có các điện trở kéo lên bên trong. Các bộ đệm xuất của port 1 có thể hút và cấp dòng với 4 ngõ vào TTL. Khi các logic 1 được ghi lên các chân của port1, các chân này được kéo lên mức cao bởi các điện trở kéo lên bên trong và có thể được sử dụng như các ngõ vào. Khi làm nhiệm vụ của port nhập, các chân của port 1 đang được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong. Port1 cũng nhận byte đòa chỉ thấp trong thời gian lập trình cho Flash và kiểm tra chương trình. Port 2 Port 2 của port xuất nhập 8-bit hai chiều có các điện trở kéo lên bên trong. Các bộ đệm xuất của port 2 có thể hút và cấp dòng cho với 4 ngõ vào TTL. Khi các logic 1 được ghi lên các chân port 2, các chân này được kéo lên mức cao bởi các điện trở kéo lên bên trong và có thể được sử dụng như các ngõ vào. Khi làm nhiệm vụ của port nhập, các chân của port 2 đang được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong. Port 2 tạo ra các byte cao của bus đòa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các đòa chỉ 16-bit (MOVX @DPTR). Trong ứng dụng này, port 2 sử dụng các điện trở kéo lên bên trong khi phát các bit 1. Trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các đòa chỉ 8-bit (MOVX @Ri), port 2 phát các nội dung của thanh ghi chức năng đặc biệt P2. Port 2 cũng nhận các bit đòa chỉ cao và vài tín hiệu điều khiển trong thời gian lập trình cho Flash và kiểm tra chương trình. Port 3 Port 3 là port xuất nhập 8-bit hai chiều có các điện trở kéo lên bên trong. Các bộ đệm xuất của port 3 có thể hút và cấp dòng với 4 ngõ vào TTL. Khi các logic 1 được ghi lên các chân port 3, các chân này được kéo lên mức cao bởi các điện trở kéo lên bên trong và có thể được sử dụng như các ngõ vào. Khi làm nhiệm vụ của port nhập, các của port 3 đang được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong. Port 3 còn được sử dụng làm các chức năng khác của AT8951 các chức năng này được liệt kê như sau: Chân của port Chức năng P3.0 RxD (ngõ vào của port nối tiếp). P3.1 TxD (ngõ ra của port nối tiếp). P3.2 0 INT (ngõ vào ngắt ngoài 0). P3.3 1 INT (ngõ vào ngắt ngoài 1). P3.4 T0 (ngõ vào bên ngoài của bộ đònh thời 0). P3.5 T1 (ngõ vào bên ngoài của bộ đònh thời 1). P3.6 WR (điều khiển ghi bộ nhớ dữ liệu ngoài). P3.7 RD (điều khiển đọc bộ nhớ dữ liệu ngoài). Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và kiểm tra chương trình. RST Ngõ vào reset. Mức cao trên chân này trong hai chu kỳ máy trong khi bộ dao động đang hoạt động sẽ reset AT8951. ALE/PROG Xung của ngõ ra cho phép chốt đòa chỉ ALE (address latch enable) cho phép chốt byte thấp của đòa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân này cũng được dùng làm ngõ vào xung lập trình ( PROG ) trong thời gian lập trình cho Flash. Khi hoạt động bình thường, xung của ALE luôn có tần số bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích đònh thời từ bên ngoài và tạo xung clock. Tuy nhiên cần lưu ý là một xung ALE sẽ bò bỏ qua trong mỗi một chu kỳ truy xuất bộ nhớ dữ liệu ngoài. Khi cần, hoạt động cho phép chốt byte thấp của đòa chỉ sẽ được vô hiệu hóa bằng cách set bit 0 của thanh ghi chức năng đặc biệt có đòa chỉ byte là 8EH. Khi bit này được set, ALE chỉ tích cực trong thời gian thực thi lệnh MOVX hoặc MOVC. Ngược lại chân này sẽ được kéo lên mức cao. Việc set bit không cho phép hoạt động chốt byte thấp của đòa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang ở chế độ thực thi chương trình ngoài. PSEN Chân cho phép bộ nhớ chương trình PSEN (program store enable) điều khiển truy xuất bộ nhớ chương trình ngoài. Khi AT8951 đang thực thi chương trình trong bộ nhớ chương trình ngoài, PSEN tích cực hai lần cho mỗi chu kỳ máy, ngoại trừ trường hợp tác động của PSEN bò bỏ qua cho mỗi lần truy xuất bộ nhớ dữ liệu ngoài. EA /Vpp Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable) phải được nối với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vò trí nhớ của bộ nhớ chương trình ngoài, bắt đầu từ đòa chỉ 0000H cho đến FFFFH. Tuy nhiên cần lưu ý là nếu bit khóa 1 (lock bit 1) được lập trình, EA sẽ được chốt bên trong khi reset. EA nên nối với Vcc để thực thi chương trình bên trong chip Chân EA /Vpp còn nhận điện áp cho phép lập trình Vpp trong thời gian lập trình cho Flash, điện áp này cấp cho các bộ phân có yêu cầu điện áp 12V. XTAL1 Ngõ vào đến mạch khuếch đại đảo của mạch dao động và ngõ vào đến mạch tạo xung clock bên trong chip. XTAL2 Ngõ ra từ mạch khuếch đại đảo của mạch dao động. . vi điều khiển được tìm thấy bao gồm xe ô tô, thiết bò công nghiệp, các sản phẩm tiêu dùng và các ngoại vi của máy tính (bàn phím của IBM-PC là một thí dụ sử dụng bộ vi điều khiển trong các thiết. các thiết kế tối thiểu thành phần). Độ phức tạp, kích thước và khả năng của bộ vi điều khiển được tăng thêm một bậc quan trọng vào năm 198 0 khi Intel công bố chip 8051, bộ vi điều khiển đầu. 8-bit, 13 nguồn tạo ra ngắt và một bộ biến đổi A/D 8-bit với 8 kênh ngõ vào. Họ 8051 là một trong những họ điều khiển 8-bi t mạnh và linh hoạt nhất, đã trở thành bộ vi điều khiển hàng đầu trong