Điểm Chữ ký giám thị ĐỀ THI HỌC KỲ (2009-2010) Môn thi: VI XỬ LÝ Thời gian làm bài: 110 phút (SINH VIÊN ĐƯỢC SỬ DỤNG TÀI LIỆU) HỌ TÊN: ……………………………………… MSSV: ………………… NHÓM: ……… SINH VIÊN LÀM BÀI THI NGAY TRÊN ĐỀ - ĐỀ THI CÓ TRANG Câu 1: (2 điểm) Cho mạch phân vùng nhớ hệ thống vi xử lý 8051 sử dụng IC 74138 hình vẽ A9 A10 A11 A12 A13 A14 A(LSB) B C A15 0 G1 G2A G2B G2B /CS3 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 /CS0 /CS2 /CS1 Thiết kế mạch giải mã địa cho tín hiệu chọn chip theo vùng địa chỉ: CS0 (ROM1): 8000H BFFFH CS1 (ROM2): D000H EFFFH CS2 (RAM): B000H EFFFH CS3 (I/0): 8A00H 8BFFH A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 1 X X X X X X X X X X X X X X X X X X X X X X X X 0 0 1 1 0 1 0 1 1 1 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Vùng địa (HEX) /Y0: /Y1: /Y2: /Y3: /Y4: /Y5: /Y6: /Y7: 8000H 9000H A000H B000H C000H D000H E000H F000H 8FFFH 9FFFH AFFFH BFFFH CFFFH DFFFH EFFFH FFFFH (Giải thích ngắn gọn vẽ hình trực tiếp lên sơ đồ trên) ………………………………………………………………………………………………………… ………………………………………………………………………………………………………… ………………………………………………………………………………………………………… ………………………………………………………………………………………………………… Trang / ………………………………………………………………………………………………………… ………………………………………………………………………………………………………… Câu 2: (3 điểm) a Cho lệnh gọi chương trình ACALL MAX chứa nhớ chương trình địa 97FFH * Xác định phạm vi địa hợp lệ chương trình MAX? (Giải thích) PC = 97FFh + = (0,5đ) 9801h = 1001 1000 0000 0001b Địa trang 2KB: 10011 Phạm vi địa ctcon MAX 1001 1XXX XXXX XXXX = 9800h 9FFFh * Nếu lệnh ACALL MAX có mã máy B1H 9EH chương trình MAX có địa bắt đầu bao nhiêu? (Giải thích) (0,5đ) B1h = 10110001 9Eh = 1001 1110 Địa ctcon MAX = địa trang _ địa 11 bit = 1001 1101 1001 1110 = 9D9Eh b Cho đoạn chương trình 8051 sau: LP: KT: MOV MOV JB RR INC SJMP SJMP A, # 88 B, #0 ACC.0, KT A B LP KT * Xác định nội dung ghi A va B thực xong đoạn chương trình A = 88 = 1 0 B=0 : ACC.0 = : lặp vòng A = 00101100 B=1 : ACC.0 = : lặp vòng A = 00010110 B=2 : ACC.0 = : lặp vòng A = 00001011 B=3 : ACC.0 = : kết thúc Trang / ; 1MC ; 2MC (1) ; 2MC ; 1MC ; 1MC (2) ; 2MC ; 2MC (0,5đ) * Xác định mã máy lệnh: (1) (2) (Giải thích) LP: KT: MOV MOV JB RR INC SJMP SJMP A, # 88 B, #0 ACC.0, KT A B LP KT ; 1MC ; 2MC (1) ; 2MC ; 1MC ; 1MC (2) ; 2MC ; 2MC (0,5đ) - 3Byte : 20h, E0h, 05h(+5) - 1B - 2B - 2B : 80h, F8h (-8) - 2B * Với tần số thạch anh 4MHz, xác định thời gian thực đoạn chương trình (1,0đ) (Giải thích) Các lệnh vịng lặp LP thực lần, ngồi trừ lệnh (1) lần Lệnh SJMP KT thực lần Thời gian thực + + 2x4 + (1 + + 2) x + = 25 MC Với 1MC = 12/ 4MHz = s => Tgian 75s Câu 3: (1 điểm) Cho chuỗi liệu chứa số hạng 16 bit (số nhị phân có dấu bù 2) chứa vùng RAM ngồi có địa đầu 4000H Nôi dung ô nhớ 3FFFH chứa số lượng số hạng 16 bit Trong chuỗi liệu, số hạng 16 bit chứa ô nhớ có địa liên tiếp (với nhớ có địa thấp chứa byte thấp) Viết chương trình tính số lượng số hạng 16 bit số dương có giá trị lẻ, kết cất vào nhớ 3FFEH MOV DPTR, #3FFFH MOVX A, @DPTR MOV R7, A MOV R6, # LAP: INC TT: (Cách khác:) DPTR LAP: INC DPTR MOVX A, @DPTR MOVX A, @DPTR MOV B, A JNB ACC.0, CH INC DPTR INC DPTR MOVX A, @DPTR MOVX A, @DPTR JB ACC.7, TT ; số âm JB ACC.7, TT JNB B.0, TT ; số chẳn INC R6 INC R6 SJMP TT DJNZ R7, LAP CH: INC DPTR MOV DPTR, #3FFEH TT: DJNZ R7, LAP MOV A, R6 MOVX @DPTR, A SJMP $ ; số dương lẻ Trang / ; số chẳn ; số âm ; số dương lẻ Câu 4: (2 điểm) Viết chương trình 8051 sử dụng ngắt ngồi INT1 ngắt Port nối tiếp sau: - Ngắt INT1: cho phép ngắt theo cạnh xuống Mỗi lần có ngắt ngồi dịch bit ghi R7 chân port P1.7 Bit dịch bit trọng số nhỏ (LSB) sau dịch bit trọng số lớn (MSB) chấm dứt ngắt - Ngắt Port nối tiếp: thu byte xuất giá trị ngoại vi ánh xạ nhớ liệu ngồi có địa 8000H giá trị thu có giá trị từ 100 đến 200 Port nối tiếp sử dụng UART bit có tốc độ baud 9600bps, tần số thạch anh 11.059MHz ORG 0000H ISR_ X1: LJMP MAIN RRC A ORG 0013H MOV P1.7, C LJMP ISR_X1 DJNZ R6, KT1 ORG 0023H CLR EX1 LJMP ISR_SER KT1: RETI MOV TMOD, #20H ISR_ SER: MOV TH1, # -3 PUSH ACC SETB TR1 CLR RI MOV SCON, #01010000B MOV A, SBUF MOV DPTR, #8000H CJNE A, #100, DK1 MOV A, R7 SETB IT1 MOV R6, #8 MOV IE, #10010100B SJMP $ MAIN: DK1: JC CJNE DK2: JNC MOVX KT2: POP RETI Trang / KT2 A, #201, DK2 KT2 @DPTR, A ACC Câu 5: (2 điểm) Sử dụng CCS điều khiển PIC a Cho sơ đồ kết nối PIC 16F84 với LED hình vẽ chương trình điều khiển: 16F84 Vcc LED0 RA0 LED1 RA1 LED2 RA2 LED3 RA3 #include #fuses HS, NOWDT, NOPROTECT, PUT #use delay(clock=8000000) byte const LED[8]={0x0f,0x0e,0x0c,0x08,0x00,0x01,0x03,0x07}; main() { int8 count; while(true) { for(count=0;count