Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

Trắc nghiệm bài 1: Tổng quan về vi xử lý

1. Vi điều khiển PIC được thiết kế dựa trên kiến trúc Harvard? Đúng
2. Nếu phân chia theo độ rộng bus dữ liệu thì có những dòng vi điều khiển PIC nào?
8, 12, 32 bit
3. Nếu phân chia theo độ rộng bus dữ liệu thì PIC 18F4520 thuộc dòng vi điều khiển PIC
nào? 8 bit
4. Vi điều khiển PIC 18F4520 do hãng nào sản xuất? Microchip
5. Trình biên dịch để lập trình cho vi điều khiển trong môn học này có tên là gì?
MPLAB

Trắc nghiệm bài 2: Kiến trúc của VĐK


1. Dung lương bộ nhớ chương trình (Flash) của Vi điều khiển PIC 18F4520 là bao nhiêu?
32KB
2. Dung lương bộ nhớ dữ liệu (SRAM) của Vi điều khiển PIC 18F4520 là bao nhiêu?
1536 Byte
3. Dung lương bộ nhớ EEPROM của Vi điều khiển PIC 18F4520 là bao nhiêu? 256
Byte
4. Vi điều khiển PIC 18F4520 có bao nhiêu nguồn Reset? 8
5. Bộ tạo dao động của vi điều khiển PIC 18F4520 có bao nhiêu chế độ hoạt động? 10
6. Tần số hoạt động tối đa của vi điều khiển trong môn học này là bao nhiêu MHz? 40
7. Vi điều khiển PIC 18F4520 có bao nhiêu PORT vào ra dữ liệu? 5
8. Vi điều khiển PIC 18F4520 có bao nhiêu chân vào ra dữ liệu? 36
9. PORT C của PIC 18F4520 có bao nhiêu chân vào ra dữ liệu? 8
10. Để thiêt lập hướng dữ liệu trên các PORT của vi điều khiển cần sử dụng thanh ghi
nào? TRIS
11. Muốn PORT B có chiều ra dữ liệu cần sử dụng câu lệnh nào sau đây?
TRISB = 0b00000000;
12. Muốn chân RD2 có chiều vào dữ liệu cần sử dụng câu lệnh nào sau đây?
TRISD = 0b00000100;
13. Câu lệnh #include<p18f4520.h> cần khai ở đâu trong chương trình? Đầu chương
trình
14. Để cấu hình ban đầu cho vi điều khiển cần sử dụng lệnh nào sau đây? #pragma
config
15. Để thiết lập các chân ANx là đầu vào ra số, giá trị ADCON1 = ? 0x0f
16. Để định nghĩa chân vi điều khiển cần sử dụng lệnh nào sau đây? #define

Trắc nghiệm bài 3: Ngắt ngoài


1. Ghép các cụm từ sau thành một khái niệm ngắn gọn về ngắt:
Tạm thời dừng công việc hiện tại và chuyển sang thực hiện 1 nhiệm vụ khác cấp
thiết, quan trọng hơn, sau đó lại quay lại thực hiện tiếp công việc cũ đang thực hiện
dở.

2. Trình thực hiện ngắt của vi điều khiển:


- Thực hiện xong lệnh đang thực hiện dở và dừng CTC
- Lưu giá trị của các thanh ghi vào ngăn xếp
- Thực hiện các lệnh trong CTCPVN
- Phục hồi lại giá trị của các thanh ghi đã lưu
- Thực hiện tiếp các lệnh của CTC

3. Mạch điện nào dưới đây tạo ra sườn âm trên chân INTx khi nhấn PB?

4. Bit nào là bit cho phép ngắt toàn cục? GIE_GIEH


5. Bit nào là bit cho phép nguồn ngắt INT1? INT1IE
6. Bit nào là bit cờ báo ngắt từ nguồn ngắt INT2? INT2IF
7. Bit nào là bit cho phép đặt cách tác động ngắt (bằng sườn âm/dương) của nguồn ngắt
INT3? INTEDG3
8. Bit INT0IE thuộc thanh ghi nào? INTCON
9. Lệnh nào dưới đây cho phép khởi tạo cách tác động ngắt bằng sườn âm?
INTCON2bits. INTEDG0=0;

