1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Kỹ thuật Vi xử lý Nghề: Kỹ thuật lắp ráp và sửa chữa máy tính Trình độ: Cao đẳng nghề (Tổng cục Dạy nghề)

111 36 0

Đ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

Nội dung

(NB) Giáo trình Kỹ thuật Vi xử lý với mục tiêu chính là Trình bày được các hệ thống đếm, các loại bảng mã dùng trong kỹ thuật số. Trình bày được các khái niệm về xuất nhập dữ liệu. Trình bày được các ngắt và xử lý ngắt trong hệ vi xử lý. Mời các bạn cùng tham khảo

BỘ LAO ĐỘNG - THƯƠNG BÌNH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ NGHỀ: KỸ THUẬT SỬA CHỮA, LẮP RÁP MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG (Ban hành theo Quyết định số: 120/QĐ-TCDN ngày 25 tháng 02 năm 2013 cục trưởng Tổng cục dạy nghề) NĂM 2013 Tổng LỜI GIỚI THIỆU Khoa học kỹ thuật ngày phát triển mạnh mẽ, công nghệ thuộc lĩnh vực khác nhờ đời nhằm đáp ứng nhu cầu xã hội kỹ thuật Vi xử lý nằm số Hiện kỹ thuật Vi xử lý giảng dạy rộng rãi trường Cao đẳng nước, nhiên lĩnh vực Vi xử lý mẻ, ứng dụng chưa khai thác triệt để hệ thống điều khiển, đo lường điều chỉnh dây chuyền công nghiệp Tác giả tập trung nghiên cứu biên soạn giáo trình kỹ thuật Vi xử lý nhằm phục vụ công việc giảng dạy trường Đối tượng giáo trình sinh viên ngành Kỹ thuật lắp ráp sửa chữa máy tính Tuy nhiên để tiếp thu tốt nội dung từ giáo trình này, người học cần có kiến thức kỹ thuật số, kỹ thuật điện tử biết qua ngơn ngữ lập trình cấp cao Pascal, C… Mặc dù có cố gắng q trình biên soạn chắn giáo trình khơng thể khơng có thiếu sót Tác giả mong góp ý bạn đọc Thư góp ý xin gửi về: Trường Cao Đẳng nghề kỹ thuật công nghệ Chúng xin cảm ơn! Hà Nội, 2013 Tham gia biên soạn Khoa Công Nghệ Thông Tin Trường Cao Đẳng Nghề Kỹ Thuật Công Nghệ Địa Chỉ: Tổ 59 Thị trấn Đông Anh – Hà Nội Tel: 04 38821300 Chủ biên: Lê Văn Dũng Mọi góp ý liên hệ: Phùng Sỹ Tiến – Trưởng Khoa Công Nghệ Thông Tin Mobible: 0983393834 Email: tienphungktcn@gmail.com – tienphungktcn@yahoo.com MỤC LỤC ĐỀ MỤC Bài mở đầu: Các hệ thống đếm-các loại mã- mạch điện tử số Các hệ thống số đếm Mã BCD, ASCII TRANG Cấu trúc bên hoạt động hệ vi xử lý Cấu trúc ghi Tập lệnh Macro vi xử lý 8 14 14 16 18 18 25 28 Dùng Assembly để thiết lập tập lệnh điều khiển 35 Chương3: Các mạch giải mã địa tổ chức nhớ 39 39 45 Các sơ đồ nguyên lý mạch số Chương1: Máy tính hệ thống vi xử lý Phân loại máy tính Các khái niệm liên quan đến hệ vi xử lý Chương 2: Tổng quan vi xử lý Tổ chức nhớ Các mạch giải mã địa Chương 4: Xuất nhập liệu hệ vi xử lý 49 Giới thiệu tín hiệu, mạch phụ trợ hệ vi xử lý Thiết lập nhớ cho hệ vi xử lý 49 55 55 65 65 67 68 81 81 91 97 102 111 Thiết kế mạch vào/ra Chương 5: Ngắt xử lý ngắt hệ vi xử lý Giới thiệu loại ngắt Xử lý ưu tiên ngắt Các mạch điều khiển ngắt Chương 6: Ghép nối Ghép nối bàn phím, số Ghép nối đèn hiển thị Ghép nối với hình Ghép nối loại thiết bị ngoại vi khác TÀI LIỆU THAM KHẢO MÔN HỌC : KỸ THUẬT VI XỬ LÝ Mã mơn học: MH29 Vị trí, ý nghĩa, vai trò mơn học: - Vị trí : + Mơ đun bố trí sau sinh viên học xong mơn học chung - Tính chất : + Là mơn học chuyên ngành + Là môn học phục vụ cho sửa chữa phần cứng Ý nghĩa, vai trò mơn học: + Là môn học quan trọng nghề Sửa chữa, lắp ráp máy tính Mục tiêu mơn học: - Trình bày hệ thống đếm, loại bảng mã dùng kỹ thuật số - Trình bày khái niệm xuất nhập liệu - Trình bày ngắt xử lý ngắt hệ vi xử lý - Trình bày ghép nối vận dụng kiến thức học để áp dụng ứng dụng thực tế từ đơn giản đến phức tạp cách thành thục - Tư tốt lập trình điều khiển hệ thống vi xử lý - Cẩn thận, khéo léo thao tác Mã MH29 - 01 MH29 - 02 MH29 - 03 MH29- 04 MH29 - 05 MH29 - 06 Tên chương Tổng quan cấu trúc phần cứng Giới thiệu họ vi điều kiển Sơ lược chân 89C51 Tổ chức nhớ Các ghi chức đặc biệt Bộ nhớ Tập lệnh 89C51 Các chế độ đánh địa Các lệnh 89C51 Hoạt động định thời Giới thiệu định thời Thanh ghi chế độ Timer (TMOD) Thanh ghi điều khiển Timer (TCON) Các chế độ Timer Nguồn tạo xung nhịp Khởi động điều khiển truy xuất ghi Timer Hoạt động Port nối tiếp Giới thiệu Port vi xử lý 89C51 Thanh ghi điều khiển cổng nối tiếp Các chế độ hoạt động Khởi động truy xuất ghi cổng nối tiếp Tốc độ truyền (Baud Rate) nối tiếp Hoạt động ngắt Giới thiệu ngắt Tổ chức ngắt Xử lý ngắt Các ngắt 89C51 Thiết kế chương trình dùng ngắt Tổng quan cấu trúc phần cứng Tổng số 13 Thời lượng Lý Thực thuyết hành Kiểm tra 17 20 12 2 20 14 20 14 13 MH29- 07 Giới thiệu họ vi điều kiển Sơ lược chân 89C51 Tổ chức nhớ Các ghi chức đặc biệt Bộ nhớ Tập lệnh 89C51 Các chế độ đánh địa Các lệnh 89C51 3 2 17 2 1 1 1 4 BÀI MỞ ĐẦU CÁC HỆ THỐNG ĐẾM – CÁC LOẠI MÃ CÁC MẠCH ĐIỆN TỬ SỐ CƠ BẢN MÃ BÀI: MH29-01 Mục tiêu: - Phân loại hệ thống số đếm - Trình loại mã Mã BCD, ASCII - Tinh thần tương trợ lẫn học tập Nội dung chính: 1.Các hệ thống số đếm Mục tiêu: - Phân loại hệ thống số đếm 1.1 Hệ thập phân (Decimal Number System) Trong thực tế, ta thường dùng hệ thập phân để biểu diễn giá trị số Ở hệ thống này, ta dùng tổ hợp chữ số để biểu diễn giá trị Một số hệ thập phân biểu diễn theo số mũ 10 VD: Số 5346,72 biểu diễn sau: 5346,72 = 5.103 + 3.102 + 4.10 + + 7.10-1 + 2.10-2 Tuy nhiên, mạch điện tử, việc lưu trữ phân biệt 10 mức điện áp khác khó khăn việc phân biệt hai mức điện áp lại dễ dàng Do đó, người ta sử dụng hệ nhị phân để biểu diễn giá trị hệ thống số 1.2 Hệ nhị phân (Binary Number System) Hệ nhị phân dùng chữ số để biểu diễn giá trị số Một số nhị phân (binary digit) thường gọi bit Một chuỗi gồm bit nhị phân gọi nibble, chuỗi bit gọi byte, chuỗi 16 bit gọi word chuỗi 32 bit gọi double word Chữ số nhị phân bên phải chuỗi bit gọi bit có ý nghĩa nhỏ (least significant bit – LSB) chữ số nhị phân bên trái chuỗi bit gọi bit có ý nghĩa lớn (most significant bit – MSB) Một số hệ nhị phân biểu diễn theo số mũ Ta thường dùng chữ B cuối chuỗi bit để xác định số nhị phân VD: Số 101110.01b biểu diễn giá trị số: 101110.01b = 1x25 + 0x24 + 1x23 +1x22 + 1x21 + + 0x2-1 + 1x2-2 * Chuyển số nhị phân thành số thập phân: Để chuyển số nhị phân thành số thập phân, ta cần nhân chữ số số nhị phân với giá trị thập phân cộng tất giá trị lại VD: 1011.11B = 1x23 + 0x22 + 1x21 + + 1x2-1 + 1x2-2 = 11.75 * Chuyển số thập phân thành số nhị phân: Để chuyển số thập phân thành số nhị phân, ta dùng phương pháp sau: * Phương pháp 1: Ta lấy số thập phân cần chuyển trừ 2i 2i số lớn nhỏ hay số thập phân cần chuyển Sau đó, ta lại lấy kết thực tương tự 20 dừng Trong trình thực hiện, ta ghi lại giá trị hay cho bit tuỳ theo trường hợp số thập phân nhỏ 2i (0) hay lớn 2i (1) Phương pháp 2: Lấy số cần chuyển chia cho 2, ta nhớ lại số dư lấy tiếp thương kết chia cho thực tương tự thương cuối Kết chuyển đổi chuỗi bit số dư lấy theo thứ tự ngược lại Để thực chuyển số thập phân nhỏ sang số nhị phân, ta làm sau: lấy số cần chuyển nhân với 2, giữ lại phần nguyên lại lấy phần lẻ nhân với Quá trình tiếp tục phần lẻ dừng Kết chuyển đổi chuỗi bit giá trị phần nguyên 1.3 Hệ thập lục phân (Hexadecimal Number System) Như biết trên, dùng hệ nhị phân cần số lượng lớn bit để biểu diễn Giả sử số 1024 = 210 cần 10 bit để biểu diễn Để rút ngắn kết biểu diễn, ta dùng hệ thập lục phân dựa sở số mũ 16 Khi đó, bit hệ nhị phân (1 nibble) biểu diễn chữ số hệ thập lục phân (gọi số hex) Trong hệ thống này, ta dùng số kí tự A F để biểu diễn cho giá trị số Thông thường, ta dùng chữ h cuối để xác định số thập lục phân 2.Mã BCD, ASCII Mục tiêu: - Trình loại mã Mã BCD, ASCII 2.1 Mã BCD (Binary Coded Decimal) Trong thực tế, số ứng dụng đếm tần, đo điện áp, … ngõ dạng số thập phân, ta dùng mã BCD Mã BCD dùng bit nhị phân để mã hoá cho số thập phân Như vậy, số hex A F không tồn mã BCD VD: Số thập phân Số BCD 0101 0010 1001 2.2 Mã ASCII Trong thực tế, ký tự ứng dụng nhập từ bàn phím máy tính ta dùng mã ASCII Mã ASCII theo bảng sau Ví dụ chữ “A” có mã 41h Các sơ đồ nguyên lý mạch số Mục tiêu: - Trình bày sơ đồ nguyên lý mạch số 3.1 Cổng AND a.Chức năng: Thực phép toán logic VÀ (AND) Đầu tất đầu vào Cổng VÀ đầu vào: b Ký hiệu: A F F B c Bảngtrạng thái: A B out F 0 0 1 0 1 d Biểu thức dạng tín hiệu + Biểu thức: F=A.B + Dạng tín hiệu: 3.2 Cổng OR: a Chức năng: Thực phép toán logic HOẶC (OR) Đầu tất đầu vào Cổng HOẶC đầu vào: b Ký hiệu: c Bảngtrạng thái: d Biểu thức dạng sóng: + Biểu thức: F=A+B + Dạng sóng 3.3 Cổng NOT: a Chức năng: Thực phép toán logic ĐẢO (NOT) Cổng ĐẢO có đầu vào: b Ký hiệu: F c Bảng trạng thái : A F 1 d Biểu thức dạng sóng: + Biểu thức F = A + Dạng sóng: 3.4 Cổng NAND: a Chức năng: Thực phép ĐẢO phép toán logic VÀ Đầu tất đầu vào Cổng VÀ ĐẢO đầu vào: b Ký hiệu: F c Bảng trạng thái: A 0 B F 1 Exit: MOV AH,4Ch ; Kết thúc chương trình INT 21h Main ENDP END Main 3.Ghép nối với hình Mục tiêu: - Thực ghép nối hệ vi xử lý với hình Lập trình điều khiển hiển thị LCD 16x2 Mô tả chung: -Thứ tự chức chân -Tập lệnh: Lưu đồ khởi tạo: Trong đó: *1 : Chỉ khởi tạo lần chương trình chạy *2: Thiết lập địa vị trí trỏ liệu để gỡ rối chương trình Khi liệu truyền, bit D7 phải “1”, bit lại (D6-D0) vị trí trỏ liệu *3: DATA nghĩa mã kí tự ASCII Mã kí tự: Sơ đồ nguyên lý: Chương trình CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE ; ; STACK EQU 0540H ; LCDC EQU 00H LCDC_S EQU 02H LCDD EQU 04H ; ORG 1000H XOR AX,AX MOV SS,AX MOV SP,STACK ; CALL ALLCLR ; CALL ENTMODE L1: CALL CUSOR1 MOV SI,OFFSET DATA CALL STRING JMP L1 ; DATA DB ' ***TestLCD*** Kit 8086 CPU',00H ; LCD instruction ALLCLR: MOV AH,01H JMP LNXX ; ENTMODE: MOV AH,00000111B JMP LNXX ; CUSOR1: MOV AH,90H ; LNXX: CALL BUSY MOV AL,AH OUT LCDC,AL RET ; busy flag check BUSY: IN AL,LCDC_S AND AL,10000000B JNZ BUSY RET ; char LCD OUT ; AH = out data CHAROUT: CALL BUSY MOV AL,AH OUT LCDD,AL RET ; STRING: MOV AH,BYTE PTR CS:[SI] CMP AH,00H JE STRING1 ;out CALL BUSY CALL CHAROUT INC SI CALL TIMER JMP STRING STRING1: RET ; TIMER: MOV CX,1 TIMER2: PUSH CX MOV CX,0 TIMER1: NOP NOP NOP NOP LOOP TIMER1 POP CX LOOP TIMER2 RET ; CODE ENDS END 4.Ghép nối loại thiết bị ngoại vi khác Mục tiêu: - Thực ghép nối hệ vi xử lý với thiết bị ngoại vi khác Lập trình điều khiển động bước Mô tả chung Động bước loại động điện có nguyên lý ứng dụng khác biệt với đa số động điện thông thường Chúng thực chất động đồng dùng để biến đổi tín hiệu điều khiển dạng xung điện rời rạc thành chuyển động góc quay chuyển động rơto có khả cố định rơto vào vị trí cần thiết Về cấu tạo, động bước coi tổng hợp hai loại động cơ: Động chiều không tiếp xúc động đồng giảm tốc công suất nhỏ Động bước không quay theo chế thơng thường, chúng quay theo bước nên có độ xác cao mặt điều khiển học Chúng làm việc nhờ chuyển mạch điện tử đưa tín hiệu điều khiển vào stato theo thứ tự tần số định Tổng số góc quay rôto tương ứng với số lần chuyển mạch, chiều quay tốc độ quay rôto phụ thuộc vào thứ tự chuyển đổi tần số chuyển đổi Sơ đồ nguyên lý : Chương trình CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE ; ;STEP MOTOR CONNECT: ORANGE,RED,BLACK,YELLOW,RED,BROWN KEY EQU 01H LCDC EQU 00H LCDC_S EQU 02H LCDD EQU 04H ; ; PPIC_C EQU 1FH PPIC EQU 1DH PPIB EQU 1BH PPIA EQU 19H CTC1 EQU 0BH CTCC EQU 0FH ; INTA EQU 10H INTA2 EQU INTA+2 ; INT_V EQU 40H*4 ; ORG 1000H ; XOR BX,BX MOV ES,BX MOV DS,BX ; MOV AX,OFFSET INT_SER MOV BX,INT_V MOV WORD PTR ES:[BX],AX XOR AX,AX MOV WORD PTR ES:[BX+2],AX ; CALL INIT CALL P_INIT ; MOV AL,10000000B OUT PPIC_C,AL ; MOV AL,11111111B OUT PPIA,AL MOV AL,00000000B OUT PPIC,AL ; CALL ALLCLR MOV SI,OFFSET DATA CALL STRING ; CALL LN21 MOV SI,OFFSET DATA1 CALL STRING ; CLEAR MOV BX,0 MOV WORD PTR SPD_BUF,BX MOV BYTE PTR P_CONT,BL MOV BYTE PTR FULS_STR,BL ; MAIN: OUT KEY,AL STI CALL SCAN CLI MOV AL,BYTE PTR K_BUF ; CMP AL,0 JNE MAIN1 JMP L_45 ; MAIN1: CMP AL,1 JE R_45 ; MAIN2: CMP AL,2 JNE MAIN3 JMP L_90 ; MAIN3: CMP AL,3 JE R_90 ; MAIN4: CMP AL,4 JNE MAIN5 JMP L_180 ; MAIN5: CMP AL,5 JE R_180 ; MAIN6: CMP AL,6 JNE MAIN7 JMP L_REV MAIN7: CMP AL,7 JE R_REV JMP MAIN ; ; R_45: CLI MOV AL,25 MOV BYTE PTR P_CONT,AL XOR AL,AL MOV BYTE PTR LR_FLAG,AL ; CALL LN21 MOV SI,OFFSET R_45D CALL STRING STI JMP MAIN ; R_45D: DB 'Right 45 degree!',00H R_90: CLI MOV AL,50 MOV BYTE PTR P_CONT,AL XOR AL,AL MOV BYTE PTR LR_FLAG,AL ; CALL LN21 MOV SI,OFFSET R_90D CALL STRING STI JMP MAIN ; R_90D: DB 'Right 90 degree!',00H R_180: CLI MOV AL,100 MOV BYTE PTR P_CONT,AL XOR AL,AL MOV BYTE PTR LR_FLAG,AL ; CALL LN21 MOV SI,OFFSET R_180D CALL STRING STI JMP MAIN ; R_180D: DB 'Right 180 degree',00H R_REV: CLI MOV AL,0FFH MOV BYTE PTR P_CONT,AL XOR AL,AL MOV BYTE PTR LR_FLAG,AL ; CALL LN21 ; MOV SI,OFFSET R_MSG CALL STRING STI JMP MAIN ; R_MSG: DB 'Right Revolution',00H L_45: CLI MOV AL,25 MOV BYTE PTR P_CONT,AL MOV AL,1 MOV BYTE PTR LR_FLAG,AL ; CALL LN21 MOV SI,OFFSET L_45D CALL STRING STI JMP MAIN ; L_45D: DB 'Left 45 degree !',00H L_90: CLI MOV AL,50 MOV BYTE PTR P_CONT,AL MOV AL,1 MOV BYTE PTR LR_FLAG,AL ; CALL LN21 MOV SI,OFFSET L_90D CALL STRING STI JMP MAIN ; L_90D: DB 'Left 90 degree !',00H L_180: CLI MOV AL,100 MOV BYTE PTR P_CONT,AL MOV AL,1 MOV BYTE PTR LR_FLAG,AL ; CALL LN21 MOV SI,OFFSET L_180D CALL STRING STI JMP MAIN ; L_180D: DB 'Left 180 degree!',00H L_REV: CLI MOV AL,0FFH MOV BYTE PTR P_CONT,AL MOV AL,1 MOV BYTE PTR LR_FLAG,AL ; CALL LN21 ; MOV SI,OFFSET L_MSG CALL STRING STI JMP MAIN ; L_MSG: DB 'Left Revolution',00H DATA DB 'Stepping Control',00H DATA1: DB 'Press0-7Key',00H INT_SER:PUSH AX MOV SI,OFFSET P_CONT MOV AH,BYTE PTR CS:[SI] OR AH,AH JZ OUT_INT ; CMP AH,0FFH JE CHK_RL DEC BYTE PTR CS:[SI] ; CHK_RL: MOV AL,BYTE PTR LR_FLAG CMP AL,1 JE LEFT ; MOV DI,OFFSET FULS_STR MOV AL,BYTE PTR CS:[DI] CMP AL,4 JNE STEP0 XOR AL,AL MOV BYTE PTR CS:[DI],AL ; STEP0: INC BYTE PTR CS:[DI] JMP OUT_PULSE LEFT: MOV DI,OFFSET FULS_STR MOV AL,BYTE PTR CS:[DI] CMP AL,-1 JNE STEP1 MOV AL,4 MOV BYTE PTR CS:[DI],AL ; STEP1: DEC BYTE PTR CS:[DI] OUT_PULSE: MOV SI,OFFSET PULSE_TBL AND AX,00FFH ADD SI,AX ; MOV AL,BYTE PTR CS:[SI] AND AL,0F0H OUT PPIB,AL OUT_INT: MOV AX,WORD PTR SPD_BUF OUT CTC1,AL MOV AL,AH OUT CTC1,AL ; MOV AL,00100000B OUT INTA,AL STI POP AX IRET PULSE_TBL: DB 01100110B DB 00110011B DB 10011001B DB 11001100B ; P_INIT PROC NEAR PUSH AX MOV AL,01110000B OUT CTCC,AL P_INIT1: MOV AX,WORD PTR SPD_BUF OUT CTC1,AL MOV AL,AH OUT CTC1,AL POP AX RET P_INIT ENDP INIT PROC NEAR ; ICW1 MOV AL,00010011B OUT INTA,AL ;ICW2 interrupt vector MOV AL,40H OUT INTA2,AL ;ICW4 MOV AL,00000001B OUT INTA2,AL ; MOV AL,11111110B OUT INTA2,AL RET INIT ENDP ALLCLR: MOV AH,01H JMP LNXX ; LN21: MOV AH,0C0H ; LNXX: CALL BUSY MOV AL,AH OUT LCDC,AL RET ; BUSY: IN AL,LCDC_S AND AL,10000000B JNZ BUSY RET ; ; char LCD OUT ; AH = out data CHAROUT: CALL BUSY ; MOV AL,AH OUT LCDD,AL RET ; STRING: MOV AH,BYTE PTR CS:[SI] CMP AH,00H JE STRING1 ; CALL BUSY CALL CHAROUT INC SI JMP STRING STRING1: RET SCAN PROC NEAR IN AL,KEY TEST AL,10000000B JNZ SCAN ; AND AL,00000111B MOV BYTE PTR K_BUF,AL ; OUT KEY,AL RET SCAN ENDP K_BUF DB P_CONT: DB FULS_STR: DB LR_FLAG: DB SPD_BUF: DW ; CODE ENDS END TÀI LIỆU THAM KHẢO - KS Phạm Hữu Tài Giáo trình Vi xử lí NXB: KHTN 2009 - Ngơ Diên Tập Giáo trình Vi xử lý cấu trúc máy tính NXB: ĐH Cơng Nghiệp Hà Nội, 2009 ... phân loại máy vi tính vào vi xử lý - não máy vi tính Dưới giới thiệu số dòng máy vi tính a Bộ vi xử lý hãng Intel như: I8088, 80286, 80386, 80486, Pentium Có thể gọi gọn chung cho vi xử lý là: X86... công vi c giảng dạy trường Đối tượng giáo trình sinh vi n ngành Kỹ thuật lắp ráp sửa chữa máy tính Tuy nhiên để tiếp thu tốt nội dung từ giáo trình này, người học cần có kiến thức kỹ thuật số, kỹ. .. Chương1: Máy tính hệ thống vi xử lý Phân loại máy tính Các khái niệm liên quan đến hệ vi xử lý Chương 2: Tổng quan vi xử lý Tổ chức nhớ Các mạch giải mã địa Chương 4: Xuất nhập liệu hệ vi xử lý 49

Ngày đăng: 17/06/2020, 15:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN