Bộ lao động thương binh xà hội Trường đại học sư phạm kỹ thuật nam định KHOA ĐIệN - đIệN Tử chủ biên: phạm xuân Bách Giản quốc anh Tập giảng Vi xử lý nam định, năm 2012 Bài giảng môn học: Vi xử lý1 Mc lc LI MỞ ĐẦU Ch¬ng 1: KiÕn tróc hƯ vi xư lý 1.1 Tỉ chøc hƯ Vi xư lý 1.1.1 M¸y vi tÝnh 1.1.2 LÞch sư ph¸t triĨn cđa c¸c bé vi xư lý 1.2 S¬ ®å khèi cđa hƯ vi xư lý 1.3 Chức khối 1.3.1 Đơn vị xư lý trung t©m 1.3.2 Bé nhí trung t©m 1.3.3 Thiết bị xuất nhập thông tin 1.3.4 HÖ thèng Bus Câu hỏi tËp ch¬ng Ch¬ng 2: Bé vi xö lý 80x86 Intel 10 2.1 CÊu tróc bªn hoạt động vi xử lý 80x86 10 2.1.1 Giíi thiƯu vỊ bé vi xö lý Intel 80x86 10 2.1.2 Giíi thiƯu vỊ cÊu tróc bªn cđa vi xư lý 8086 11 2.2 Các chế độ định địa vi xö lý 80x86 22 2.3 C¸ch m· ho¸ lƯnh cđa bé vi xư lý 80x86 24 2.4 TËp lƯnh cđa bé vi xư lý 80x86 25 2.4.1 Nhãm lÖnh sè häc 25 2.4.2 Nhãm lÖnh logic: 28 2.4.3 Nhãm lƯnh di chun: 32 2.4.4 Nhóm lệnh so sánh rẽ nhánh chương trình: 35 2.4.5 Nhãm lƯnh xư lý toán hạng bít: 37 2.5 Chu tr×nh thùc hiƯn lƯnh 37 2.5.1 Chu kú bus ®äc: 38 2.5.2 Chu tr×nh ghi: 39 2.5.3 Chu kú nhËn vµ thùc hiÖn lÖnh 39 Câu hỏi tập chương 41 Chương 3: Lập trình hợp ngữ cho hệ vi xö lý 42 3.1 Các thành phần chương trình hợp ngữ 43 3.1.1 Bé ký tù, tõ kho¸, nh·n 43 3.1.2 CÊu trúc dòng lệnh hợp ngữ 43 3.1.3 Các dẫn khai báo chương trình hợp ngữ 44 3.1.4 BiÕn vµ h»ng 46 i Tập giảng Vi xử lý1 3.1.5 Khung chương trình hợp ngữ: 48 3.2 Các cấu trúc lập trình hợp ngữ 50 3.2.1 CÊu tróc tn tù 50 3.2.2 CÊu tróc lỈp 50 3.2.3 CÊu tróc lùa chän 53 3.3 Các bước lập trình máy tính 55 3.3.1 Soạn thảo chương trình 60 3.3.2 Dịch liên kết chương trình 62 3.3.3 Mô chạy chương trình 65 3.4 Ví dụ tập lập trình cho vi xử lý 8086 70 Câu hỏi tập ch¬ng 74 Ch¬ng 4: GhÐp nèi bé nhí tổ chức vào liệu cho 80x86 75 4.1 Giới thiệu mạch phụ trỵ cho 80x86 75 4.1.1 Mạch tạo xung nhịp 8284 75 4.1.2 Mạch điều khiển bus 8288 76 4.2 GhÐp nèi 80x86 víi bé nhí 78 4.2.1 Giới thiệu loại nhí b¸n dÉn 78 4.2.2 Giải mà địa nhớ 81 4.2.3 GhÐp nèi 80x86 víi bé nhí 82 4.3 GhÐp nèi 80x86 với thiết bị ngoại vi 86 4.3.1 Các phương pháp điều khiển vào liệu 86 4.3.2 Giải mà địa cho thiết bị vào 86 4.3.3 Mạch định thời 8254 86 4.3.4 Mạch ghép nối vào song song lập trình 8255A 89 d ChÕ ®é (mode 2): Chế độ vào/ra chiều 95 4.3.5 Mạch ghép nối vào nèi tiÕp 8251A 96 4.4.Truy nhËp trùc tiÕp bé nhí DMA 97 4.4.1.Nguyªn t¾c DMA 97 4.4.2 C¸c bíc thùc hiƯn DMA cña 80x86 97 4.4.3 Bé ®iỊu khiĨn DMA 8237 99 C©u hái tập chương 100 Chương 5: Ngắt xử lý ngắt cho 80x86 101 5.1 Giíi thiƯu chung vỊ ng¾t 101 5.2 Phân loại ngắt 101 5.2.1 Ng¾t cøng 101 5.2.2 Ng¾t mỊm 102 5.2.3 Nhóm tượng ngoại lệ: 102 ii Tập giảng Vi xử lý1 5.3 Xử lý CPU có yêu cầu ngắt 102 5.4 Xư lý u tiªn ng¾t 104 5.5 GhÐp nèi CPU víi chip điều khiển ưu tiên ngắt 8259A 104 5.5.1 Các khối chức 8259A 105 5.5.2.C¸c tÝn hiƯu cđa 8259A: 106 Câu hỏi tập chương 114 Chương 6: Vi điều khiển 8051 115 6.1 CÊu tróc Vi ®iỊu khiĨn 8051 115 6.1.1 Giíi thiƯu vỊ vi ®iỊu khiĨn: 115 6.1.2 Sơ đồ cấu trúc 117 6.1.3 Các thông số 118 6.2 Tỉ chøc bé nhí cđa 8051 118 6.2.1 Bé nhí RAM 118 6.2.2 Bé nhí ROM 120 6.2.3 Các ghi chức đặc biệt (SFR- Special Funtion Registors) 120 6.3 Các chế độ ®Þnh ®Þa chØ cđa 8051 121 6.3.1.Chế độ định địa tức thêi 121 6.3.2 Chế độ định địa ghi 122 6.3.3 Chế độ định địa trực tiếp 122 6.3.4 ChÕ ®é định địa gián tiếp 122 6.3.5 Chế độ định địa chØ chØ sè 122 6.4 TËp lƯnh cđa 8051 123 6.4.1 Nhãm lƯnh di chun d÷ liƯu 123 6.4.2 Nhãm lÖnh logic 124 6.4.3 Nhãm lÖnh sè häc 126 6.4.4 Nhóm lệnh rẽ nhánh chương trình 126 6.4.5 Nhãm lƯnh xư lý toán hạng bit 128 6.5 Lập trình điều khiển cổng làm chức vào 129 6.5.1 Giới thiệu cổng vào song song cđa vi ®iỊu khiĨn 8051 129 6.5.2 Lập trình cho cổng vi điều khiển làm chức đầu 130 6.5.3 Lập trình cho cổng vi điều khiển làm chức đầu vào 133 6.6 Lập trình ®iỊu khiĨn khèi timer/counter 136 6.6.1 Giíi thiƯu vỊ c¸c bé timer cđa vi ®iỊu khiĨn 8051 137 6.6.2 Các ghi tác động lên Timer 138 6.6.3 Mô tả hoạt động Timer 139 6.6.4 LËp tr×nh cho Timer cđa 8051 chức đếm 140 6.6.5 Lập trình cho vi điều khiển chức định thời 144 iii Tập giảng Vi xử lý1 6.7 Lập trình ®iỊu khiĨn ng¾t 146 6.7.1 Giới thiệu hoạt động ngắt ngắt vi điều khiển 146 6.7.2 Các ghi tác động lên ngắt 147 6.7.3 Lập trình với ngắt Timer 148 6.7.4 LËp tr×nh víi ngắt 152 6.8 Lập trình điều khiển cổng nối tiÕp 157 6.8.1 Các sở truyền thông nối tiếp 157 6.8.3 Truyền thông nối tiếp vi điều khiển 8051 161 6.8.3 LËp tr×nh cho vi điều khiển trao đổi liệu nối tiếp với PC 167 Câu hỏi tËp ch¬ng 170 Ch¬ng 7: ThiÕt kÕ hƯ vi xư lý chuyªn dơng 173 7.1 Quy trình thiÕt kÕ hƯ vi xư lý chuyªn dơng 173 7.1.1 Quy trình phát triển hệ thống 173 7.1.2 Phân tích yêu cầu xây dựng sơ đồ khối hệ thống 173 7.1.3 Thiết kế phần cứng phần mềm 173 7.1.4 Thực thi hệ thống kiểm thử 174 7.2 Thiết kế hệ vi xử lý chuyên dụng sử dụng vi điều khiển 8051 174 7.2.1 Điều kiện làm việc vi điều khiển 8051 174 7.2.2 Thiết kế mạch hiển thị thời gian thực sử dng DS12887 175 Câu hỏi tËp ch¬ng 201 TÀI LIỆU THAM KHẢO 203 iv Tập giảng Vi xử lý1 LI M ĐẦU Trong chục năm qua, họ vi xử lý phát triển nhanh chóng tạo thay đổi lớn cách thức người xử lý công việc Từ cơng việc văn phịng đến cơng việc sản xuất cơng nghiệp, thơng tin, liên lạc vai trị hệ vi xử lý ngày thể rõ ràng đóng vai trị quan trọng Vi xử lý xuất máy tính, thiết bị cá nhân điện thoại di động, thiết bị gia dụng máy giặt, điều hòa, v.v, thiết bị điều khiển công nghiệp Phù hợp với mục đích ứng dụng khác nhau, vi xử lý phát triển theo hướng khác mà điển hình chip vi xử lý mục đích chung, chip vi điều khiển chip xử lý tín hiệu số Học phần Vi xử lý học phần sở ngành đào tạo Công nghệ ĐiệnĐiện tử, Cơng nghệ Tự động hóa khoa Điện-Điện tử trường ĐH Sư phạm Kỹ thuật Nam Định Đào tạo theo học chế tín chỉ, thời gian tự học sinh viên chiếm lượng thời gian lớn, nhằm cung cấp cho sinh viên tài liệu có tính hệ thống phục vụ q trình tự học, chúng tơi biên soạn tập giảng học phần Vi xử lý gồm cuốn: Vi xử lý Vi xử lý Mục tiêu học phần trang bị cho sinh viên kiến thức kiến trúc hệ vi xử lý, quy trình làm việc lập trình điều khiển hoạt động hệ vi xử lý Trên sở đó, sinh viên có khả thiết kế phần cứng, viết phần mềm điều khiển hệ vi xử lý chuyên dụng dựa IC vi xử lý vi điều khiển thông dụng Với phát triển nhanh chóng dịng vi xử lý, hãng sản xuất khác nhau, mức độ ngày tinh vi, phức tạp việc tiếp cận mơn học câu hỏi lớn Với mục đích cung cấp cho người học kiến thức hệ vi xử lý, lựa chọn vi xử lý 8086 hãng Intel để giới thiệu với người đọc Mặc dù khơng cịn sản xuất, dòng vi xử lý sau Intel tương thích với vi xử lý Các vi xử lý Intel xuất rộng rãi máy tính cá nhân, cho phép sinh viên có cơng cụ thuận lợi để tìm hiểu, thử nghiệm, kiểm tra hoạt động hệ vi xử lý Khác với sinh viên ngành học công nghệ thông tin, đối tượng sinh viên ngành Điện-Điện tử thường điều khiển thiết bị địi hỏi kết hợp phần cứng phần mềm Để xây dựng thiết bị vi xử lý, đòi hỏi phải thiết kế phần cứng tương đối phức tạp bao gồm tổ chức nhớ, phối ghép vào Điều khó khăn với người tiếp cận mơn học để tạo sản phẩm hồn chỉnh Trong trường hợp này, ứng dụng vi điều khiển có nhiều thuận lợi Vi điều khiển hệ vi xử lý đóng gói chip với thnh phn bờn ngoi ti v Tập giảng Vi xư lý1 thiểu để hoạt động Do đó, vi điều khiển công cụ thực hành hiệu cho phép sinh viên hiểu hoạt động hệ vi xử lý đồng thời áp dụng kiến thức học vào sản phẩm thực tế Điều giúp sinh viên có thêm niềm hứng thú học hỏi mơn học góp phần kết hợp chặt chẽ lý thuyết thực hành Để học học phần hiệu đòi hỏi sinh viên phải kết hợp tìm hiểu lý thuyết làm tập Sinh viên cần cài đặt số môi trường phát triển tích hợp EMU8086, Proteus Keil uVision Pinnacle 52 Tập giảng viết theo chương trình học phần Vi xử lý phê duyệt Trong phần đầu, giới thiệu cấu trúc hệ vi xử lý, nguyên tắc hoạt động hệ vi xử lý, giới thiệu cấu trúc vi xử lý 8086, tập lệnh, cách mã hóa lệnh, chế độ định địa cách viết chương trình cho 80x86 Tiếp theo, chúng tơi trình bày tổ chức nhớ thiết bị ngoại vi, ngắt truy nhập trực tiếp nhớ DMA Trong phần sau, giới thiệu cấu trúc lập trình họ vi điều khiển 8051 Ngắt timer giới thiệu Chương cuối trình bày việc xây dựng hệ vi xử lý chuyên dụng Trong chương với lý thuyết đưa vào ví dụ tập có lời giải Cuối chương có tập củng cố lý thuyết Trong trình biên soạn, cố gắng khơng tránh khỏi sai sót, kính mong giáo q thầy, bạn đọc Nhóm biên soạn vi Bài giảng môn học: Vi xử lý1 Chương 1: Kiến tróc hƯ vi xư lý 1.1 Tỉ chøc hƯ Vi xử lý Bộ vi xử lý có mặt máy vi tính phát triển liên tục cho hệ vi xử lý Để nắm bắt tính kế thừa tính liên tục phát triển trước vào tổ chức hệ vi xử lý ta giới thiệu loại máy tính nói chung 1.1.1 Máy vi tính Như ta đà biết vỊ kiÕn thøc cđa m¸y tÝnh nãi chung, mét m¸y tính (Computer) thông thường bao gồm khối chức như: khối xử lý trung tâm (CPU, Central Processing Unit), bé nhí ( Memmory ) vµ khèi phèi ghép với thiết bị ngoại vi (I/O, Input/Output ) Tuỳ theo quy mô phức tạp khối chức kể mà người ta phân máy đà sử dụng thành loại sau: - Máy tính lớn Máy tính lớn (mainframe) loại máy tính thiết kế để giải toán lớn với tốc độ nhanh Nó thường làm việc với số liệu từ 64 bit lớn trang bị nhớ lớn Chính máy tính lớn kích thước vật lý Chúng thường dùng để điều khiển hệ thống thiết bị dùng quân hệ thống máy móc chương trình nghiên cứu vũ trụ, để xử lý thông tin ngành ngân hàng, ngành khí tượng, công ty bảo hiểm Tiêu biểu cho loại máy tính loại máy IBM 8341, honeywell DSP8 Loại máy lớn máy lớn gọi supercomputer (như loại máy Y-MP/832 Cray) - Máy tính Máy tính (minicomputer) dạng thu nhỏ kích thước tính máy tính lớn Nó đời nhằm thoả mÃn nhu cầu sử dụng máy tính cho ứng dụng vừa phải mà dùng máy tính lớn vào gây lÃng phí Do máy tính thường làm việc với liệu có độ dài từ 32 bit với tốc độ chậm khả nhớ hạn chế Máy tính thường dùng cho tính toán khoa học kỹ thuật, gia công liệu quy mô nhỏ hay để điều khiển quy trình công nghệ Tiêu biểu cho nhóm loại máy VAX 6360 Digital Equipment Corporation MV/8000II cđa Data genaral - M¸y vi tÝnh M¸y vi tính (Microcomputer) loại máy tính thông dụng Một máy vi tính vi điều khiển (microcontroller) Chúng có khả làm việc với số liệu có độ dài bit, bit, bit, 16 bit HiƯn mét sè m¸y vi tính có tính so sánh với máy tính con, làm việc với số liệu có độ dµi tõ lµ 32 bit (thËm chÝ lµ 64 bit) Ranh giới để phân chia máy vi tính máy tính ngày không rõ nét Một đặc điểm tiêu biểu để nhận biết máy vi tính chúng Tập giảng Vi xử lý1 sử dụng xử lý trung tâm (CPU) chế tạo công nghệ mạch vi điện tử với mức độ tổ hợp lớn, mạch VLSI (very large of integration) mà người ta quen gọi bé vi xư lý (microprocessor, P) C¸c bé vi xư lý có tên thị trường thường xếp theo họ phụ thuộc vào nhà sản xuất chúng đa dạng chủng loại Nổi bật họ vi xử lý họ nhà sản xuất hàng đầu tiếng lĩnh vực này, họ vi xử lý 80x86 cđa Intel vµ hä vi xư lý 680xx cđa Motorola 1.1.2 Lịch sử phát triển vi xử lý Ta chia thành hệ qua c¸c thêi kú nh sau: - ThÕ hƯ (1971-1973) Năm 1971, phát triển vi mạch dùng cho máy tính cầm tay, Intel đà cho đời vi xử lý 4004 ( bit ) cña Rockwell International, IPM-16 (16 bit) cña National Semiconductor Đặc điẻm chung vi xử lý hệ là: Độ dài từ thường bit (cũng dài hơn) Công nghệ chế tạo PMOS với đặc điểm mật độ phần tử nhỏ, tốc độ thấp, giá thành rẻ có khả đưa dòng tải nhỏ Tốc độ thực lệnh: 10-16s/lệnh với tần số đồng hồ fclk = 0,1- 0,8 MHz Tập lệnh đơn giản phải cần nhiều mạch phụ trợ tạo nên hệ vi xử lý hoàn chỉnh - Thế hệ (1974-1977) Các vi xử lý đại diện hệ vi xử lý bit 6502 MOS Technology, 6800 vµ 6809 cđa Motorola, 8080 vµ 8085 cđa Intel đặc biệt vi xử lý Z80 Zilog Các vi xử lý có tập lệnh phong phú thường có khả phân biệt địa nhớ với dung lượng đến 64KB Có số vi xử lý có khả phân biệt 256 địa cho thiết bị ngoại vi (họ Intel Zilog) Chúng đà sử dụng rộng rÃi công nghiệp để tạo máy tính bit nỗi tiếng thời Apple II Commodore 64 Tất vi xử lý thời kì sản xuất công nghệ NMOS ( Với mật độ điện tử đơn vị diện tích cao so với công nghệ PMOS ) CMOS ( tiết kiệm điện tiêu thụ) cho phép đạt tốc ®é tõ 1- s/lƯnh víi tÇn sè ®ång hå fclk = 1-5 MHz - ThÕ hÖ (1978 -1982) Các vi xử lý hệ có đại diện vi xử lý 16 bit 8086/80186/80286 Intel 86000/86010 Motorola Một điều tiến hẳn so với vi xử lý bit hệ trước vi xử lý 16 bit có tập lệnh đa dạng với lệnh nhân, lệnh chia lệnh thao tác với chuỗi kí tự Khả phân Tập giảng Vi xử lý1 biệt địa cho nhớ cho thiết bị ngoại vi vi xử lý hệ lớn ( từ 1MB đến 16 MB cho nhớ tới 64 K địa cho thiết bị ngoại vi họ Intel ) Đây vi xử lý dùng máy IBM PC, PC/XT, PC/AT máy Macintosh Apple Phần lớn vi xử lý hệ sản xuất công nghệ HMOS cho phép đạt tốc độ từ 0,1-1s/lệnh với tần số đồng hồ fclk = - 10 MHz Trong thời kì xuất m¸y vi tÝnh bit mét vá nh 8048/49 6805R2 ( mạch có thêm ADC 12 bit cho kênh đầu vào tương tự ) vi điều khiển bit vỏ nh MC 14500B vµ bit vá nh MC 141000 - ThÕ hƯ (1983-1999) C¸c bé vi xử lý đại diện hệ vi xư lý 32 bit 80386/80486 vµ 64 bit Pentium cña Intel 60 - 66MHz, Intel P6 - Pentium Pro 120- 133 MHz, Intel Pentium 150 - 166 - 200 MHz víi c¸c më réng cho multimedia, Intel Pentium II 233 450 MHz, Intel Pentium III 500 - 550 MHz Ngày thông số vi xử lý ngày cải thiện: tốc độ ngày cao ( vi xử lý đại INTEL đà đạt tới tốc độ 800 MHz - 3GHz, độ rộng kênh thông tin liệu ngày lớn như: 32, 64 bit Điều đà giúp cho toán thiết kế hệ vi xử lý chuyên dụng với tính rộng lớn trở nên dễ dàng Song song với hệ vi xử lý hÃng INTEL, hÃng Motola đưa vi xử lý 32 bit 68020/68030/68040 vi xử lý 64 bit 68060/64 Ngày tốc độ vi xử lý đại hÃng MOTOROLA đạt 3GHz Đặc điểm vi xử lý hệ có số lượng transistor lớn (từ vài triệu đến 50 triệu transistor ) Phần lớn bé vi xư lý míi thùc hiƯn c¸c lƯnh chu kỳ, thực tế tất chúng có đơn vị xử lý dấu phẩy động FPU (Floating - Point Unit) bên Chúng có ghi chung 16 - 32 bit Nhiều loại có phân biệt tệp nghi 32 bit (register file) cho đơn vị nguyên IU (interger unit ) tệp ghi 32 bit cho FPU Chóng cã Cache memory bªn với dung lượng lên tới 36 KB Đa số Cache memory bên phân đôi: dùng cho lệnh Icache dùng cho liệu Dcache Các vi xử lý công nghệ cao (Advanced Microprocessors) đà thoả mÃn yêu cầu chế tạo máy tính lớn (mainframes) siêu máy tính ( supercomputers) Các vi xử lý thời có bus địa 32 bit (phân biệt GB nhớ) có khả làm việc với nhớ ảo Người ta áp dụng chế cấu trúc đà sử dụng máy tính lớn vào bé vi xư lý: c¬ chÕ xư lý xen kÏ liên tục dòng mà lệnh (pipeline), nhớ cache (bộ nhớ ẩn ), nhớ ảo Các vi xử lý có quản lý nhớ (MMU) nhiều đồng xử lý toán học bên Chính nhờ cải tiến mà vi xử lý hệ có khả cạnh tranh với máy tính nhỏ Tập giảng Vi xử lý1 S nguyờn lý mạch vi điều khiển Hình 7.11 Sơ đồ nguyên lý mạch vi điều khiển c Lưu đồ giải thuật chương trình Chương trình làm nhiệm vụ xác lập điều kiện đầu hệ thống bao gồm xác lập cổng vào/ra, chế độ hoạt động Realtime, gọi chương trình đọc chuyển đổi liệu sang mó led on, hin th 189 Tập giảng Vi xư lý1 Hình 7.12 Lưu đồ thuật tốn chương trình Xác lập chế độ hoạt động realtime DS12887: - Cho phép ghi 14 byte thấp DS12887: bit SET ghi B đặt 1, cho phép realtime cập nhật sau giây SET=0 - Không xuất xung tai chân SQW - Cho phép realtime hoạt động - Định dạng thời gian 24 , định dạng liệu kiểu BCD reg_a.4-reg_a.6=010 Hàm xác lập điều kiện hoạt động cho DS12887: hoạt động chế độ 24 giờ, định dạng liệu kiểu BCD xac_lap_ds12887: mov dptr,#11 ;dia chi cua ghi B mov a,#10000000b ;xac lap thoi gian cho ds12887: movx @dptr,a ;ghi vao ghi B 190 Tập giảng Vi xử lý1 mov dptr,#10 ;truy nhap vao ghi A cua DS12887 mov a,#10100000b movx @dptr,a ;xac lap che hoat dong: 24 gio (B.1=1) ;dinh dang du lieu kieu BCD(B.2=0) mov dptr,#11 mov a,#00011010b movx @dptr,a ret Lưu đồ giải thuật chương trình đọc Realtime DS12887 chuyển đổi từ mã BCD sang mã led đoạn Dữ liệu đọc từ realtime tồn dạng mã BCD, chuyển đổi sang mã led đoạn để hiển thị 191 TËp giảng Vi xử lý1 Bt u Con tr a chỉ=0 Đọc đơn vị thời gian trỏ trỏ địa Lấy bit thấp đơn vị thời gian đọc Chuyển bit thấp từ BCD sang mã đoạn Cất giữ Lấy bit cao đơn vị thời gian đọc Chuyển bit cao từ BCD sang mã đoạn Cất giữ Tăng trỏ địa Đúng Con trỏ địa chỉ