Trắc nghiệm bài 4: Các bộ định thời/đếm (timer/counter)


1. Bit nào trong số các bit sau dùng để điều khiển bật/tắt Timer0? TMR0ON
2. Bit nào trong số các bit sau dùng để chọn nguồn xung clock đầu vào cho Timer0?
T0CS
3. Bit nào trong số các bit sau dùng để chọn chế độ đếm 8 bit hoặc 16 bit cho Timer0?
T08BIT
4. Bit PSA trong thanh ghi T0CON có chức năng: Để chọn có sử dụng bộ chia tần của
Timer0 hay không
5. Để ghi giá trị ban đầu cho 2 thanh ghi chứa số đếm của Timer0 khi hoạt động ở chế độ
16 bit, ghi theo cách nào là đúng: Ghi TMR0H trước, TMR0L sau
6. Công thức nào dưới đây để tính thời gian trễ T (giây), gọi TimerCount là số xung đếm
được của Timer0, PrescaleValue là hệ số chia tần của Timer0, Fosc là tần số xung clock
hoạt động của vi điều khiển: T = TimerCount*[PrescaleValue/(Fosc/4)]
7. Gọi TimerCount là số xung cần đếm của Timer0 khi hoạt động ở chế độ 16 bit, xác
định giá trị ban đầu nạp cho 2 thanh ghi TMR0H và TRM0L của Timer0 để
sau TimerCount xung thì xảy ra tràn: TMR0H = (65536-TimerCount)/256, TMR0L =
(65536-TimerCount)%256
8. Xác định giá trị cần nạp cho thanh ghi TMR0L của Timer0 hoạt động ở chế độ 8 bit để
sau 100 xung thì xảy ra tràn: TMR0L = 156

Trắc nghiệm bài 5: Ngắt Timer


1. Để cho phép ngắt các ngắt ưu tiên thấp hoạt động, thiết lập nào dưới đây là đúng?
GIEH/GIE=1, GIEL/PEIE=1
2. Bit nào trong số các bit sau dùng để điều khiển cho phép ngắt Timer0? TMR0IE
3. Bit TMR0IF có chức năng: Cờ báo tràn của Timer0
4. Để sử dụng ngắt Timer0 ở mức ưu tiên cao, ta cần set các bit như sau:
RCONbits.IPEN = 1, INTCON2bits.TMR0IP=1
5. Bit TMR0IF được xóa bằng cách nào? Phải có lệnh xóa bit TMR0IF bằng phần
mềm.
6. Giả sử Timer0 hoạt động ở chế độ 8 bit, bit TMR0IF bằng 1 khi nào? Khi xảy ra
tràn ở thanh ghi TMR0L
7. Trước khi thoát chương trình con phục vụ ngắt để quay về thực hiện các lệnh trong
chương trình chính, có nhất thiết phải xóa cờ ngắt không? Có

Trắc nghiệm bài 6: Truyền thông nối tiếp – USART


1. Chức năng bit SPEN trong truyền thông nối tiếp USART là gì? Cho phép PORT nối
tiếp (Quy định RC6 và RC7 được cấu hình là các chân của cổng nối tiếp)
2. Thanh ghi RCSTA có chức năng là thanh ghi điều khiển và trạng thái truyền? Sai
3. Thanh ghi TXSTA có chức năng là thanh ghi điều khiển và trạng thái nhận? Sai
4. Để thiết lập chiều vào/ra cho chân RC6 và RC7 đúng yêu cầu sử dụng USART sử dụng
lệnh nào? TRISC=0x80;
5. Tốc độ baud là gì? Số bit được truyền đi trên 1 giây

Trắc nghiệm bài 7: Biến đổi tương tự - số (ADC)


