Giáo trình Kỹ thuật vi xử lý và lập trình hợp ngữ - Phạm Đức Long

MỤC LỤC

Trang

Chương 1. Giới thiệu chung

1.1 Sự ra đời và phát triển của các bộ vi xử lý 4

1.2 Sơ đồ khối cấu trúc và hoạt động của hệ vi xử lý 4

Chương 2. Bộ nhớ bán dẫn

2.1 Phân loại bộ nhớ 7

2.1.1 Bộ nhớ cố định (ROM, PROM) 7

2.1.2 Bộ nhớ bán cố định (EPROM, EEPROM, FLASH) 8

2.1.3 Bộ nhớ đọc ghi (SRAM, DRAM) 10

2.1.4 Bộ nhớ ngoài 10

2.2 Phân cấp bộ nhớ 10

2.3 Cấu trúc của mạch nhớ tĩnh SRAM

2.3.1 Giới thiệu công nghệ 12

2.3.2 Cấu trúc mạch nhớ SRAM 12

2.3.2.1 Bit nhớ 12

2.3.2.2 Thanh ghi 14

2.3.2.3 Bộ giải mã 15

2.3.2.4 Mạch nhớ SRAM (Các thành phần, quy trình đọc ghi,

biểu đồ thời gian) 18

2.3.3 Thiết kế thẻ nhớ SRAM 18

2.4 Cấu trúc của mạch nhớ DRAM 18

Chương 3. Các bộ vi xử lý và vi điều khiển

3.1 Giới thiệu bộ vi xử lý 8 bit tổng quát 22

3.2 Bộ vi xử lý 8 bit (8086/8088)

3.2.1 Sơ đồ khối bộ vi xử lý 8 bit 22

3.2.2 Các thanh ghi của 8086/88 23

3.2.3 Biểu đồ thời gian của chu kỳ đọc ghi số liệu 26

3.2.5 Ghép nối các chân tín hiệu 8088 28

3.2.6 Hệ lệnh của bộ vi xử lý 8 bit 30

3.3 Giới thiệu các bộ vi xử lý tiên tiến dũng 80x86 77

3.4 Vi điều khiển 8x51/52 77

3.5 Vi điều khiển thế hệ mới AVR

Thỏi Nguyờn 7-2013 1Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động

Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn

BÀI GIẢNG MễN HỌC

VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ

3.5.1. Giới thiệu chung về AVR 92

3.5.2. Bus I2C và SPI 98

3.5.3. AVR 90S8535 101

3.6 Các hệ thống trên một chip có khả năng tái cấu hình (SoC)

3.6.1. SoC là gì? 101

3.6.2. Giới thiệu PSoC 103

3.6.3. PSoC CY8C29446 103

Chương 4. Các bộ điều khiển và ghép nối dữ liệu

4.1. Vào/ ra số liệu điều khiển bằng ngắt

4.1.1 Nguyên lý vào/ra điều khiển bằng ngắt 111

4.1.2 Bộ điều khiển ngắt PIC (8259) 113

4.1.3 Ngắt trong máy tính IBM/PC 119

4.2. Vào/ra số liệu điều khiển bằng thâm nhập bộ nhớ trực tiếp DMA

4.2.1 Nguyên lý vào/ ra bằng DMA 121

4.2.2 Bộ thâm nhập bộ nhớ trực tiếp DMAC (8237) 123

4.2.3 Sử dụng bộ điều khiển DMAC trong hệ vi xử lý 126

4.3. Bộ đếm lập trình được

4.3.1 Sơ đồ khối bộ đếm lập trình được (8254) 127

4.3.2 Các chế độ làm việc của bộ đếm lập trình 128

4.3.3 Sử dụng bộ đếm trong hệ vi xử lý 130

4.4. Phối ghép vào ra nối tiếp

4.4.1 Nguyên lý vào/ ra nối tiếp 130

4.4.2 Mạch thu phát thông tin nối tiếp UART 133

4.5. Phối ghép với thiết bị vào/ra qua cổng song song

4.5.1 Ghép nối song song đơn giản 142

4.5.2 Mạch phối ghép vào/ra song song lập trình được PPI 8255A 142

4.5.2.1 Các khối của PPI

4.5.2.2 Các tín hiệu của PPI

4.5.2.3 Các chế độ làm việc của PPI

4.5.2.5 Ghép nối PPI trong hệ vi xử lý

Chương 5 Thiết kế hệ thống vi xử lý

5.1 Thiết kế phần cứng 145

5.2 Thiết kế phần mềm 146

Thỏi Nguyờn 7-2013 2Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động

Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn

BÀI GIẢNG MễN HỌC

VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ

5.2.1 ROM Mapping 146

5.2.2 RAM Mapping 149

5.2.3 Thiết kế các chương trình hệ thống 151

5.2.4 Thiết kế các chương trình ứng dụng 154

CÂU HỎI VÀ BÀI TẬP 159

