











Preview text:
lOMoAR cPSD| 58931565
CÂU HỎI ÔN TẬP GIỮA KỲ
CHƯƠNG 1 – GIỚI THIỆU
1. Vi điều khiển 16F887 có bao nhiêu khối, kể tên và cho biết chức năng nhiệm vụ từng khối? Có 10 khối chính.
- Khối POWER: cung cấp nguồn hoạt động cho vđk 2-5.5V
- Khối CPU: Xử lý các lệnh và thực hiện các phép toán, điều khiển toàn bộ hoạt động của
vi điều khiển. Đây là trung tâm điều khiển chính của hệ thống.
- Khối Memory: Trong PIC16F887, bộ nhớ Flash được sử dụng để lưu trữ chương trình.
RAM: Lưu trữ dữ liệu tạm thời trong quá trình thực thi chương trình. Đây là nơi các
biến và dữ liệu tạm thời được lưu trữ. EEPROM: Lưu trữ dữ liệu không thay đổi
(persistent data) ngay cả khi nguồn điện bị mất. Dữ liệu trong EEPROM có thể được
ghi và đọc trong suốt quá trình hoạt động của vi điều khiển.
- Khối Timers: Cung cấp khả năng đếm thời gian, tạo xung nhịp và làm cơ sở cho các phép đo thời gian.
- Khối Serial Communication: Bộ giao tiếp nối tiếp gồm đồng bộ và không đồng bộ với các thiết bị ngoại vi.
- Khối Oscillator: Khối tạo dao động xung clock cho vi điều khiển hoạt động.
- Khối ADC: Chuyển đổi tín hiệu tương tự (analog) thành tín hiệu số (digital) để vi điều khiển có thể xử lý. lOMoAR cPSD| 58931565
- Khối CCP/PWM modules: Tạo tín hiệu xung PWM để điều khiển các thiết bị như động
cơ hoặc LED với độ sáng điều chỉnh được.
- Khối I/O Ports: Quản lý các chân đầu vào/ra cho các tín hiệu số, có thể được cấu hình
cho các ứng dụng đa dạng.
- Khối so sánh: so sánh 2 tín hiệu tương tự và đưa ra tín hiệu số.
2. Hãy cho biết kiến trúc Von Neumann và Harvard khác nhau như thế nào, VĐK Pic
16F887 sử dụng kiến trúc nào? ? (So sánh sách trang 47). PIC16F887 sử dụng kiến trúc
Harvard với bộ nhớ riêng biệt cho chương trình và dữ liệu, giúp cải thiện hiệu suất và tốc độ xử lý.
3. Hãy nêu ưu khuyết điểm việc cấp nguồn cho VĐK 16F887 là 2VDC và 5VDC? Cấp nguồn 2VDC Ưu điểm: •
Tiết kiệm năng lượng: Việc cấp nguồn ở mức điện áp thấp sẽ giúp giảm tiêu thụ điện năng
của vi điều khiển, phù hợp với các ứng dụng cần tiết kiệm năng lượng như các thiết bị chạy pin. •
Giảm nhiệt lượng tỏa ra: Với mức điện áp thấp, vi điều khiển sẽ tỏa ra ít nhiệt hơn,
giúp giảm yêu cầu về tản nhiệt. Nhược điểm: •
Không hoạt động đúng thiết kế: PIC16F887 được thiết kế để hoạt động ở điện áp từ
2VDC đến 5.5VDC, nhưng nếu cấp nguồn ở mức quá thấp như 2VDC, vi điều khiển
có thể không hoạt động ổn định hoặc không đạt được hiệu suất tối đa. •
Giới hạn tốc độ xử lý: Ở điện áp thấp, tốc độ xung nhịp của vi điều khiển sẽ bị hạn
chế, làm giảm hiệu suất của các tác vụ xử lý. •
Hạn chế tương thích với các linh kiện khác: Một số linh kiện ngoại vi khác có thể
yêu cầu mức điện áp cao hơn, do đó việc sử dụng 2VDC có thể gây ra vấn đề tương thích. Cấp nguồn 5VDC Ưu điểm: •
Hoạt động ổn định: 5VDC là mức điện áp tiêu chuẩn cho nhiều loại vi điều khiển,
bao gồm cả PIC16F887, đảm bảo rằng vi điều khiển hoạt động theo thiết kế với hiệu suất tối đa. •
Tốc độ xử lý cao: Ở mức điện áp này, vi điều khiển có thể hoạt động với tốc độ xung
nhịp cao hơn, giúp tăng cường khả năng xử lý. •
Tương thích tốt với linh kiện ngoại vi: Nhiều linh kiện ngoại vi như cảm biến, mạch
giao tiếp (UART, I2C) thường yêu cầu hoặc tương thích tốt hơn với mức điện áp
5VDC. Nhược điểm: lOMoAR cPSD| 58931565 •
Tiêu thụ năng lượng lớn hơn: Việc cấp nguồn 5VDC sẽ làm tăng tiêu thụ điện năng,
điều này có thể là vấn đề với các ứng dụng yêu cầu tiết kiệm năng lượng. •
Tỏa nhiệt nhiều hơn: Ở mức điện áp cao hơn, vi điều khiển sẽ tỏa ra nhiều nhiệt hơn,
yêu cầu hệ thống làm mát hoặc tản nhiệt tốt hơn.
4. Hãy cho biết công thức tính 1 chu kỳ lệnh, nếu ta sử dụng nguồn dao động nội 8Mhz thì 1
chu kỳ lệnh sẽ bằng bao nhiêu? Đối với PIC 16F887: CKL = 𝟒 𝒇𝒐𝒔𝒄
• f_osc là tần số của bộ dao động (oscillator frequency) mà vi điều khiển sử dụng.
Đây có thể là tần số của dao động nội hoặc dao động ngoại (tùy thuộc vào cấu hình của hệ thống).
• 4 là hệ số chia do kiến trúc của vi điều khiển PIC. Bộ xử lý của PIC cần 4 chu
kỳ dao động để thực hiện một chu kỳ lệnh.
- Với tần số dao động 8MHz, mỗi chu kỳ lệnh của vi điều khiển PIC16F887 sẽ là 0.5 micro giây.
5. Hãy cho biết nhiệm vụ của thanh ghi chương trình (Program Counter – PC), thanh ghi
này có liên quan gì đến bộ nhớ chương trình? (trang 49)
Thanh ghi PC giữ địa chỉ của lệnh kế tiếp mà vi điều khiển sẽ thực hiện trong bộ nhớ
chương trình. Mỗi khi một lệnh được thực thi, PC sẽ tự động tăng lên để trỏ đến lệnh kế tiếp.
Liên quan đến bộ nhớ chương trình: PC trực tiếp chỉ định vị trí lệnh trong bộ nhớ
chương trình và đóng vai trò quan trọng trong quá trình điều khiển luồng thực thi của
chương trình. Khi có một cuộc gọi hàm hoặc ngắt, PC có thể được thay đổi để chuyển
hướng luồng chương trình tới vị trí khác
6. Hãy cho biết chức năng của bộ nhớ ngăn xếp (stack), và độ dài của ô nhớ (thanh ghi) là
bao nhiêu, vì sao? (trang 51)
- Stack trong vi điều khiển PIC16F887 là một bộ nhớ tạm thời được sử dụng để lưu trữ địa
chỉ trả về của các cuộc gọi hàm (subroutine) và ngắt (interrupt). Khi có một cuộc gọi hàm
hoặc ngắt xảy ra, địa chỉ của lệnh tiếp theo sẽ được lưu vào stack, giúp chương trình có
thể quay lại đúng vị trí sau khi thực hiện xong hàm hoặc xử lý xong ngắt.
- Do lưu địa chỉ trở về trong thanh ghi PC, mà thanh ghi PC có chiều dài 13 bit nên mỗi ô
nhớ ngăn xếp có số bit là 13
7. Hãy cho biết dòng điện ngõ ra trên các chân I/O có giá trị là bao nhiêu? Khoảng 25mA
8. Hãy cho biết vec tơ ngắt nằm ở bộ nhớ nào và có địa chỉ là bao nhiêu? Bộ nhớ chương trình 0004h
9. Hãy cho biết vec tơ Reset nằm ở bộ nhớ nào và có địa chỉ là bao nhiêu? Bộ nhớ chương trình 000h lOMoAR cPSD| 58931565
10. PIC 16F887 tích hợp bao nhiêu kênh ADC, cụ thể là những chân nào và biến đổi có độ
phân giải bao nhiêu bit? Vi điều khiển PIC16F887 tích hợp 14 kênh ADC. Gồm AN0- AN3
(RA0-RA3 , RA5) , AN4-AN7 (RE0-RE2), AN8-AN13 (RB0-RB5)
11. Hãy cho biết VĐK 16F887 có bao nhiêu bộ định thời, mỗi bộ có bao nhiêu bit? 3 bộ
định thời Timer 0: 8bit ; Timer 1: 16 bit ; Timer 2: 8 bit
12. PUT viết tắt của chữ gì và có tác dụng như thế nào? PUT là viết tắt của Power-up
Timer. Nó giúp trì hoãn việc bắt đầu thực thi chương trình sau khi vi điều khiển được
cấp nguồn, để đảm bảo rằng điện áp nguồn đã ổn định trước khi hệ thống hoạt động.
13. BOR viết tắt của chữ gì và có tác dụng như thế nào? BOR là viết tắt của Brown-out
Reset. Nó có tác dụng tự động reset vi điều khiển khi điện áp nguồn giảm xuống dưới
mức VBOR (cài đặt), để tránh hoạt động sai lệch của hệ thống.
14. Để sử dụng được tất cả 8 chân ở PORTA thì ta phải khai báo như thế nào? #FUSES INTRC #USE DELAY (CLOCK=8M)
15. VĐK 16F887 sử có bao nhiêu chân có chức năng I/O, và có bao nhiêu PORT, mỗi PORT
bao nhiêu chân? Có 35 chân I/O , có 5 port ( Port A,B,C,D: 8 ; Port E: 4)
16. Hãy cho biết ưu nhược điểm của việc sử dụng bộ dao động nội và bao dao động ngoại.
Bộ dao động nội: •
Ưu điểm: Tiết kiệm không gian, không cần thêm linh kiện ngoài, tiết kiệm năng lượng. •
Nhược điểm: Độ chính xác thấp hơn so với bộ dao động ngoại.
Bộ dao động ngoại: •
Ưu điểm: Độ chính xác cao, ổn định tần số hơn. •
Nhược điểm: Tốn không gian, cần thêm linh kiện ngoại vi, tiêu thụ nhiều năng lượng hơn.
17. Kể tên các tín hiệu truyền dữ liệu I2C của PIC 16F887 ( truyền thông nối tiếp) trang 42
Gồm SCL pin 18 (Tín hiệu này được sử dụng để truyền và nhận dữ liệu giữa các thiết
bị trên bus I2C.) và SDA pin 23.( Tín hiệu này được sử dụng để đồng bộ hóa việc truyền
dữ liệu giữa các thiết bị trên bus I2C.)
18. Kể tên các tín hiệu truyền dữ liệu SPI của PIC 16F887? ? (truyền thông nối tiếp tốc độ
cao) SDO (Serial Data Out): Tín hiệu xuất dữ liệu từ vi điều khiển đến thiết bị ngoại vi. (Pin 11)
SDI (Serial Data In): Tín hiệu nhập dữ liệu từ thiết bị ngoại vi vào vi điều khiển.(Pin
18) SCK (Serial Clock): Tín hiệu xung nhịp, được sử dụng để đồng bộ hóa việc truyền
dữ liệu giữa vi điều khiển và thiết bị ngoại vi. (Pin 17)
SS (Slave Select): Tín hiệu chọn thiết bị ngoại vi (nếu có nhiều thiết bị kết nối với SPI bus).
Tín hiệu này thường được sử dụng để kích hoạt thiết bị ngoại vi cụ thể mà vi điều khiển muốn giao tiếp.(Pin 7) lOMoAR cPSD| 58931565
19. Kể tên các tín hiệu truyền dữ liệu UART của PIC 16F887(tt nối tiếp không đồng bộ) TX
(Transmit Data): Tín hiệu truyền dữ liệu từ vi điều khiển đến thiết bị ngoại vi hoặc máy tính.(Pin 25)
RX (Receive Data): Tín hiệu nhận dữ liệu từ thiết bị ngoại vi hoặc máy tính vào vi điều khiển.(Pin 26)
20. Kể tên các tín hiệu truyền dữ liệu SART của PIC 16F887? (2 chế độ đồng bộ và ko đb) •
TX (Transmit Data): Tín hiệu truyền dữ liệu từ vi điều khiển đến thiết bị ngoại vi.(Pin 25) •
RX (Receive Data): Tín hiệu nhận dữ liệu từ thiết bị ngoại vi vào vi điều khiển.(Pin 26) •
SCK (Serial Clock, chỉ trong chế độ đồng bộ): Tín hiệu xung nhịp dùng trong chế
độ đồng bộ của USART. (Pin 25) (khi chế độ đồng bộ Master), (Pin 26) (khi chế độ đồng bộ Slave)
Khi dùng UART chỉ cần sử dụng TX và RX
Kể tên các tín hiệu thiết lập điện áp tham chiếu cho ADC?
VREF+: điện áp tham chiếu dương cho ADC. ( pin 5)
VREF-: điện áp tham chiếu âm cho ADC. (pin 4)
CHƯƠNG 2 – TỔ CHỨC BỘ NHỚ
1. Vi điều khiển 16f887 có bao nhiêu bộ nhớ, kể tên, dung lượng cho biết chức năng và
ứng dụng của từng loại? 3 bộ nhớ
Bộ nhớ chương trình (Program Memory): •
Dung lượng: 8 K byte (8192 words). •
Chức năng: Lưu trữ chương trình của vi điều khiển dưới dạng mã lệnh. Đây là bộ nhớ
chỉ đọc (Flash). • Ứng dụng: Lưu các chương trình điều khiển mà vi điều khiển thực thi.
Bộ nhớ dữ liệu (Data Memory - RAM): •
Dung lượng: 512 byte ( trong đó: Thanh ghi thông dụng: 368 byte ; thanh ghi đặt biệt:
96 byte) • Chức năng: Lưu trữ dữ liệu tạm thời trong quá trình thực thi chương trình.
Đây là bộ nhớ đọcghi. •
Ứng dụng: Lưu các biến, cờ trạng thái và các thông tin cần xử lý tức thời. Bộ nhớ EEPROM: • Dung lượng: 256 bytes. •
Chức năng: Lưu trữ dữ liệu vĩnh viễn ngay cả khi mất nguồn, nhưng có thể được
ghi/xóa trong quá trình hoạt động của vi điều khiển. • Ứng dụng: Lưu các thông số
cấu hình hoặc dữ liệu cần duy trì khi tắt nguồn.
2. Hãy cho biết thanh ghi có địa chỉ 108H tên gì, và nằm trong Bank nào? CM2CON0 ; Bank 2
3. Hãy cho biết thanh ghi có địa chỉ 188H tên gì, và nằm trong Bank nào? ANSEL ; bank 3
4. Hãy cho biết thanh ghi TRISA có địa chỉ là bao nhiêu, ở Bank nào? 85H ; bank 1 lOMoAR cPSD| 58931565
5. Muốn di chuyển nội dung thanh ghi có địa chỉ 19AH sang thanh ghi có địa chỉ A5H thì
ta phải thực hiện những bước cụ thể nào?
B1: Chuyển sang Bank 3 để đọc từ thanh ghi có địa chỉ 19AH
BSF STATUS, RP1 // Chuyển sang Bank 3 (RP1 = 1, RP0 = 1) BSF STATUS, RP0
B2: Đọc giá trị từ thanh ghi 19AH vào W MOVF 0x19A, 0
B3: Chuyển sang Bank 2 để ghi vào thanh ghi có địa chỉ A5H
BCF STATUS, RP0 //Chuyển sang Bank 2 (RP1 = 1, RP0 = 0) BSF STATUS, RP1
B4: Ghi giá trị từ W vào thanh ghi A5H MOVWF 0xA5
6. Muốn di chuyển nội dung thanh ghi có địa chỉ 125H sang thanh ghi có địa chỉ 42H thì
ta phải thực hiện những bước cụ thể nào?
B1: Chuyển sang Bank 2 để đọc từ thanh ghi có địa chỉ 125H
BSF STATUS, RP1 //Chuyển sang Bank 2 (RP1 = 1, RP0 = 0) BCF STATUS, RP0
MOVF 0x125, 0 B2: Đọc giá trị từ thanh ghi 125H vào W
B3:Chuyển sang Bank 0 để ghi vào thanh ghi có địa chỉ 42H
BCF STATUS, RP1 // Quay về Bank 0 (RP1 = 0, RP0 = 0) BCF STATUS, RP0
MOVWF 0x42 B4: Ghi giá trị từ W vào thanh ghi 42H
7. Hãy cho biết thanh ghi STATUS có bao nhiêu địa chỉ, kể tên các địa chỉ đó?
- Thanh ghi status có 4 địa chỉ : 03H , 83H, 103H, 183H
8. Hãy cho biết nhưng thanh ghi nào có tên trên tất cả các Bank của bộ nhớ, kể tên và cho
biết địa chỉ của các thanh ghi đó?
INDF: Địa chỉ 00H, 80H, 100H, 180H.
PCL: Địa chỉ 02H, 82H, 102H, 182H.
STATUS: Địa chỉ 03H, 83H, 103H,
183H. FSR: Địa chỉ 04H, 84H, 104H, 184H.
PCLATH: Địa chỉ 0AH, 8AH, 10AH, 18AH.
INTCON : Địa chỉ 0BH , 8BH, 10BH, 18BH.
9. Hãy cho biết Page2 có địa chỉ từ bao nhiêu đến bao nhiêu và dung lượng là bao nhiêu
1000H – 17FFH dung lượng: 2048 byte
10. Hãy cho biết Bank2 có địa chỉ từ bao nhiêu đến bao nhiêu và dung lượng là bao nhiêu? 100H – 17FH 128 byte lOMoAR cPSD| 58931565
11. Hãy cho biết truy xuất địa chỉ trực tiếp là gì? Các lệnh chỉ được phép truy suất 1 ô nhớ
Ram hay 1 thanh ghi của 1 bank.
12. Hãy cho biết truy xuất địa chỉ gián tiếp là gì? Các lệnh truy xuất được phép truy xuất 1 ô nhớ
RAM hay 1 t hanh ghi dịch nằm trên 2 bank .
13. Trong bộ nhớ chương trình, hãy cho biết địa chỉ của ô nhớ 1234H thuộc trang bộ nhớ nào? Page 2
14. Hãy cho biết các chương trình con lồng vào nhau của VĐK 16f887 phụ thuộc vào dung
lượng của bộ nhớ nào? Bộ nhớ ngăn xếp
15. Hãy cho biết việc phân chia bộ nhớ theo trang có ưu điểm là gì?
Việc phân chia bộ nhớ chương trình thành các trang trong vi điều khiển PIC16F8xx giúp
tối ưu hóa kích thước mã lệnh và tăng tốc độ thực thi chương trình, đặc biệt là khi thực
hiện các lệnh nhảy hoặc gọi chương trình con trong cùng một trang bộ nhớ.
CHƯƠNG 3 – NGÔN NGỮ ASSEMBLER
1. Hãy cho biết lệnh nào kiểm tra giá trị của 1 bit trong thanh ghi, nếu bit đó có giá trị là 1
thì nhảy đến nhãn nào đó? ( trang 81 ) Lệnh BTFSS
2. Hãy cho biết lệnh nào kiểm tra giá trị của 1 bit trong thanh ghi, nếu bit đó có giá trị là 0
thì nhảy đến nhãn nào đó. Lệnh BTFSC
3. Hãy cho biết lệnh nào không thực hiện công việc gì? Lệnh NOP
4. Hãy cho biết ngôn ngữ ASSEMBLER có tổng cộng bao nhiêu lệnh và được chia thành
mấy nhóm, kể tên các nhóm đó. (trang 76) Ngôn ngữ ASSEMBLER có 35 lệnh chia thành 3 nhóm: + Lệnh xử lý bit + Lệnh xử lý byte
+ Lệnh xử lý hằng số và điều khiển
5. Hãy cho biết cờ DC có ý nghĩa gì, và khi nào thì nó được kích hoạt?
Cờ DC là bit 1 trong thanh ghi trạng thái dùng để lưu trữ bit tràn trong các phép toán
cộng, trừ sau khi thực hiện phép toán. Khi phép toán 3 bit nếu kết quả lên 4 bit thì cờ DC sẽ có giá trị là 1
1: khi tác động trên bit thứ 4 của thanh ghi
0: khi không tác động trên bit thứ 4 của thanh ghi
6. Hãy cho biết cờ Z có ý nghĩa gì, và khi nào thì nó được kích hoạt?
Cờ Z là bit thứ 2 trong thanh ghi trạng thái và giúp kiểm tra xem kết quả tính toán bằng 0 hay không
Sau mỗi phép toán nếu kq =0 thì bit2 nhảy lên 1 nếu kq khác 0 thì bit2 có giá
trị là 0 7. Hãy cho biết cờ C có ý nghĩa gì, và khi nào thì nó được kích hoạt?
Là bit đầu tiên trong thanh ghi trạng thái, lưu trữ bit dư từ các phép tính toán, bằng 1
khi kết quả có tràn và bằng 0 khi kết quả không tràn lOMoAR cPSD| 58931565
8. Hãy sử dụng lệnh Hợp ngữ viết chương trình cho bit thứ 6 của thanh ghi 326 về 0? (326 => bank 2) BSF status RP1 BCF status RP0 BCF 46H , 6;
9. Cho bit thứ 5 của PORTC lên 1 BCF STAUS, RP1 BCF STAUS, RP0 BSF PORTC,5 ;
10. Hãy sử dụng lệnh Hợp ngữ viết chương trình kiểm tra bit thứ 2 của thanh ghi 108H xem
có bằng 0 hay không? (108H = 264 => bank 2) BSF status RP1 BCF status RP0 BTFSC 8H , 2
11. Nếu thanh ghi 119H có giá trị là 137 thì sau khi thực hiện lệnh RRF, thanh ghi đó có giá trị là bao nhiêu
Giá trị ban đầu: Thanh ghi 119H = 137 = 10001001b.
Thực hiện lệnh RRF:
Bit cuối cùng (1) sẽ được dịch lên đầu, trở thành 11000100.
Bit cờ C sẽ có giá trị là 1 (vì bit 1 đã bị dịch ra). Kết quả:
Giá trị mới của thanh ghi 119H: 11000100b, tương đương với 196 trong hệ thập phân.
12. Hãy giải thích lệnh SWAPF f,d là gì, nếu thanh ghi 1B5H có giá trị là 204, thì sau khi
thực hiện lệnh này, thanh ghi 1B5H có giá trị là bao nhiêu???? Lệnh SWAPF f,d là lệnh
hoán chuyển 4 bit của thanh ghi f. o (1B5H) = 11001100
SWAPF 1B5H,1: (Hoán đổi trong chính thanh ghi 1B5H)
o bit cao (1100) sẽ đổi chỗ với 4 bit thấp (1100)
Kết quả: 11001100 vẫn là 11001100 (204)
Sau khi thực hiện lệnh SWAPF 1B5H,1, giá trị của thanh ghi 1B5H vẫn là 204.
13. RISC viết tắt của chữ gì và có ý nghĩa như thế nào
Reduced Instruction Set Computer
Reduced Instruction Set Computer, dịch là Máy tính với tập lệnh giảm thiểu. có 35 lệnh
đơn, thời gian thực hiện tát cả các lệnh gọi là 1 chu kỳ máy, ngoại trừ lệnh rẻ nhánh, 2 ngõ
vào xung clock có f=20MH, chu kỳ lệnh thực hiện 200ms, có nhiều ngồn ngắt, có 3 kiểu địa
chỉ trực tiếp gián tiếp và tức thời Ý nghĩa của RISC:
• Đơn giản hóa tập lệnh: Các lệnh trong kiến trúc RISC thường đơn giản và ngắn gọn,
giúp giảm thời gian thực thi và tăng hiệu suất.
• Tối ưu hóa hiệu suất: Do các lệnh đơn giản và đồng nhất, các bộ vi xử lý RISC có thể
thực thi lệnh nhanh hơn và hiệu quả hơn. lOMoAR cPSD| 58931565
• Tiết kiệm năng lượng: Với thiết kế đơn giản, các bộ vi xử lý RISC thường tiêu thụ ít
năng lượng hơn so với các bộ vi xử lý phức tạp hơn.
14. Mã lệnh của PIC 16F877A có chiều dài là bao nhiêu? 14 bit
15. Kí hiệu ‘f’ trong tập lệnh của PIC 16F877A là gì và có giá trị từ bao nhiêu đến bao
nhiêu? Thanh ghi địa chỉ, có giá trị từ 0x00 16. Kí hiệu ‘d’ trong tập lệnh của PIC 16F877A là gì và có giá trị từ bao nhiêu đến bao nhiêu?
d : Lựa chọn nơi lưu trữ, d=0 kết quả lưu vào W, d=1 lưu trữ vào thanh ghi f, mặc định d=1,
d có 2 giá trị là 0 hoặc 1
CHƯƠNG 4 – NGÔN NGỮ C
1. Biến nào cho phép sử dụng số thực? Biến có kiểu dữ liệu float
2. Để sử dụng 1 biến có giá trị cao nhất là 1000 thì ta sử dụng biến nào là hợp lý nhất?
Sử dụng biến có kiểu dữ liệu signed int16 hoặc unsigned int16
3. Biến nào chỉ có 2 giá trị? Biến có kiểu dữ liệu int1
4. Hãy sử dụng lệnh While để thực hiện một công việc nào đó 100 lần unsigned int8 x=0;
While (x<100) { Cô ng việc ; x++ ; } lOMoAR cPSD| 58931565
5. Hãy sử dụng lệnh for để thực hiện công việc đúng 100 lần
for( int x=0; x<100; x++) { công việc; }
6. Hãy cho biết việc khai báo mãng như sau unsigned char ma7doan[] =
{0XC0,0XF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90} ; VĐK sẽ lưu trong bộ nhớ
nào và chiếm bao nhiêu byte ?
Vi điều khiển PIC16F887 sẽ lưu trữ mảng này trong bộ nhớ RAM. Chiếm 256 byte
7. Hãy cho biết khai báo dữ liệu nào là 8bit, 16bit, 32bit? Trong phần mềm PIC-C
+ 8bit: Signed char, Unsigned char, Signed int, Signed int8, Unsigned int, Unsigned int8
+16bit: Signed int16, Unsigned int16
+32bit: Signed long long, Unsigned long long
8. Chỉ dẫn “#define” có chức năng là gì
Chỉ dẫn #define có chức năng thay thế một đoạn chuỗi bằng một chỉ định đặc biệt nào đó.
9. Chỉ dẫn “#include” có chức năng là gì
Chỉ dẫn #include chức năng chèn vào một đoạn lệnh từ một file khác vào trong chương trình.
10. Nếu Y = 121 thì sau khi thực hiện lệnh X = Y&0xd3 thì X bằng bao nhiêu bằng số thập phân? 0xd3: 0b1101 0011 121: 0b0111 1001 X = Y&0xd3= 0101 0001=81
11. Nếu X = 109 và T = 187 thực hiện lệnh Y = X^T thì Y bằng bao nhiêu bằng số thập phân? X = 109 = 0b0110 1101 T = 187 = 0b1011 1011 Y = X^T=0b1101 0110=214
12. Nếu X = 148 thì sau khi thực hiện lệnh X << 3 thì X bằng bao nhiêu bằng số thập
phân? X = 148=0b1001 0100 X << 3 =0b1010 0000=160
13. Nếu Y = 152 và X = 0b10110 thực hiện lệnh Y += X thì Y bằng bao nhiêu theo số thập phân? Y = 152 = 0b1001 1000 X = 22 = 0b0001 0110 Y += X Y=Y+X=152+22=174
14. Nếu V = 174 và Y = 105 thực hiện lệnh T = V|Y thì T bao nhiêu theo số thập
phân? V = 174 = 0b10101110 Y = 105 = 0b01101001 T = V|Y = 0b11101111=239
15. Nếu X = 136, và Y = 0xD2 thì Y ^= X có giá trị bao nhiêu theo số thập phân X = 136 = 0b10001000 Y = 0xD2 = 0b11010010 lOMoAR cPSD| 58931565
Y ^= X Y=Y^X= 0b01011010=90
16. Nếu X = 125, và Y = 0b10101101 thì Y &= X có giá trị bao nhiêu theo số thập
phân X = 125 =0b01111101 Y = 0b10101101
Y &= X Y=Y&X=00101101=45
CHƯƠNG 5 – GIAO TIẾP I/O
1. Hãy cho biết vì sao phải dùng kỹ thuật quét led, trình bày vắn tắt kỹ thuật quét
led Dùng kỹ thuật quét led vì:
- Kỹ thuật quét LED được sử dụng để giảm số lượng chân điều khiển cần thiết và tiết kiệm
năng lượng khi điều khiển nhiều LED cùng lúc. Đặc biệt khi số lượng LED lớn, nếu điều
khiển tất cả LED cùng lúc thì sẽ cần rất nhiều chân điều khiển và dòng điện tiêu thụ lớn. Kỹ
thuật quét LED cho phép điều khiển nhiều LED bằng cách bật tắt chúng theo tuần tự với tốc
độ nhanh, giúp giảm số lượng chân điều khiển, tiết kiệm năng lượng mà vẫn đảm bảo hiển thị được đầy đủ. Kỹ thuật quét led:
Các LED được tổ chức theo từng hàng, mỗi lần quét sẽ bật một hàng LED và tắt các hàng
khác. Các hàng được quét luân phiên nhau với tần số đủ nhanh để mắt người không nhận ra
sự tắt mở của các LED.
2. Nếu không sử dụng kỹ thuật quét led thì để điều khiển 3 led 7 đoạn ta phải sử dụng
bao nhiêu chân - 24 chân của VĐK
3. Hãy cho biết khi sử dụng nút nhấn ta phải cần lưu ý điều gì, giải thích Khi nút nhấn
có nhiều trang thái ta phải lưu ý:
Khi chúng ta tác động vào nút nhấn rồi nhả ra, theo lý thuyết ta sẽ thu được một xung vuông
ngay tại thời điểm nhấn. Nhưng trên thực tế, quá trình chúng ta nhấn nút và nhả nút sẽ có sự
tác động vật lý giữa các tiếp điểm, dẫn đến xung thu được tại thời điểm vừa nhấn và sau khi
buông còn tồn tại nhiều xung nhiễu khác nữa (xung dao động lên xuống trong khoảng thời
gian rất ngắn ), ảnh hưởng đến hoạt động của VĐK, VĐK có thể hiểu rằng nút nhấn được nhấn nhiều lần,…
4. Hãy cho biết lệnh nào xuất dữ liệu ra 8 chân của một PORT, cụ thể muốn xuất dữ
liệu 209 ra PORTD ta phải dùng lệnh gì. Lệnh: OUTPUT_X (VALUE); OUTPUT_D(0xD1);
5. Khi nào thì khai báo các chân là ngõ vào, khi nào khai báo các chân là ngõ ra
• Khi ta muốn chân đó xuất dữ liệu ra thì khai báo ngõ ra
• Khi ta muốn chân đó nhận dữ liệu vào thì khai báo ngõ vào
6. Thanh ghi nào quyết định việc khai báo hướng ngõ vào ra của VĐK, cho ví dụ cụ thể .
Trong vi điều khiển (VĐK), thanh ghi quyết định việc khai báo hướng của các chân ngõ vào/ra
(input/output) thường là thanh ghi TRIS
TRISA điều khiển hướng của các chân
cổng A. TRISB điều khiển hướng của các chân cổng B. lOMoAR cPSD| 58931565
TRISC điều khiển hướng của các chân cổng C.
TRISD điều khiển hướng của các chân cổng D.
TRISE điều khiển hướng của các chân cổng E.
- Nếu bit trong thanh ghi được đặt là 1 thì hoạt động là ngõ vào
- Nếu bit trong thanh ghi được đặt là 0 thì hoạt động là ngõ ra Ví dụ SET_TRIS_A(0X0F);
- Từ A0-A3 là ngõ vào, A4-A7 là ngõ ra 7.
Lệnh nào xuất giá trị ra 1 chân của VĐK, cho ví dụ cụ thể (slide C5) OUPTUT_HIGH (PIN); OUPTUT_LOW (PIN); OUTPUT_TOGGLE (PIN);
OUTPUT_BIT (PIN , VALUE); //xuất giá trị value ra 1 chân của port vd: output_d ( PIN_B0 , 1); 8.
Lệnh nào đọc dữ liệu 8 chân trên 1 PORT, cho ví dụ cụ thể INPUT_X ( );
Ví dụ : Muốn đọc giá trị của PORT B ta có thể viết
INPUT_B(); 9. Lệnh nào đọc dữ liệu 1 chân trên VĐK,
cho ví dụ cụ thể INPUT(PIN);
Ví dụ : Muốn đọc giá trị của chân B0 ta có thể viết INPUT(PIN_B0);
10. Hãy tìm mã led chữ H thêm hình vẽ dưới đây led 7 đoạn là Anot chung • 0x89H 7 6 5 4 3 2 1 0 Dp G F E D C B A 1 0 0 0 1 0 0 1 Trắc Nghiệm: 4.3A 4.4 A 4.5A 4.6 A 4.7 A 4.8 B 4.9 C 4.10 C 4.11 B 4.12 D 4.13B 4.14 B 4.15D 4.16 A