1. Bộ chuyển đổi tương tự - số được viết bằng Tiếng Anh là?
Analog to Digital Converter
2. Cần tạo một xung trên chân ECO để bắt đầu một quá trình chuyển đổi tương tự - số?
Sai
3. Độ phân giải càng nhỏ thì sai số lượng tử càng nhỏ và độ chính xác càng cao? Sai
4. Số bit đầu ra số của bộ biến đổi tương tự - số (ADC) trên PIC18F4520 là? 10 bit
5. Với nguồn xung FOSC = 12MHz thì cần lựa chọn hệ số chia tần cho nguồn xung cấp của
ADC là? 16 TOSC
6. Các thanh ghi sử dụng để chứa dữ liệu số của ADC là? ADRESH chứa byte cao,
ADRESL chứa byte thấp
7. Để thiết lập AN0, AN1, AN2 là đầu vào tương tự, các chân còn lại là vào ra số thì sử
dụng lệnh nào sau đây? ADCON1=0x0C;
8. Hàm nào trong thư viện adc.h được sử dụng để lựa chọn nguồn xung cấp cho ADC?
OpenADC();
9. Hàm nào trong thư viện adc.h được sử dụng để đọc dữ liệu từ bộ biến đổi tương tự số?
ReadADC();
10. Hàm nào trong thư viện adc.h được sử dụng để lựa chọn kênh đầu vào cho bộ chuyển
đổi tương tự số? SetChanADC();

Trắc nghiệm bài 8: Biến đổi tương tự - số (ADC)


1. Điều chế độ rộng xung được viết tắt bởi cụm từ TA nào? Pulse Width Modulation
2. Độ rộng xung dương và chu kì lần lượt được kí hiệu là? DT, TPWM
3. Vi điều khiển PIC18F4520 có 2 bộ CCP(Capture/Compare/PWM) là CCP0 và CCP1.
Sai
4. Xung PWM1 và PWM2 được tạo ra trên 2 chân nào sau đây? CCP1/RC2,
CCP2/RC1 hoặc CCP2/RB3
5. Module PWM trên PIC18F4520 sử dụng nguồn xung lây từ timer nào? Timer2
6. Thanh ghi 8 bit được PWM sử dụng để tạo chu kì là? PR2
7. Độ rộng xung PWM được thiết lập bằng 10 bit trong các thanh ghi?
CCPRxL:CCPxCON<5:4>
8. Công thức thiết lập chu kì của xung PWM là? TPWM = (PR2+1)*4*TOSC* PVTMR2
9. Công thức thiết lập độ rộng của xung PWM là? DT = (CCPRxL:CCPXCON<5:4>)
* TOSC * (PVTMR2)
10. Để thiết lập chù kì cho xung PWM thì cần sử dụng hàm nào? OpenPWMx()

Trắc nghiệm bài 9: Thiết kế ứng dụng sử dụng PIC18F4520


1. Bước nào trong quy trình thiết kế ứng dụng sử dụng PIC18F4520 cần dùng MPLAB?
Bước 3
2. Bước nào trong quy trình thiết kế ứng dụng sử dụng PIC18F4520 cần dùng bộ nạp
PICkit2? Bước 5
3. Bước nào trong quy trình thiết kế ứng dụng sử dụng PIC18F4520 cần dùng phần mềm
Proteus? Bước 2
4. Chọn tần số thạch anh và xác định câu lệnh để có được thời gian trễ là 10ms:
Fosc=8Mhz; Delay1KTCYx(20);
5. Dòng ra/vào (current sink/source) trên các chân của PIC18F4520 là: 25 mA
6. Khi hiển thị trên các LED 7 đoạn bằng phương pháp quét, thời gian sáng của mỗi LED
cần nhỏ hơn? 40ms
7. Để tách lấy số hàng chục từ biến x và lưu trong biến “chuc” cần dùng câu lệnh nào?
chuc=((x%1000)%100)/10;
8. Để tách lấy số hàng nghìn từ biến x và lưu trong biến “nghin” cần dùng câu lệnh nào?
nghin=x/1000;
9. Cho sơ đồ mạch điện mô phỏng như hình dưới, khối lệnh nào làm cho LED1 và LED2
(bên trái) sáng số 9, các LED khác tắt?

