Câu 1 trong đề thi Câu 1. Phân loại và mô tả vai trò ,nhiệm vụ của từng loại BUS trong vi xử lí ? Với vi xử lý loại 8 bit sẽ có bus dữ liệu 8 bit và bus địa chỉ 16 bit có được không,tại sao Bus là thành phần kết nối nội bộ tốc độ cao. Bus được sử dụng để gửi tín hiệu điều khiển và dữ liệu giữa bộ xử lý và các thành phần khác. Có ba loại bus được sử dụng. Bus địa chỉ mang địa chỉ bộ nhớ từ bộ xử lý đến các thành phần khác như thiết bị lưu trữ chính và thiết bị đọc ghi. Bus địa chỉ cuyền theo một chiều . Bus dữ liệu mang dữ liệu giữa bộ xử lý và các thành phần khác. Bus dữ liệu chuyền theo hai chiều Bus điều khiển mang tín hiệu điều khiển từ bộ xử lý đến các thành phần khác. Bus điều khiển cũng mang các xung clock. Bus điều khiển cuyền theo một chiều . Kích thước của bus địa chỉ xác số lượng địa chỉ mà mà bộ điều khiển có thể truy cập. Vì vậy, một bus địa chỉ 16 bit có thể truy cập 65,536 vị trí địa chỉ . Nếu bộ nhớ được định địa chỉ theo byte, thì điều này có nghĩa là bộ vi xử lý có thể đánh địa chỉ 65,536 byte. Kích thước bus dữ liệu xác định số bit mà bộ vi xử lý có thể đọc ghi trong một lần. Vì vậy, một bus dữ liệu 8 bit có nghĩa là chip có thể truy cập 8 bit dữ liệu trong một lần đọcghi. Bất kỳ sự kết hợp nào của address bus và data bus dữ liệu đều có thể thực hiện được.
Câu đề thi Câu Phân loại mơ tả vai trị ,nhiệm vụ loại BUS vi xử lí ? Với vi xử lý loại bit có bus liệu bit bus địa 16 bit có khơng,tại Bus thành phần kết nối nội tốc độ cao. Bus sử dụng để gửi tín hiệu điều khiển liệu xử lý thành phần khác Có ba loại bus sử dụng Bus địa - mang địa nhớ từ xử lý đến thành phần khác thiết bị lưu trữ thiết bị đọc/ ghi. Bus địa cuyền theo chiều Bus liệu - mang liệu xử lý thành phần khác. Bus liệu chuyền theo hai chiều Bus điều khiển - mang tín hiệu điều khiển từ xử lý đến thành phần khác. Bus điều khiển mang xung clock. Bus điều khiển cuyền theo chiều Kích thước bus địa xác số lượng địa mà mà điều khiển truy cập Vì vậy, bus địa 16 bit truy cập 65,536 vị trí địa Nếu nhớ định địa theo byte, điều có nghĩa vi xử lý đánh địa 65,536 byte Kích thước bus liệu xác định số bit mà vi xử lý đọc / ghi lần Vì vậy, bus liệu bit có nghĩa chip truy cập bit liệu lần đọc/ghi Bất kỳ kết hợp address bus data bus liệu thực Câu Một chương trình vi xử lí thực nào, vai trị đếm chương trình ? Nạp lệnh -> Giải mã lệnh -> Thực thi lệnh -> Ghi kết Bộ đếm/Bộ định thời: Đây ngoại vi thiết kế để thực nhiệm vụ đơn giản: đếm xung nhịp Mỗi có thêm xung nhịp đầu vào đếm giá trị đếm tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm 01 đơn vị (trong chế độ đếm lùi/đếm xuống) Xung nhịp đưa vào đếm hai loại: o Xung nhịp bên IC: Đó xung nhịp tạo nhờ kết hợp mạch dao động bên IC linh kiện phụ bên nối với IC Trong trường hợp sử dụng xung nhịp loại này, người ta gọi định thời (timers) Do xung nhịp bên loại thường đặn nên ta dùng để đếm thời gian cách xác o Xung nhịp bên ngồi IC: Đó tín hiệu logic thay đổi liên tục 02 mức 0-1 không thiết phải đặn Trong trường hợp người ta gọi đếm (counters) Câu Các đệm liệu chiều chiều có chức ? o Mục đích để nâng cơng suất tín hiệu o Dịng vào/ra chân vi xử lý/vi điều khiển thấp nên cần khuếch đại đường truyền o Đó 74LS373,244,245 Câu Ngắt ? Nguyên tắc gọi hoạt động hàm ngắt ? Có hai loại ngắt: o Ngắt cứng: ngắt tác động vào VXL thông qua chân ngắt o Ngắt mềm: Ngắt gây phần mềm (các lệnh gọi ngắt) Câu Khối thực lệnh vào khối chức vi xử lí ? Câu Thế nhớ liệu,bộ nhớ chương trình ,thanh ghi ? Bộ nhớ chương trình: Nơi ứng dụng lưu trữ Một số chip cho phép sửa đổi phần nhớ chương trình khối , bạn lưu trữ biến nhớ chương trình Thơng thường lưu trữ số - tức biến khởi tạo mà bạn không thay đổi - nhớ chương trình Có vai trị nhu ROM Bộ nhớ liệu: nơi lưu trữ các biến Có thể đọc ghi giá trị, lưu trữ liệu bạn tạm thời RAM Hoạt động xử lý chủ yếu liên quan đến xử lý liệu Những liệu lưu trữ nhớ truy cập từ Tuy nhiên, việc đọc lưu trữ liệu vào nhớ lại làm chậm tiến trình phải gửi yêu cầu liệu thông qua bus điều khiển Để tăng tốc độ hoạt động xử lý, vi xử lý có chứa vài nhớ để lưu trữ gọi ghi Số lượng giới hạn ghi xây dựng chip vi xử lý Có 10 ghi 32-bit ghi 16-bit kiến trúc IA-32 Những ghi nhóm thành loại: Những ghi đa (General registers) Những ghi điều khiển (Control registers) Những ghi phân đoạn (Segment registers) Những ghi đa lại chia thành nhóm: Thanh ghi liêu Thanh ghi trỏ Thanh ghi số (Index) Câu Bus địa chỉ, bus liệu bus điều khiển giống khác ? Có ba loại bus sử dụng Bus địa - mang địa nhớ từ xử lý đến thành phần khác thiết bị lưu trữ thiết bị đọc/ ghi. Bus địa cuyền theo chiều Bus liệu - mang liệu xử lý thành phần khác. Bus liệu chuyền theo hai chiều Bus điều khiển - mang tín hiệu điều khiển từ xử lý đến thành phần khác. Bus điều khiển mang xung clock. Bus điều khiển cuyền theo chiều Câu Vai trò xung nhịp đồng hồ cấp cho vi xử lí o Đối với liệu Serial Data (dữ liệu nối tiếp), xung Clock theo liệu Data để giúp liệu xác định cho giá trị Từ đó, ta thấy, nhờ có xung Clock mà IC xử lý tín hiệu số Cho nên, xung Clock coi điều kiện để đảm bảo IC hoạt động o Một vai trò khác xung Clock đồng liệu tồn hệ thống máy tính Câu đề thi (đề 7) Sử dụng IC giải mã cổng logic , vxl 8085 với nhớ 8Kb bao gồm : địa 0xB000 , từ IC nhớ dung lượng 4Kbyte Bài làm: 8Kb IC nhớ dung lượng 4Kb -> có IC 4K=22.1k = 22 210 =212 ->cần dung lượng 12 đường địa 2IC IC1 IC2 Trạng thái Bắt đầu Kết thúc Bắt đầu Kết thúc 1011 1011 1100 1100 CS1: A15 = A13= A12= ; A14 = CS = A15 + A14 + A13 + A12 CS2: A15 = A14 = ; A13= A12= ; CS = A15 + A14 + A13 + A12 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 (đề 4) Sử dụng IC giải mã cổng logic , vxl 8085 với nhớ 6Kb bao gồm : địa 0x8000 , từ IC nhớ dung lượng 4kbvà kb (1000) Bài làm: 6Kb IC nhớ dung lượng 4Kbvà 2kb -> có IC 4K=22.1k = 22 210 =212 ->cần dung lượng 12 đường địa 2K=21.1k = 21 210 =211 ->cần dung lượng 11 đường địa 2IC IC1 IC2 Trạng thái Bắt đầu Kết thúc Bắt đầu Kết thúc 1000 1000 1001 1001 0000 1111 000 111 CS1: A15 = ; A14 = A13 = A12= CS = A15 + A14 + A13 + A12 CS2: A15 = A12 = ; A14 = A13= A11= ; CS = A15 + A14 + A13 + A12 + A11 0000 1111 0000 1111 0000 1111 0000 1111 (đề 6) Sử dụng IC giải mã cổng logic , vxl 8085 với nhớ 8Kb bao gồm : địa 0xB000 , từ IC nhớ SRAM dung lượng 4Kb(1011) Như đề ( đề 2) Sử dụng IC giải mã cổng logic , vxl 8085 với nhớ 8Kb bao gồm : địa 0x0000 , từ IC nhớ SRAM dung lượng 4Kbx8bits(0000) Bài làm 8Kb IC nhớ dung lượng 4Kb -> có IC 4K=22.1k = 22 210 =212 ->cần dung lượng 12 đường địa 2IC IC1 IC2 Trạng thái Bắt đầu Kết thúc Bắt đầu Kết thúc 0000 0000 0001 0001 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 CS1: A15 = A13 = A12= A14 = CS = A15 + A14 + A13 + A12 CS2: A12 =1 ; A15 = A13 = A14 = ; CS = A15 + A14 + A13 + A12 Sử dụng IC giải mã cổng logic , vxl 8085 với nhớ 4Kb bao gồm : địa 0x4000 , từ IC nhớ dung lượng kb (0100) Bài làm: 4Kb IC nhớ dung lượng 2Kb -> có IC 2K=21.1k = 21 210 =211 ->cần dung lượng 11 đường địa 2IC IC1 IC2 Trạng thái Bắt đầu Kết thúc Bắt đầu Kết thúc 0100 0100 0100 0100 0 1 CS1: A15 = A13 = A12= A11= ; A14 = CS = A15 + A11+ A13 + A12+ A14 000 111 000 111 0000 1111 0000 1111 0000 1111 0000 1111 CS2: A15 = A13 = A12= ; A14 = A11= CS = A15 + A13 + A12+ A14 + A11 Một số giải câu đề Nháy led sáng tắt #include #use delay(clock=800000) #fuses HS,NOWDT void main (void) { output_low(PIN_B0); output_low(PIN_B1); while(true) { output_high(pin_B2); delay_ms(500); output_low(pin_B2); delay_ms(500); output_high(pin_B2); delay_ms(300); output_low(pin_B2); delay_ms(300); if(input(PIN_A0)==0) { output_low(PIN_B1); output_high(PIN_B0); delay_ms(500); output_low(PIN_B0); delay_ms(500); } if(input(PIN_A0)==1) { output_low(PIN_B0); output_high(PIN_B1); delay_ms(200); output_low(PIN_B1); delay_ms(800); output_low(PIN_B0); } } } led 999 #include #use delay(clock=20000000) #int_timer1 unsigned char MaLed[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; signed int16 dem=000; void demlen(int32 dem); int16 count=0; #int_timer1 void ngat_timer1() // moi lan tran = 10ms tuc tran 50ms =>dem =5 { set_timer1(15536); count++; if(count==5) { count=0; output_toggle(pin_a1); } } void main() { setup_timer_1(t1_internal|t1_div_by_1); // 20M/4 = 5M , => T = 0.2us t1 = 65536xung =>T=13107.2 us= 13.1072ms => neu 10ms settimer tu 10*65536/13.1072=50000=> settimer(65536-50000) set_timer1(15536); enable_interrupts(int_timer1); enable_interrupts(global); while(TRUE) { demlen(dem); } } void quetled(int32 dem) { output_b(MaLed[dem/100]); output_c(MaLed[(dem/10)%10]); output_d(MaLed[dem%10]); } void demlen(int32 dem) { for(dem=000;dem= 300 && count2 < 350){ if(count == 10){ dem5 ; dem = dem5; count = 0; } led3 = led1= 0; led2 =1; } else if(count2 >= 350 && count2 < 700){ if(count == 10){ dem35 ; dem = dem35; count = 0; } led3 = 1; led1 = led2 =0; } else{ count2 = 0; } } } void main(void) { TRISD = 0x00; TRISC = 0x00; TRISB = 0x00; T1CON = (1