Tổng hợp đề Vi xử lý có đáp án BK TPHCM

38 39 0
Tổng hợp đề Vi xử lý có đáp án  BK TPHCM

Đ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

Hãy giải thích chức năng của giải mã lệnh trong CPU Nếu một CPU có 16 đường địa chỉ, thì dung lượng tối đa của bộ nhớ nó có thể truy cập Trong VĐK 8051, thanh ghi PC (program counter) có Thanh ghi chứa các cờ báo trong 8051 được gọi là Tìm giá trị cờ nhớ CY và AC cho đoạn code sau: MOV A, 0FFH ADD A, 01 Băng thanh ghi nào sẽ được sử dụng nếu thay đổi giá trị RS0 và RS1 của thanh ghi PSW qua hai câu lệnh sau: Địa chỉ của thanh ghi R3 của băng thanh ghi 3 Cho biết chân EA có ý nghĩa gì? Cho 2 số nhị phân không dấu 16 bit M (chứa trong 2 thanh ghi R7:R6) và N (chứa trong 2 thanh ghi R5:R4). Hãy viết chương trình con SOSANH so sánh 2 số M và N. Kết quả cất vào cờ F0 (= 1 nếu M ≥ N; = 0 nếu M < N). Viết chương trình thực hiện tuần tự các công việc sau và lặp lại, biết rằng 8051 sử dụng thạch anh 11,0592 MHz: • Nhận số nhị phân không dấu 4 bit X từ 4 bit thấp của Port 1 và số nhị phân không dấu 4 bit Y từ 4 bit thấp của Port 2 • Nhận bit D từ chân P2.4 • Phát nối tiếp data 9 bit, bao gồm D7 – D4 là số X (4 bit), D3 – D0 là số Y (4 bit), bit thứ 9 là bit D, ra cổng nối tiếp với baudrate 19200