PORTD=0b00000011; PORTC=0b10010000;
Bài 2: PIC18F4520
- CPU: 4MHz – 40MHz
- Bộ nhớ: + ROM (kiểu Flash): 32KB + SRAM: 1536B + EEPROM: 256B
- GPO: 36 chân (PORT A,B,C,D: 8 chân, PORT E: 4 chân)

- Thanh ghi TRIS sử dụng thiết lập hướng DL


+ TRIS Bit = 0; //Chân GPIO có chiều ra
+ TRIS Bit = 1; //Chân GPIO có chiều vào
- Thanh ghi PORT sử dụng xuất or nhập DL
- Thanh ghi LAT sử dụng chốt DL
- Chiều vào / Nhả / Sáng = 1
- Chiều ra / Nhấn / Tắt = 0

Ví dụ: Chân RB3 có chiều vào, RB7 có chiều ra


 TRISB = 0b00001000
 TRISBbits.TRISB3 = 1 và TRISBbits.TRISB7 = 0

Ví dụ: LED1 sáng nối với RC7, LED2 tắt nối vs RC4
 PORTCbits.RC7 = 1; PORTCbits.RC4 = 0;
 PORTC = 0b10000000;

Ví dụ: Khai báo:


 LED1 nối vs chân RB6, LED2 nối vs chân RB7
 Nút nhấn PB1 nối vs chân RB0, PB2 nối vs chân RC1 (chiều vào)
# include <p18f4520.h>
# pragma config OSC = HS (sử dụng bộ tạo dao dộng chế độ HS)
# pragma config MCLRE = ON (sử dụng chân RE3 làm chân Reset)
# pragma config WDT = OFF (không dùng watchingdog timer)
# pragma config LVP = OFF (không SD chế độ nguồn cấp từ mạch nạp ICSP)
# define LED1 PORTBbits.RB6
# define LED2 PORTBbits.RB7
# define PB1 PORTCbits.RC0
# define PB2 PORTCbits.RC1

void main () {
TRISB = 0b00000001; // RB0 có chiều vào
TRISC = 0b00000010; // RC1 có chiều vào
ADCON1 = 0x0f; }

Bài 3: Ngắt ngoài


- 2 vectơ ngắt: + 0x0008: ngắt ưu tiên cao + 0x0018: ngắt ưu tiên thấp
- Các bit điều khiển ngắt ngoài:

- Ví dụ: + Khởi tạo ngắt INT2:


 INTCONbits.GIE = 1;
 INTCON3bits.INT2IE = 1;
 INTCON2bits.INTEDG2 = 0;
+ Xóa cờ ngắt: INTCON3bits.INT2IF = 0;
- Nếu sử dụng ưu tiên ngắt: IPEN = 1; GIEL = 1; INTxIP = 0 (thấp) = 1 (cao)
Bài 4: Timer
- Các thanh ghi liên quan đến Timer0:
 Bit 7 TMR0ON: Bit điều khiển Bật/Tắt Timer.
 Bit 6 T08BIT: Bit lựa chọn 8-bit /16-bit của Timer0
 Bit 5 T0CS: Bit lựa chọn nguồn xung cấp cho Timer0
 Bit 4 T0SE: Bit lựa chọn sườn xung đếm cho Timer0
 Bit 3 PSA: Bit thiết lập bộ chia tần đầu vào
 Bit 2 T0PS: Bit lựa chọn hệ số chia tần
 Thanh ghi chứa byte thấp của Timer0: TMR0L (8 bit, không định địa chỉ bit)
 Thanh ghi chứa byte cao của Timer0: TMR0H (8 bit, không định địa chỉ bit)
 Thanh ghi điều khiển ngắt: INTCON
 Thanh ghi điều hướng cổng A: TRISA
- Các công thức tính toán:
Bài 5: Ngắt Timer
- Các bit điều khiển ngắt Timer:

Bài 6: Truyền thông USART


- Một số hàm thông dụng trong thư viện USART:

You might also like