Phụ lục CÁC HỆ SỐ ĐẾM 160

TÀI LIỆU THAM KHẢO 16

 

pdf165 trang | Chia sẻ: trungkhoi17 | Lượt xem: 432 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Kỹ thuật vi xử lý và lập trình hợp ngữ - Phạm Đức Long, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
h ra từng bit ra ngoài qua chân RxD (P3.0) cùng với xung đồng hồ đ−ợc gửi ra ngoài qua đ−ờng TxD (P3.1). Mỗi bit đ−ợc truy chu kỳ máy. Việc nhận dữ liệu đ−ợc khởi đầu khi bit cho phép nhận (REN) đ−ợc xác lập lên bit 1 và bit RI phải xoá về 0. Nguyên tắc ch ch−ơng trình để khởi tạo các tham số của cổng nối tiếp và xoá công việc nhận dữ liệu. Khi RI đ−ợc xoá, xung đồng hồ đ−ợc ghi ra chân TxD, bắt đầu chu kỳ máy tiếp theo và dữ liệu đ−ợc đ−a vào chân RxD. Một khả năng của chế độ thanh ghi dịch là có thể mở rộng đ−ờng ra của 8051. Thanh ghi dịch chuyển đỏi nối tiếp thành song song có thẻ kết nối với các đ−ờng TxD và RxD cung cấp thêm 8 đ−ờng ra. b. 8 bit UART với tốc độ baud có thể thay đổi đ−ợc (mode1). Ở mode 1, cổng nối tiếp của 8051 hoạt động nh− là UART 8 bit với tốc độ baud có thể thay đổi đ−ợc. UART (Universal Asynchronous Receiver/Transmitter) là 1 thiết bị nhận và truyền dữ liệu nối tiếp, mỗi ký tự đ−ợc truyền bắt đầu bằng bit start (trạng thái thấp) sau đó là các bit dữ liệu của ký tự đ−ợc truyền, parity bit để kiểm tra lỗi đ−ờng truyền và cuối cùng là bit stop (trạng thái cao). Một chức năng quan trọng của UART là chuyển đổi dữ liệu song song thành nối tiếp để truyền và chuyển đổi nối tiếp thành song song để nhận. Trong mode này, 10 bit dữ liệu đ−ợc truyền qua TxD và nhận vào qua RxD và việc truyền cũng (LSB đầu tiên) và cuối cùng là stop bit. Bit TI của Thỏi Nguyờn 7-2013 80 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ stop ở chân TxD. Trong quá trình nhận stop bit đ−ợc đ−a vào bit RB8 của thanh ghi SCON và tốc độ truyền đ−ợc đặt bởi timer1. Việc đồng bộ thanh ghi dịch của cổng nối tiếp ở mode 1, 2, 3 đ−ợc điều khiển bởi counter với đầu ra counter là nhịp đồng hồ điều khiển tốc độ baud còn đầu vào của counter đ−ợc chọn bằng phần mềm. c.9 bit UART với tốc độ baud cố định (mode 2). cổng nối tiếp của ồ. y đổi đ−ợc (mode 3). có thể it còn mode 2 và mode 3 là r enable) bit RI và TI trong thanh ghi SCON đ−ợc lập lên 1 bằng phần cứng và cuối cùng của dữ liệu ã kết thúc truyền 1 byte dữ liệu (receiver buffer ngắt. Nếu ch−ơng trình muốn nhận p CLR RI ;xoá RI V A,SBUF ;Đọc dữ liệu từ SBUF truyền và nó cho biết g trình muốn gửi dữ liệu Mode đ−ợc chọn bằng cách đặt bit SM1=1 và SM0=0, 8051 sẽ hoạt động nh− UART 9 bit có tốc độ baud cố định. 11bit sẽ đ−ợc truyền và nhận qua TxD và RxD: 1 start bit, 9 bits dữ liệu và stop bit. Trong khi truyền bit thứ 9 sẽ đ−ợc đặt vào TB8 của thanh ghi SCON còn trong khi nhận bit thứ 9 sẽ đ−ợc đặt vào bit RB8. Tốc độ baud của mode 2 có thể là 1/32 hoặc 1/64 xung nhịp đồng h d.9 bit UART với tốc độ baud có thể tha Mode 3 t−ơng tự nh− mode 2 nh−ng tốc độ baud đ−ợc lập trình và đ−ợc cung cấp bằng timer. Trong thực tế cả 3 mode 1, 2, 3 là t−ơng đ−ơng nhau chỉ khác nhau ở chỗ tốc độ baud ở mode 2 là cố định còn mode 1 và mode 3 thay đổi đ−ợc và số l−ợng bit dữ liệu của mode 1 là 8 b 9 bit. • Cho phép nhận (Receive Bit cho phép nhận (REN) của thanh ghi SCON phải đ−ợc lập bằng phần mềm để cho phép nhận dữ liệu. Việc này đ−ợc tiến hành lúc bắt đầu ch−ơng trình khi cổng nối tiếp, timer/counter,... đ−ợc khởi tạo. Có 2 cách xác lập bit này: SETB REN hoặc MOV SCON,#xxx1xxxxb (Trong đó x có thể là 0 hoặc 1 tuỳ theo yêu cầu của ch−ơng trình). • Cờ ngắt (Interrupt flag) Hai phải đ−ợc xoá về 0 bằng phần mềm. RI đ−ợc xác lập khi bit đ−ợc nhận và nó cho biết rằng đ full) nó đ−ợc test bằng ch−ơng trình để gây ra dữ liệu từ 1 thiết bị nối với cổng nối tiếp nó phải chờ cho đến khi RI đ−ợc lập sau đó xoá RI và đọc dữ liệu từ SBUF . Ví dụ: WAIT : JNB RI,WAIT ;test RI và chờ cho đến khi đ−ợc lậ MO T−ơng tự bit TI đ−ợc lập khi bit cuối cùng của dữ liệu đ−ợc rằng đã truyền xong (Transmit buffer empty). Nếu ch−ơn Thỏi Nguyờn 7-2013 81 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ đến thiết bị nối qua cổng nối tiếp nó phải kiểm tra xem ký tự tr−ớc đó đã gửi ch−a, ếu ch−a gửi nó phải chờ đến khi gửi xong mới đ−ợc gửi . Ví dụ: WAIT: JNB TI,WAIT ; Kiểm tra và chờ đến khi TI set CLR TI ; Nếu set thì xoá TI MOV SBUF,A ; Gửi dữ liệu vào SBUF để truyền. n Hỡnh 3.22. Hệ vi xử lý sử dụng 8051 cú bộ nhớ ngoài NHểM LỆNH CỦA 89C51 ập lệnh của 8051 được chia thành 5 nhúm: Số học. Logic. - Chuyển ẽ nhỏnh CÁC T - - - Chuyển dữ liệu. điều khiển. - R . Thỏi Nguyờn 7-2013 82 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ Bảng 3.5. C anh ghi được chọn. ỏc chi tiết thiết lập lệnh Rn Thanh ghi R0 đến R7 của bank th Data 8 bit địa chỉ vựng dữ liệu bờn trong. Nú cú thể là vựng RAM dữ liệu trong (0-127) hoặc cỏc thanh ghi chức năng đặc biệt. @Ri 8 bit vựng RAM dữ liệu trong (0-125) được đỏnh giỏ địa chỉ giỏn tiếp qua thanh ghi R0 hoặc R1. #data Hằng 8 bit chứa trong cõu lệnh. #data 16 Hằng 16 bit chứa trong cõu lệnh. Addr16 1 ong lệnh LCALL và LJMP. 6 bit địa chỉ đớch được dựng tr Addr11 11 bit địa chỉ đớch được dựng trong lệnh LCALL và AJMP. Rel Byte offset 8 bit cú dấu được dựng trong lệnh SJMP và những ú điều kiện. lệnh nhảy c Bit Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc cỏc thanh ghi chức năng đặc biệt. Nhúm lệnh xử lý số học xử lý số học Bảng 3.6. Lệnh ung thanh ghi Rn vào thanh ADD A,Rn (1byte 1 chu kỳ mỏy): cộng nội d ghi A. ADD A,data (21): Cộng trực tiếp 1 byte vào thanh ghi A. ADD A,@Ri (11): Cộng giỏn tiếp nội dung RAM chứa tại địa chỉ được khai bỏo trong Ri vào thanh ghi A. ADD A,#data (21): Cộng dữ liệu tức thời vào A. ADD A,Rn (11): Cộng thanh ghi và cờ nhớ vào A. ADD A,data ực tiếp byte dữ liệu và cờ nhớ vào A. (21): Cộng tr ADDC A,@Ri (11): Cộng giỏn tiếp nội dung RAM và cờ nhớ vào A. ADDC A,#data (21): Cộng dữ liệu tức thời và cờ nhớ vào A. SUBB A,Rn (11): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ nhớ. SUBB A,data cờ nhớ. (21): Trừ trực tiếp A cho một số và SUBB A,@Ri (11): Trừ giỏn tiếp A cho một số và cờ nhớ. SUBB A,#data cờ nhớ. (21): Trừ nội dung A cho một số tức thời và INC A (11): Tăng nội dung thanh ghi A lờn 1. INC Rn (11): Tăng nội dung thanh ghi Rn lờn 1. Thỏi Nguyờn 7-2013 83 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ INC data (21): Tăng dữ liệu trực tiếp lờn 1. INC @Ri (11): Tăng giỏn tiếp nội dung vựng RAM lờn 1. DEC A (11): Giảm nội dung thanh ghi A xuống 1. DEC Rn (11): Giảm nội dung thanh ghi Rn xuống 1. DEC data (21): Giảm dữ liệu trực tiếp xuống 1 DEC @Ri (11): Giảm giỏn tiếp nội dung vựng RAM xuống 1. INC DPTR (12): Tăng nội lờn 1. dng con trỏ dữ liệu M hõn nội dung thanh ghi A với nội dung thanh ghi B. UL AB (14): N DIV AB (14): Chia nội dung thanh ghi A cho nội dung thanh ghi B. DA A (11): hiệu chỉnh thập phõn thanh ghi A. Nhúm lệnh Logic dung thanh ghi Rn. Bảng 3.7. Lệnh Logic ANL A,Rn (11): AND nội dung thanh ghi A với nội ANL A,data (21): AND nội dung thanh ghi A với dữ liệu trực tiếp. ANL A,@Ri (11): AND nội dung thanh ghi A với dữ liệu giỏn tiếp trong RAM. ANL A,#data tức thời. (21): AND nội dung thanh ghi với dữ liệu ANL data,A (21): AND một dữ liệu trực tiếp với A. ANL data,#data (32): AND một dữ liệu trực tiếp với A một dữ liệu tức thời. ANL C,bit (22): AND cờ nhớ với 1 bit trực tiếp. ANL C,/bit (22): AND cờ nhớ với bự 1 bit trực tiếp. ORL A,Rn (11): OR thanh ghi A với thanh ghi Rn. ORL A,data (21): OR thanh ghi A với một dữ liệu trực tiếp. ORL A,@Ri ỏn tiếp. (11): OR thanh ghi A với một dữ liệu gi ORL A,#data (21): OR thanh ghi A với một dữ liệu tức thời. ORL data,A A. (21): OR một dữ liệu trực tiếp với thanh ghi ORL data,#data (31) :OR một dữ liệu trực tiếp với một dữ liệu tức thời. ORL C,bit (22): OR cờ nhớ với một bit trực tiếp. ORL C,/bit (22): OR cờ nhớ với bự của một bit trực tiếp. XRL A,Rn (11): XOR thanh ghi A với thanh ghi Rn. XRL A,data (21): XOR thanh ghi A với một dữ liệu trực tiếp. XRL A,@Ri hi A với một dữ liệu giỏn tiếp. (11): XOR thanh g Thỏi Nguyờn 7-2013 84 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ XRL A,#data ột dữ liệu tức thời. (21): XOR thanh ghi A với m XRL data,A rực tiếp với thanh ghi A. (21): XOR một dữ liệu t XRL data,#data ới một dữ liệu tức thời. (31): XOR một dữ liệu trực tiếp v SETB C (11): Đặt cờ nhớ. SETB bit (21): Đặt một bit trực tiếp. CLR A (11): Xúa thanh ghi A. CLR C (11): Xúa cờ nhớ. CPL A (11): Bự nội dung thanh ghi A. CPL C (11): Bự cờ nhớ. CPL bit (21): Bự một bit trực tiếp. RL A (11): Quay trỏi nội dung thanh ghi A. RLC A (11): Quay a cờ nhớ. trỏi nội dung thanh ghi A qu R ải nội dung thanh ghi A. R A (11): Quay ph RRC A (11): Quay phải nội dung thanh ghi A qua cờ nhớ. SWAP (11 te). ): Quay trỏi nội dung thanh ghi A 1 nibble (1/2by Nhúm lệnh chuyển dữ liệu Bảng 3.8. Lệnh chu i A. yển dữ liệu MOV A,Rn (11):Chuyển nội dung thanh ghi Rn vào thanh gh MOV A,data (21): Chuyển dữ liệu trực tiếp vào thanh ghi A. MOV A,@Ri huyển dữ liệu giỏn tiếp vào thanh ghi A. (11): C MOV A,#data (21): Chuyển dữ liệu tức thời vào thanh ghi A. MOV Rn,data huyển dữ liệu trực tiếp vào thanh ghi Rn. (22): C MOV Rn,#data (21): Chuyển dữ liệu tức thời vào thanh ghi Rn. MOV data,A (21): Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp. MOV data,Rn (22): Chuyển nội dung thanh ghi Rn vào một dữ liệu trực tiếp. MOV data,data huyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp. (32): C MOV data,@Ri (22): Chuyển một dữ liệu giỏn tiếp vào một dữ liệu giỏn tiếp. MOV data,#data (32): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp. MOV @Ri,A (11): Chuyển nội dung thanh ghi A vào một dữ liệu giỏn tiếp. Thỏi Nguyờn 7-2013 85 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ MOV @Ri,data ữ liệu giỏn tiếp. (22): Chuyển một dữ liệu trực tiếp vào một d MOV @Ri,#data (21): Chuyển dữ liệu tức thời vào dữ liệu giỏn tiếp. MOV DPTR,#data o thanh ghi con trỏ dữ liệu. (32): Chuyển một hằng 16 bit và MOV C,bit (21): Chuyển một bit trực tiếp vào cờ nhớ. MOV bit,C (22): Chuyển cờ nhớ vào một bit trực tiếp. MOV A,@A+DPTR (12): Chuyển byte bộ nhớ chương trỡnh cú địa chỉ là@A+DPRTvào thanh ghi A. MOVC A,@A+PC (12): Chuyển byte bộ nhớ chương trỡnh cú địa chỉ là @A+PC vào thanh ghi A. MOVX A,@Ri huyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A. (12): C MOVX A,@DPTR (12): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A. MOVX @Ri,A (12): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ). MOVX @DPTR,A (12): Chuyển nội dung A ra dữ liệu bờn ngoài (16 bit địa chỉ). PUSH data (22): Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP. POP data p vào ngăn xếp và giảm SP. (22): Chuyển dữ liệu trực tiế XCH A,Rn (11): Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A. XCH A,data (21): t dữ liệu trực tiếp. Trao đổi giữa thanh ghi A và mộ X i giữa thanh ghi A và một dữ liệu giỏn tiếp. CH A,@Ri (11): Trao đổ XCHD A,@R (11): Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN của dữ liệu giỏn tiếp. Nhúm lệnh chuyền điều khiển hu trỡnh con dựng địa chỡ tuyệt đối. Bảng 3.9. Lệnh c yển điều khiển ACALL addr11 (22): Gọi chương LCALL addr16 trỡnh con dựng địa chỉ dài. (32): Gọi chương RET (12): Trở về từ lệnh gọi chương trỡnh con. RETI (12): Trở về từ lệnh gọi ngắt. AJMP addr11 (22): Nhảy tuyệt đối. LJMP addr16 (32): Nhảy dài. SJMP rel (22):Nhảy ngắn. JMP @A+DPTR (12): Nhảy giỏn tiếp từ con trỏ dữ liệu. JZ rel (22): Nhảy nếu A=0. Thỏi Nguyờn 7-2013 86 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ JNZ rel (22): Nhảy nếu A khụng bằng 0. JC rel (22): Nhảy nếu cờ nhớ được đặt. JNC rel hảy nếu cờ nhớ khụng được đặt. (22): N JB bit,rel (32): Nhảy tương đối nếu bit trực tiếp được đặt. JNB bit,rel hảy tương đối nếu bit trực tiếp khụng được đặt. (32):N JBC bit,rel (32): Nhảy tương đối nếu bit trực tiếp được đặt, rồi xúa bit. CJNE A,data,rel trực tiếp với A và nhảy nếu khụng (32): So sỏnh dữ liệu bằng. CJNE A,#data,rel liệu tức thời với A và nhảy nếu khụng (32): So sỏnh dữ bằng. CJNE Rn,#data,rel n và nhảy nếu khụng bằng. (32): So sỏnh dữ liệu tức thời với nội dung thanh ghi R CJNE @Ri, (32): So sỏ ới dữ liệu giỏn tiếp và nhảy nh dữ liệu tức thời v #data,rel nếu khụng bằng. DJNZ Rn,rel (22): Giảm thanh ghi Rn và nhảy nếu khụng bằng. DJNZ data (32): Giảm dữ liệu trực tiếp và nhảy nếu khụng bằng. Cỏc lệnh rẽ nhỏnh trong chương trỡnh bao gồm việc gọi hoặc trả lại từ h con hoặc rẽ h ả c h rẽ nhỏnh đều khụng ng đến cờ. Ta cú t nhảy đến nơi cần n khụng cần đưa rừ đ biờn dịch sẽ đặ tới v g lệnh đó đưa ra. B 0. Lệnh nhảy cú điều k > dition> ump_if Cú nhiều lệnh để thực hiện chương trỡn nhỏnh cú điều kiện hay k ụng cú điều kiện. Tất c ỏc lện ảnh hưở hể định hảy mà ịa chỉ, trỡnh t địa chỉ nơi cần nhảy ào đỳn ảng 3.1 iện <condition Jump_if_not<con J C=1 JNC rel JC rel Bit=1 JNB bit,rel JB bit,rel/JNC bit,rel A=0 JNZ rel JZ rel Rn=0 DJNZ Rn,rel Direct=0 DJNZ direct,rel A direct CJNE A,direct,rel A#data CJNE A,#data,rel Rn#data CJNE Rn,#data,rel @Ri#data CJNE @Ri,#data,rel Thỏi Nguyờn 7-2013 87 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ Nhảy khụng cú điều kiện a. C repe t until” n> Ngụn sembly: ion ondition>,LOOP b. C hile do” ondi n> on> Ngụn : O SJMP STOP n else” action 1> Ngụn mbl n>,ELSE d. C of” 1 of 0 = 1 ấu trỳc “ a Repeat Until <conditio ngữ As LOOP: JUMP_if_not_<c ấu trỳc “w while <c tio do <acti ngữ Assembly LOOP: JUMP_if_not_,D DO: SJMP LOOP STOP: ... c. Cấu trỳc “if the if then < else ngữ Asse y JUMP_if_not_<conditio SJMP DONE ELSE: DONE: ... ấu trỳc “case case P #11111110b: P2. #11111101b: P2.1 = 1 Thỏi Nguyờn 7-2013 88 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ #11111011b: P2.2 = 1 else P2 = 0 end Ngụn y MP E IT 1b,SKIP2 .1 SJMP EXIT IP2: CJNE P1,#11111011b,SKIP3 là sự từng l = 0. it, re u (bit) = 1. it, re nếu (bit) = 0. it, re bit = 1 và xúa bit. A L ge 2K. 0) ((SP)) (PC15PC8) (PC10PC0) page Address. : Lệnh gọi dài chương trỡnh con trong 64K. (PC) (PC) + 3 )) PC7 C0) ddr0. ngữ Assembl CJNE P1,#11111110b, SKIP1 SETB P2.0 SJ X SKIP1: CJNE P1,#1111110 SETB P2 SK SETB P2.2 SJMP EXIT SKIP3: MOV P2,#0 EXIT: ... Sau đõy túm tắt hoạt động của lệnh nhảy. JC rel : Nhảy đến “rel” nếu cờ Carry C = 1. JNC re : Nhảy đến “rel” nếu cờ Carry C JB b l : Nhảy đến “rel” nế JNB b l : Nhảy đến “rel” JBC b l : Nhảy đến “rel” nếu AC L addr11 : Lệnh gọi tuyệt đối trong pa (PC) (PC) + 2 (SP) (SP) + 1 ((SP)) (PC7PC (SP) (SP) + 1 LCALL addr16 (SP) (SP) + 1 ((SP ( P (SP) (SP) + 1 ((SP)) (PC15PC8) (PC) Addr15A Thỏi Nguyờn 7-2013 89 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ RET : Kết thỳc chương trỡnh con trở về chương trỡnh chớnh. (PC15PC8) (SP) 7P 0) ( P)) (SP) (SP) -1. chương trỡnh ress. nh LCALL. l A + R ) JZ rel lệh kế nếu A = 0. ) + byte 2 JNZ rel 2 CJNE A, direct, rel Address. c hành lệnh kế tiếp CJNE A, # data, rel JNE A, direct, rel. CJNE Rn, # data, rel l. rel rel. DJNE Rn, rel : Giảm Rn và nhảy nếu Rn 0. (Rn) (Rn) -1 (SP) (SP) - 1 (PC C (S RETI : Kết thỳc thủ tục phục vụ ngắt quay về chớnh hoạt động tương tự như RET. AJMP Addr11 : Nhảy tuyệt đối khụng điều kiện trong 2K. (PC) (PC) + 2 (PC10PC0) page Add LJMP Addr16 : Nhảy dài khụng điều kiện trong 64K Hoạt động tương tự lệ SJMP re :Nhảy ngắn khụng điều kiện trong (-128 127) byte (PC) (PC) + 2 (PC) (PC) + byte 2 JMP @ DPT : Nhảy khụng điều kiện đến địa chỉ (A) + (DPTR) (PC) (A) + (DPTR : Nhảy đến A = 0. Thực hành (PC) (PC) + 2 (A) = 0 (PC) (PC : Nhảy đến A 0. Thực hành lệnh kế nếu A = 0. (PC) (PC) + 2 0 (PC) (PC) + byte : So sỏnh và nhảy đến A direct (PC) (PC) + 3 (A) (direct) (PC) (PC) + Relative (A) < (direct) C = 1 (A) > (direct) C = 0 (A) = (direct). Thự : Tương tự lệnh C : Tương tự lệnh CJNE A, direct, re CJNE @ Ri, # data, : Tương tự lệnh CJNE A, direct, (PC) (PC) + 2 Thỏi Nguyờn 7-2013 90 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ (Rn) 0 (PC) (PC) + byte 2. DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel. Cỏc lệnh dịch chuyển dữ liệu RAM nội hoặc cỏc vựng nhớ của cỏc thanh ghi chức năng toỏn hạng DESTINATION. cực trong suốt quỏ trỡnh thực X, cũn bỡnh thường RD và WR khụng tớch cực (mức 1). Tất c chuyển đều khụng ảnh hưởng đến cờ. Hoạt động của từng lệnh PUSH direct ăn xếp (SP) (SP) + 1 POP direct : Lấy t ra direct XCH A, direct : (A) (direct) 3Ri0)) Cỏ tstruction): Cỏc lệnh dịch chuyển dữ liệu trong những vựng nhớ nội thực thi 1 hoặc 2 chu kỳ mỏy. Mẫu lệnh MOV , cho phộp di chuyển dữ liệu bất kỳ 2 vựng nhớ nào của đặc biệt mà khụng thụng qua thanh ghi A. Vựng năn xếp của 8951 chỉ chứa 128 byte RAM nội, nếu con trỏ ngăn xếp SP được tăng quỏ địa chỉ 7FH thỡ cỏc byte được PUSH vào sẽ mất đi và cỏc byte POP ra thỡ khụng biết rừ. Cỏc lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoài sự định vị giỏn tiếp. Địa chỉ giỏn tiếp cú thể dựng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR). Tất cả cỏc lệnh dịch chuyển hoạt động trờn toàn bộ nhớ ngoài thực thi trong 2 chu kỳ mỏy và dựng thanh ghi A làm Việc đọc và ghi RAM ngoài (RD và WR) chỉ tớch thi của lệnh MOV ả cỏc lệnh dịch được túm tắt như sau: : Cất dữ liệu vào ng (SP) (Drirect) ừ ngăn xếp (direct) ((SP)) (SP) (SP) - 1 XCH A, Rn : Đổi chổ nội dung của A với Rn (A) (Rn) XCH A, @ Ri : (A) ((Ri)) XCHD A, @ Ri : Đổi chổ 4 bit thấp của (A) với ((Ri)) (A3A0) ((Ri c lệnh xen vào (MiCSellamous In NOP : Khụng hoạt động gỡ cả, chỉ tốn 1 byte và 1 chu kỳ mỏy. Ta dựng để tạo trễ những khoảng thời gian nhỏ. Thỏi Nguyờn 7-2013 91 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ 3.5 Vi điều khiển của Atmel AVR 3.5.1. Giới thiệu chung về AVR Vi điều khiển AVR là sản phẩm của cụng ty Atmel (Hoa kỳ), là một bộ xử lý cú liệu tỏch biệt. B Đõy là iều khiển này. Sau đõ i điều khiển 8 bit- cú 32 thanh ghi đa năng 8 bit. 8 triệu lệnh trờn 1 giõy ở tần số 8 MHz. Cú nghĩa ập trỡnh được ngay trờn hệ thống, chịu được 10000 AM 1 kbyte te lập trỡnh được ngay trờn hệ thống, chịu được c tớnh năng ngoại vi: riờng. ế độ so sỏnh tớn điều biến độ rộng xung PWM kộp 8,9,10 ng tự cú sẵn trờn chớp. trờn chớp . ảm năng lượng tiờu thụ OS tốc độ cao, tiờu thụ ớt năng lương. 4MHz, 3V, 25 độ C. - Chế độ làm giảm năng lượng tiờu thụ: < 1uA - Vào ra và cỏch đúng vỏ : - 32 chõn vào ra lập trỡnh được được đúng vỏ PDIP 40 chõn kiến trỳc kiểu Harvard: cú bộ nhớ chương trỡnh và một bộ nhớ dữ ộ vi điều khiển AVR cú nhiều khả năng mới để giảm năng lượng tiờu thụ. một trong những ưu điểm lớn của họ vi đ y là một số đặc điểm, tớnh năng kỹ thuật của AVR Atmega 16. - Atmega 16 là v - Tốc độ vi xử lý lờn đến là 1 chu kỡ mỏy dựng 1 chu kỡ thạch anh. - Bộ nhớ flash 16 kbyte l chu kỡ viết xoỏ. - Bộ nhớ SR - Bộ nhớ EEPROM 512By 100.000 chu kỡ viết xoỏ. - Lập trỡnh khoỏ để bảo mật dữ liệu trong bộ nhớ chương trỡnh flash và EEPROM. + Cỏ - Bộ định thời /đếm 8 bit với bộ chia tần - Một bộ định thời /đếm 16 bit với bộ chia tần riờng, ch hiệu. Chế độ bắt tớn hiệu và bộ bit. - Bộ so sỏnh tươ - Bộ định thời Watchdog lập trỡnh được cú sẵn - UART nối tiếp lập trỡnh đựơc - Giao tiếp bus I2C - Giao tiếp SPI Cỏc tớnh năng đặc biệt của AVR ATMega16: - Chế độ tiờu thụ ớt năng lượng và gi - Cỏc nguồn ngắt trong và ngoài. + Cỏc đặc tớnh : - Cụng nghệ xử lý CM - Hoạt động tĩnh hoàn toàn. - Mức tiờu thụ năng lượng ở - Chế độ hoạt động tớch cực : 3,0mA - Chế độ chờ: 1,0 mA Thỏi Nguyờn 7-2013 92 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ - Điệ n n ỏp nguồn uụi : 2,7 V -> 6 V Hỡnh 3.23. Sơ đồ chõn và chức năng cỏc chõn của vi diều khiển AVR ATMEGA 16 + PDIP 40 chõn. Trong đú cú 32 chõn I/O (in ut uồn, 2 chõn dao động, 1 chõn Reset, 1chõn AREF. Mỗi một chõn cú thể đảm nhận nhiều vai trũ. Cụ thể như sa PB0 r của timer 0-T0 r của timer 1-T1 Timer0 -OCO0 ATMega16 đúng gúi dạng p /out put) chia thành 4 Port: A,B,C,D; 4 chõn ng u: 1. Chõn số 1: cú vai trũ - Chõn IO số 0 port B- - Chõn đầu vào bộ đếm coute 2. Chõn số 2: cú vai trũ - Chõn IO số 2 port B- PB1 - Chõn đầu vào bộ đếm coute 3. Chõn số 3: cú vai trũ - Chõn IO số 3 port B- PB2 - Chõn ngắt ngoài 2 –INT2 4. Chõn số 4: cú vai trũ - Chõn IO số 4 port B- PB3 - Chõn đầu ra điều chế độ rộng xung PWM của 5. Chõn số 5: cú vai trũ - Chõn IO số 5 port B- PB4 Thỏi Nguyờn 7-2013 93 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ rong chuẩn SPI -SS 6. Master, nhận data nếu là Slave trong SPI 7. Slave, nhận data nếu là Master trong SPI 8. SPI 9. reset của AVR ấp nguồn GND 0V 12. ối với thạnh anh huẩn RS232 15. uẩn RS232 16. T0 17. T1 18. D4 ủa Timer1 –OCO1B rộng xung PWM của Timer1 –OCO1A 20. D6 21. D7 ng xung PWM của Timer2 –OCO2 - Chõn chọn con slave t Chõn số 6: cú vai trũ - Chõn IO số 6 port B- PB5 - Chõn xuất data nếu là Chõn số 7: cú vai trũ - Chõn IO số 7 port B- PB6 - Chõn xuất data nếu là Chõn số 8: cú vai trũ - Chõn IO số 8 port B- PB7 - Chõn xuất clock trong Chõn số 9: cú vai trũ đầu vào 10. Chõn số 10: cú vai trũ cấp nguồn VCC 5V 11. Chõn số 11: cú vai trũ c Chõn số 12: chõn dao động, n 13. Chõn số 13: chõn dao động, nối với thạnh anh 14. Chõn số 14: cú vai trũ - Chõn IO số 1 port D- PD0 - Chõn nhận data theo c Chõn số 15: cú vai trũ - Chõn IO số 2 port D- PD1 - Chõn xuất data theo ch Chõn số 16: cú vai trũ - Chõn IO số 3 port D- PD2 - Chõn ngắt ngoài 0–IN Chõn số 17: cú vai trũ - Chõn IO số 4 port D- PD3 - Chõn ngắt ngoài 1–IN Chõn số 18: cú vai trũ - Chõn IO số 5 port D- P - Chõn đầu ra điều chế độ rộng xung PWM c 19. Chõn số 19: cú vai trũ - Chõn IO số 6 port D- PD5 - Chõn đầu ra điều chế độ Chõn số 20: cú vai trũ - Chõn IO số 7 port D- P Chõn số 21: cú vai trũ - Chõn IO số 8 port D- P - Chõn đầu ra điều chế độ rộ 22. Chõn số 22: cú vai trũ Thỏi Nguyờn 7-2013 94 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ - Chõn IO số 1 port C- PC0 huẩn I2C-SCL 23. huẩn I2C-SDA 24. 26. C4 27. 29. C7 30. iện ỏp VCC 5V 31. điện ỏp GND 0V chuyển đổi ADC 4 - Chõn chuyển đổi ADC 3 - Chõn xuất clock theo c Chõn số 23: cú vai trũ - Chõn IO số 2 port C- PC1 - Chõn xuất Data theo c Chõn số 24: cú vai trũ - Chõn IO số 3 port C- PC2 25. Chõn số 25: cú vai trũ - Chõn IO số 4 port C- PC3 Chõn số 26: cú vai trũ - Chõn IO số 5 port C- P Chõn số 27: cú vai trũ - Chõn IO số 6 port C- PC5 28. Chõn số 28: cú vai trũ - Chõn IO số 7 port C- PC6 Chõn số 29: cú vai trũ - Chõn IO số 8 port C- P Chõn số 30: cú vai trũ cấp đ Chõn số 31: cú vai trũ cấp 32. Chõn số 33: cú vai trũ - Chõn IO số 8 port C- PC7 - Chõn chuyển đổi ADC 7 33. Chõn số 34: cú vai trũ - Chõn IO số 7 port C- PC6 - Chõn chuyển đổi ADC 6 34. Chõn số 35: cú vai trũ - Chõn IO số 6 port C- PC5 - Chõn chuyển đổi ADC 5 35. Chõn số 36: cú vai trũ - Chõn IO số 5 port C- PC4 - Chõn 36. Chõn số 37: cú vai trũ - Chõn IO số 4 port C- PC3 37. Chõn số 38: cú vai trũ - Chõn IO số 3 port C- PC2 - Chõn chuyển đổi ADC 2 38. Chõn số 39: cú vai trũ - Chõn IO số

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_ky_thuat_vi_xu_ly_va_lap_trinh_hop_ngu_pham_duc_l.pdf