ĐHQG TPHCM–ĐH Bách Khoa Khoa Đ-ĐT–BM Điện Tử Điểm Đề thi – NH: 2017-2018 Chữ ký giám thị Môn: Vi xử lý – Mã MH: EE2013 Ngày thi: 30/05/2018 – Thời gian làm bài: 110 phút Đề có trang + trang phụ lục SV làm trực tiếp đề (SV khơng dùng tài liệu SV KHƠNG dùng ĐTDĐ, PC, Laptop, iPad PC Tablet) Họ tên SV: MSSV: Nhóm: (Các câu hỏi 3, 4, 5, phải viết hợp ngữ) (1) Beginning (2) Developing (3) Accomplished (4) Exemplary Câu (2.0đ)     Câu (2.0đ)     Câu (1.5đ)     Câu (1.5đ)     Câu (1.0đ) Câu (2.0đ) Tổng cộng (10đ) Câu 1: (2.0 đ) a Hãy giải thích chức giải mã lệnh CPU …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… b Nếu CPU có 16 đường địa chỉ, dung lượng tối đa nhớ truy cập c Trong VĐK 8051, ghi PC (program counter) có bit d Câu lệnh “MOV A, #44H” câu lênh -byte e Thanh ghi chứa cờ báo 8051 gọi _ f Tìm giá trị cờ nhớ CY AC cho đoạn code sau: MOV A, #0FFH ADD A, #01 …………………………………………………………………………………………………… …………………………………………………………………………………………………… g Băng ghi sử dụng thay đổi giá trị RS0 RS1 ghi PSW qua hai câu lệnh sau: SETB PSW.3 SETB PSW.4 h Đia bit P1.5: i Địa ghi R3 băng ghi 3: j Cho biết chân /EA có ý nghĩa gì? …………………………………………………………………………………………………… …………………………………………………………………………………………………… VXL_Thi HK_172_trang 1/6 Câu 2: (1.0 đ) VXL tổng quát Hãy điền vào chỗ trống hình sau cho thấy hiệu ứng cách định địa chỉ: Câu 3: (2.0 đ) a) Cho số nhị phân không dấu 16 bit M (chứa ghi R7:R6) N (chứa ghi R5:R4) Hãy viết chương trình SOSANH so sánh số M N Kết cất vào cờ F0 (= M ≥ N; = M < N) …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… b) Cho chuỗi số gồm 10 số nhị phân không dấu 16 bit chứa RAM nội ô nhớ 40H (byte thấp chứa nhớ có địa thấp, byte cao chứa nhớ có địa cao) Xem có sẵn chương trình SOSANH câu a (không cần viết nội dung), viết chương trình để tìm số lớn chuỗi số cất kết vào ô nhớ 31H (byte cao) 30H (byte thấp) VXL_Thi HK_172_trang 2/6 …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… Câu 4: (2.0 đ) a Viết chương trình thực công việc sau lặp lại, biết 8051 sử dụng thạch anh 11,0592 MHz: • Nhận số nhị phân không dấu bit X từ bit thấp Port số nhị phân không dấu bit Y từ bit thấp Port • Nhận bit D từ chân P2.4 • Phát nối tiếp data bit, bao gồm D7 – D4 số X (4 bit), D3 – D0 số Y (4 bit), bit thứ bit D, cổng nối tiếp với baudrate 19200 …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… VXL_Thi HK_172_trang 3/6 b Viết chương trình thực cơng việc sau lặp lại cho vi điều khiển 8051 khác (sử dụng thạch anh 11,0592 MHz) để thu data nối tiếp từ vi điều khiển 8051 câu a: • Nhận data bit từ cổng nối tiếp với baudrate 19200, gồm số X,Y bit D mô tả câu a • Thực bit D = bit D =1 • Xuất kết Port …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… Câu 5: (1.5 đ) a Viết chương trình tạo xung tần số 400Hz ngõ P1.0 Cho XTAL =12MHz (0.5đ) ………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… VXL_Thi HK_172_trang 4/6 b Viết chương trình tạo sóng đồng thời chân P1.0 P1.1 theo hình vẽ đây, dùng ngắt timer Lưu ý tần số chân khác (1.0 đ) ………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… Câu 6: (1.5 đ) Mạch tính cước taxi hệ thống vi điều khiển 8051 gồm: • Nút nhấn: nhấn tạo xung cạnh xuống; nối vào vào chân /INT0 • Bộ đếm km: tạo xung cạnh xuống xe chạy km; nối vào chân /INT1 • LED đoạn: hiển thị giá tiền tính theo đơn vị Ngàn đồng; có chữ số, nối với Port qua IC giải mã BCD sang LED đoạn 7447 Hoạt động mạch: • Ban đầu chưa có khách hiển thị giá trị 00 • Khi khách lên xe nhấn nút lần 1, xe chạy tính tiền theo giá 1km Ngàn đồng (giả sử giá tiền không vượt 99 Ngàn đồng) Chú ý bắt đầu chở khách đồng hồ nhảy Ngàn đồng, 1km thêm Ngàn đồng • Tới nơi đến, nhấn nút lần để chốt giá tiền hiển thị cho khách • Khách trả tiền xuống xe tài xế nhấn nút lần trở lại trạng thái ban đầu Hãy viết chương trình mơ tả hoạt động (Gợi ý: phần hiển thị giá tiền nên viết chương trình chính) VXL_Thi HK_172_trang 5/6 …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… …………………………………………… Kết thúc thi HK VXL_Thi HK_172_trang 6/6 DHQG TPHCM–ĐH Bách Khoa Khoa Đ-ĐT–BM Điện Tử Điểm Đề thi – NH: 2017-2018 Chữ ký giám thị Môn: Vi xử lý – Mã MH: EE2013 Ngày thi: 30/05/2018 – Thời gian làm bài: 110 phút Đề có trang + trang phụ lục SV làm trực tiếp đề (SV khơng dùng tài liệu SV KHƠNG dùng ĐTDĐ, PC, Laptop, iPad PC Tablet) Họ tên SV: _ĐÁP ÁN _ MSSV: Nhóm: (Các câu hỏi 3, 4, 5, phải viết hợp ngữ) (1) Beginning (2) Developing (3) Accomplished (4) Exemplary Câu (2.0đ)     Câu (2.0đ)     Câu (1.5đ)     Câu (1.5đ)     Câu (1.0đ) Câu (2.0đ) Tổng cộng (10đ) Câu 1: (2.0 đ) a b c d Trong VĐK 8051, ghi PC (program counter) có _16 _ bit Câu lệnh “MOV A, #44H” câu lênh -byte Thanh ghi chứa cờ báo 8051 gọi PSW _ Hãy giải thích chức giải mã lệnh CPU Xác định phép toán/lệnh, toán hạng cách định địa câu lệnh e Nếu CPU có 16 đường địa chỉ, dung lượng tối đa nhớ truy cập _64K ô nhớ 64K x n (bit) với n số bit data ô nhớ f Tìm giá trị cờ nhớ CY AC cho đoạn code sau: MOV A, #0FFH ADD A, #01 …CY = 1, AC = ……………………………………………………………………… g Băng ghi sử dụng thay đổi giá trị RS0 RS1 ghi PSW qua hai câu lệnh sau: Bank SETB PSW.3 SETB PSW.4 h Đia bit P1.5: 95H i Địa ghi R3 băng ghi 3: _1BH _ j Cho biết chân /EA có ý nghĩa gì? /EA = : chọn ROM /EA = 1: chọn ROM nội VXL_Thi HK_172_trang 1/7 Câu 2: (1.0 đ) VXL tổng quát Hãy điền vào chỗ trống hình sau cho thấy hiệu ứng cách định địa chỉ: (PC =320) Câu 3: (2.0 đ) a) Cho số nhị phân không dấu 16 bit M (chứa ghi R7:R6) N (chứa ghi R5:R4) Hãy viết chương trình SOSANH so sánh số M N Kết cất vào cờ F0 (= M ≥ N; = M < N) Cách 1: SOSANH: CLRF0: KHAC: SETF0: KT: Cách 2: MOV A, R7 CJNE A, 05H, KHAC MOV A, R6 CJNE A, 04H, $+3 JNC SETF0 CLR F0 SJMP KT JC CLRF0 SETB F0 RET SOSANH: MOV A, R7 CJNE A, 05H, KHONGBANG ;SS byte cao SJMP BTHAP ; neu bang thi SS byte thap KHONGBANG: JC MNHOHONN SETB F0 SJMP EXIT MNHOHONN: CLR F0 SJMO EXIT BTHAP: MOV A, R6 CJNE A, 04H, $+3 ;SS byte thap JC MNHOHONN SETB F0 EXIT: RET b) Cho chuỗi số gồm 10 số nhị phân không dấu 16 bit chứa RAM nội ô nhớ 40H (byte thấp chứa nhớ có địa thấp, byte cao chứa nhớ có địa cao) Xem có sẵn chương trình SOSANH câu a (khơng cần viết nội dung), viết chương trình để tìm số lớn chuỗi số cất kết vào ô nhớ 31H (byte cao) 30H (byte thấp) VXL_Thi HK_172_trang 2/7 Cách 1: MOV R3, #10 MOV R0, #40H MOV R5, #0 ; MAX MOV R4, #0 LP: MOV 06H, @R0 INC R0 MOV 07H, @R0 INC R0 ACALL SOSANH JB F0, TT MOV R5, 07H MOV R4, 06H TT: DJNZ R3, LP MOV 31H, R5 MOV 30H, R4 SJMP $ Cách 2: ORG 0000H MOV R2,#9 ;lap lan MOV 31H,41H ;lay so max la so dau tien (byte cao) MOV 30H,40H ;byte thap MOV R0,#42H ;dia chi so ke tiep LOOP: MOV R7,31H ;lay so max hien tai vao R7:R6 MOV R6,30H MOV A,@R0 ;lay so ke tiep vao R5:R4 MOV R4,A INC R0 MOV R5,A INC R0 ACALL SOSANH ; SS so max hien tai voi so ke tiep chuoi JB F0, CONT ;neu lon hon tiep tuc MOV 31H, R5 ;neu nho hon thi lay so ke tiep lam max MOV 30H, R4 CONT: DJNZ R2, LOOP SJMP $ Câu 4: (2.0 đ) a) Viết chương trình thực công việc sau lặp lại, biết 8051 sử dụng thạch anh 11,0592 MHz: Nhận số nhị phân không dấu bit X từ bit thấp Port số nhị phân không dấu bit Y từ bit thấp Port Nhận bit D từ chân P2.4 Phát nối tiếp data bit, bao gồm D7 – D4 số X (4 bit), D3 – D0 số Y (4 bit), bit thứ bit D, cổng nối tiếp với baudrate 19200 Cách 1: LP: ORG 0000H MOV TMOD, #20H MOV TH1, # -3 MOV A, PCON SETB ACC.7 MOV PCON, A SETB TR1 MOV SCON, #10000010B MOV C, P2.4 MOV TB8, C MOV A, P1 ANL A, #0FH SWAP A MOV R7, A MOV ANL ADD JNB CLR MOV SJMP A, P2 A, #0FH A, R7 TI, $ TI SBUF, A LP VXL_Thi HK_172_trang 3/7 Cách 2: ORG 0000H MOV SCON, #0C2H ;hoac 0D2H MOV A, PCON SETB ACC.7 MOV PCON,A MOV TMOD,#20H MOV TH0,#-3 SETB TR1 LOOP: MOV A, P1 ANL A, #0FH SWAP A MOV R2, A MOV A, P2 MOV C, ACC.4 MOV TB8, C ANL A, #0FH ORL A, R2 JNB TI, $ CLR TI MOV SBUF, A SJMP LOOP END ;R2 (4 bit cao) chua so X ;C chua bit D ; A (4 bit thap) chua so Y ; A chua X_Y b) Viết chương trình thực cơng việc sau lặp lại cho vi điều khiển 8051 khác (sử dụng thạch anh 11,0592 MHz) để thu data nối tiếp từ vi điều khiển 8051 câu a: Nhận data bit từ cổng nối tiếp với baudrate 19200, gồm số X, Y bit D mô tả câu a Thực bit D = bit D =1 Xuất kết Port Cách 1: LP: ORG 0000H MOV TMOD, #20H MOV TH1, # -3 MOV A, PCON SETB ACC.7 MOV PCON, A SETB TR1 MOV SCON, #10010000B JNB RI, LP CLR RI MOV R7, SBUF MOV A, R7 ANL A, #0FH MOV R6, A MOV A, R7 ANL A, #0FH SWAP A JB ADD SJMP TRU: SUBB JNB CPL INC TT: MOV SJMP RB8, TRU A, R6 TT A, R6 ACC.7, TT A A P1, A LP VXL_Thi HK_172_trang 4/7 Điểm ĐÁP ÁN ĐỀ THI VI XỬ LÝ HK (2014-2015) Chữ ký giám thị Ngày thi: 12/06/2015 Thời gian làm bài: 110 phút Đề thi có trang + trang phụ lục Sinh viên làm đề KHÔNG sử dụng tài liệu HỌ TÊN: ……………………………………………… MSSV: ………………… …… Duyệt BM Điện tử GV đề: NGUYỄN TRỌNG LUẬT CÁC CÂU HỎI ÁP DỤNG TRÊN VI ĐIỀU KHIỂN 8051 Câu 1: (2 điểm) Cho mạch giải mã địa nhớ sử dụng IC 74138 hình vẽ A11 A12 A13 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A(LSB) B C A15 A14 G1 G2A G2B G2B CS1 CS0 A10 A9 A8 CS2 a Xác định địa ngõ decoder tín hiệu chọn chip CS0 cho nhớ ROM: A15 A14 A13 A12 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 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 Địa CS0: 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 (1đ) Vùng địa (HEX) X X X X X X X X /Y0: /Y1: /Y2: /Y3: /Y4: /Y5: /Y6: /Y7: 8000H – 87FFH 8800H – 8FFFH 9000H – 97FFH 9800H – 9FFFH A000H – A7FFH A800H – AFFFH B000H – B7FFH B800H – BFFFH 9800H - A7FFH b Vẽ thêm mạch tín hiệu chọn chip CS1 CS2 với yêu cầu: - CS1: chọn chip RAM có dung lượng 8KB địa đầu Y0 - CS2: chọn I/O có 256 địa có địa CS1 Xác định địa tín hiệu chọn chip (giải thích) (1đ) Mạch giải mã 74138 phân vùng 2KB CS1 vùng 8KB nên ghép vùng: Y0, Y1, Y2, Y3 (hình vẽ): 8000H – 9FFFH CS2 vùng 256B, lấy vùng Y4 với A10 = A9 = A8 = 0: A000H – A0FFH (hình vẽ) Trang / Câu 2: (2 điểm) a Viết lệnh hợp ngữ để chọn bank ghi cất nội dung ghi A R6 vào vùng stack: SETB RS1 (PSW.4) PUSH ACC CLR RS0 (PSW.3) PUSH 16H (R6 Bank 2) ( MOV PSW, # 00010000B (0.5đ) b Hồn tất lệnh hợp ngữ có nhiệm vụ sau Thanh ghi A có giá trị nhị phân sau thực hiện? *Làm cho cờ OV=1: *Làm cho cờ P=1: MOV A, # 01001100B MOV A, # 01110001B ADD ANL Thanh ghi A: A, # 01000000B A= 10001100B A, # 11111110B A= (0.5đ) 01110000B (số dương cộng số dương thành số âm) (xóa thêm bit 1) c Cho lệnh gọi chương trình AJMP LAP chứa nhớ chương trình địa B7FFH Xác định địa trang phạm vi địa hợp lệ nhãn LAP (Giải thích) PC lệnh kế = B7FFH + (lệnh byte) = B801H = 1011 1000 0000 0001 B Địa trang bit cao PC: 10111 : trang 23 (0.5đ) Phạm vi hợp lệ trang 2KB này: 1011 1XXX XXXX XXXX : B800H  BFFFH d Lệnh JZ XOA có mã máy 60H 9EH chứa nhớ chương trình từ địa 6D20H Xác định địa nhãn XOA (Giải thích) PC lệnh kế = 6D20H + (lệnh byte) = 6D22H Lệnh nhảy có độ dời 9EH (số âm) Nhãn XOA có địa chỉ: 6D22H + FF9EH = 6CC0H (0.5đ) Câu 3: (1 điểm) Viết đoạn chương trình hợp ngữ theo lưu đồ sau: R7 = MOV R7, #0 lap MSB(A) = Y thoat LAP: JB N ; 1MC ACC.7, THOAT ; 2MC RL A ; 1MC INC R7 ; 1MC SJMP LAP Quay trái A ; 2MC (0.5đ) Tăng R7 lên Trang / Với A = 26, tính số chu kỳ máy (MC) để đoạn chương trình nhảy đến nhãn thoat A = 26 = 0001 1010 B, chương trình quay trái ghi A MSB(A) = nhảy đến nhãn THOAT Như vậy, vòng lặp thực lần lần thứ thực lệnh JB nhảy Vậy số chu kỳ máy: + (2 + + + 2) + = 21MC (0.5đ) Câu 4: (1 điểm) Viết chương trình hợp ngữ tìm giá trị y (kết cất vào ghi B) cách: có dùng lệnh MUL không dùng MUL (dùng bảng tham chiếu) Giá trị y cần tính y = x2 -2x + 3, với giá trị x chứa ghi A có giá trị từ đến *Dùng lệnh MUL: (0.5đ) * Dùng bảng tham chiếu: MOV R7, A y(0) = 3, y(1) = 2, y(2) = 3, RL A y(4) = 11, y(5) = 18, y(6) = 27 MOV R6, A ; R6 = 2x y(7) = 38, y(8) = 51, y(9) = 66 MOV A, R7 MOV B, A MUL AB ADD (0.5đ) y(3) = MOV DPTR, # BANG MOVC A, @A+DPTR A, #3 ; A = x2 + MOV B, A CLR C SJMP $ SUBB A, R6 ; A = x2 - 2x + MOV B, A SJMP $ ; A = x2 BANG: DB DB 3, 2, 3, 6, 11 18, 27, 38, 51, 66 Câu 5: (1 điểm) Mạch 8051 có cơng tắc SW P1.1 P1.0 Viết chương trình hợp ngữ C (không dùng ngắt) kiểm tra SW sau phút để làm thay đổi ngõ Port theo quy luật bảng sau (cho sẵn chương trình tạo trễ giây DELAY_1s) P1.1 0 1 P1.0 1 Port Quay phải bit Quay trái bit Lấy đảo bit Hoán đổi bit cao bit thấp Trang / (1đ) phút = 60 giây LAP: MOV R7, #60 DL: ACALL DELAY_1s CPL A DJNZ R7, DL SJMP TT MOV A, P1 SS_3: SWAP A ANL A, #0000 0011B TT: MOV P2, A MOV R6, A SJMP LAP MOV A, P2 CJNE R6, #0, SS_1 RR A JB P1.1, TT1 SJMP TT JB P1.0, TT2 R6, #1, SS_2 RR A RL A SJMP TT SJMP TT SS_1: CJNE SS_2: CJNE R6, #2, SS_3 Cách khác: kiểm tra bit P1.1 P1.0 TT2: RL ; 00 A ; 01 Câu 6: (1 điểm) D0 Data D1 D2 D3 D4 D5 D6 D7 Clock Tốc độ baud Viết chương trình hợp ngữ C mô hoạt động chế độ ghi dịch (phát liệu) Port nối tiếp Với chân P1.7 ngõ Data, chân P1.6 xung Clock Chương trình có nhiệm vụ lấy nội dung ô nhớ RAM nội có địa 20H phát nối tiếp ngõ Data, với tốc độ baud 1000bps tần số thạch anh XTAL = 6MHz Để mô chế độ ghi dịch (phát), thực vòng lặp lần gồm bước: - Cho bit (trọng số thấp trước) phát ngõ Data (P1.7) - Tạo xung cạnh lên cho ngõ clock (P1.6) - Tạo trễ với thời gian = 1/ fbaud = 1/1000bps = 1ms = 1000us = 250 2us MOV R7, #8 MOV R6, #250 MOV A, 20H DJNZ R6, $ ; chuyển qua CY DJNZ R7, LAP MOV P1.7, C ; xuất data SJMP $ CLR P1.6 ; tạo xung clock SETB P1.6 ; cạnh lên LAP: RRC A ; trễ 1ms (thay lệnh RRC A MOV C, ACC.0 RR Trang / A ) Câu 7: (1,5 điểm) a Viết chương trình SOSANH, có nhiệm vụ so sánh số nhị phân (mỗi số 16 bit) Số thứ nội dung cặp ghi R7_R6 số thứ nội dung cặp ghi R5_R4 Chương trình tìm giá trị lớn số cất vào cặp ghi R3_R2; số xóa cặp ghi R3_R2 (Các ghi R7, R5, R3 byte cao số 16 bit) SOSANH: MOV A, R7 NHO: MOV R3, 05H CJNE A, 05H, KHAC MOV A, R6 (0,75 điểm) MOV R2, 04H KTHUC: RETI CJNE A, 04H, KHAC MOV R3, #0 MOV R2, #0 SJMP KTHUC KHAC: JC NHO MOV R3, 07H MOV R2, 06H SJMP KTHUC b Cho port nối tiếp hoạt động chế độ UART bit, tốc độ baud 19200, tần số thạch anh 11.059MHz Viết chương trình hợp ngữ nhận từ port nối tiếp byte liên tiếp số nhị phân 16 bit (byte đầu bit thấp) Sử dụng chương trình SOSANH để so sánh số vừa nhận với số nhị phân 16 bit nhập từ Port Port (Port bit cao) Kết phát trở lại port nối tiếp (byte trọng số thấp phát trước) (0,75 điểm) MOV TMOD, #20H MOV R5, P1 MOV TH1, # -3 MOV R4, P2 MOV A, PCON ; SMOD = ACALL SOSANH SETB ACC.7 JNB MOV PCON, A CLR TI SETB TR1 MOV SBUF, R2 MOV SCON, # 01010010B JNB JNB CLR TI RI, $ ; thu byte CLR RI MOV R6, SBUF JNB ; byte thấp SJMP $ CLR RI ; byte cao Trang / ; phát R3_R2 ; byte thấp TI, $ MOV SBUF, R3 RI, $ MOV R7, SBUF TI, $ ; byte cao Câu 8: (1,5 điểm) Viết chương trình hợp ngữ sử dụng ngắt timer để tạo sóng vng ngõ P1.0 có tần số thay đổi luân phiên 200Hz 1KHz sau 0,5 giây Biết tần số thạch anh XTAL = 12MHz Sử dụng ngắt Timer: - Ngắt timer0: 0,5 giây làm thay đổi biến trạng thái: cờ F0 - Ngắt timer1: tạo sóng vng cho P1.0, với giá trị nạp phụ thuộc vào F0 F0 = 0: tạo xung f1= 200Hz => chu kỳ= 1/200Hz = 5ms => giá trị nạp -2500 F0 = 1: tạo xung f2= 1KHz => chu kỳ = 1/1KHz = 1ms => giá trị nạp -500 ORG 0000H ISRT0: CLR TR0 LJMP MAIN DJNZ R7, THOAT ORG 000BH CPL LJMP ISRT0 MOV R7, #10 ORG 001BH F0 THOAT: MOV TH0, #HIGH(-50000) LJMP ISRT1 MOV TL0, #LOW(-50000) MAIN: MOV TMOD, #11H SETB TR0 MOV R7, # 10 ; 0.5s = 10 50000us RETI MOV TH0, #HIGH(-50000) ISRT1: CLR TR1 MOV TL0, #LOW(-50000) CPL P1.0 SETB TR0 JB F0, NAP CLR F0 ; tạo xung 200Hz MOV TH1, #HIGH(-2500) MOV TH1, #HIGH(-2500) MOV TL1, #LOW(-2500) MOV TL1, #LOW(-2500) SJMP TT SETB TR1 NAP: MOV IE, #10001010B SJMP $ MOV TH1, #HIGH(-500) MOV TL1, #LOW(-500) TT: SETB TR1 RETI END Các cách viết khác: - Chương trình liên tục tạo trễ 0.5s để làm bù bit trạng thái F0 Dùng ngắt timer để tạo xung theo F0 - Dùng ngắt timer 0.5s để bù bit F0 Chương trình tạo xung theo F0 - Dùng ngắt timer để tạo xung khác Chương trình tạo trễ 0.5s phép ngắt cấm ngắt cịn lại; sau tạo trễ 0.5s để làm ngược lại (cách không cần biến trạng thái F0) HẾT Trang / ... HK_CQ_162_trang 6/6 Điểm ĐÁP ÁN ĐỀ THI VI XỬ LÝ HK (2014-2015) Chữ ký giám thị Ngày thi: 12/06/2015 Thời gian làm bài: 110 phút Đề thi có trang + trang phụ lục Sinh vi? ?n làm đề KHÔNG sử dụng tài... R7, A ĐHQG TPHCM? ??ĐH Bách Khoa Khoa Đ-ĐT–BM Điện Tử Điểm Đề thi – NH: 2016-2017 Chữ ký giám thị Môn: Vi xử lý – Mã MH: EE2013 Ngày thi: 29/05/2017 – Thời gian làm bài: 120 phút Đề có câu, trang... HK_172_trang 6/6 DHQG TPHCM? ??ĐH Bách Khoa Khoa Đ-ĐT–BM Điện Tử Điểm Đề thi – NH: 2017-2018 Chữ ký giám thị Môn: Vi xử lý – Mã MH: EE2013 Ngày thi: 30/05/2018 – Thời gian làm bài: 110 phút Đề có trang + trang

Ngày đăng: 19/01/2022, 16:01

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan