



Preview text:
Ngắt ngoài
Lưu ý: Các chân nối với các linh kiện được thay đổi theo từng đề thi/kiểm tra Câu 1.
a. Thiết kế mạch điện như sau:
- Các linh kiện được sử dụng: Các điện trở, 05 LED; 02 nút nhấn thường mở (PB1,2).
- LED1 ÷ LED5 được nối với các chân RB3 ÷ RB7; Nút nhấn PB1, PB2 được nối với
lần lượt với các chân RB0/INT0, RB0/INT2.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- LED5 sáng/tắt liên tục; trong khi LED1 ÷ LED4 hiển thị số lần nhấn PB1 dưới dạng
số nhị phân (LED sáng tương ứng với bit “1”; LED tắt tương ứng với bit “0”). Số lần
nhấn PB1 không lớn hơn 15 lần.
- Khi nhấn PB2 số lần nhấn PB1 được reset về 0. CTC CTCPVN Begin Từ CTC
Khởi tạo: RB3-RB7: ra số RB0, RB2: vào số Ngắt INT0? Cho phép ngắt INT0,2; Ngắt bằng sườn âm Đ unsigned int x=0 Xóa INT0IF; Xóa INT2IF; x=x+1 x=0
Hiển thị x trên LED1-LED4 LED5 sáng ~ 1s
dưới dạng số nhị phân LED5 tắt ~ 1s x>=15 Đ
Dừng đếm bằng cách cấm ngắt INT0 về CTC Câu 2.
a. Thiết kế mạch điện như sau:
- Các linh kiện được sử dụng: Các điện trở, 05 LED; 02 nút nhấn thường mở (PB).
- LED1 ÷ LED5 được nối với các chân RB3 ÷ RB7; Nút nhấn PB1, PB2 được nối với
lần lượt với các chân RB0/INT0, RB2/INT2.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- LED1 ÷ LED4 sáng/tắt liên tục theo chu trình: (1) LED1 sáng, các LED khác tắt trong
~1 giây => (2) LED2 sáng, các LED khác tắt trong ~1 giây => (3) LED3 sáng, các LED
khác tắt trong ~1 giây => (4) LED4 sáng, các LED khác tắt trong ~1 giây => (1) => …
- LED 5 sáng khi nhấn PB1, tắt khi nhấn PB2. Ban đầu (khi chưa nhấn PB1 hoặc PB2), LED 5 tắt. Begin Từ CTC
Khởi tạo: RB3-RB7: ra số RB0, RB2: vào số Cho phép ngắt INT0,2; Ngắt INT0? Ngắt bằng sườn âm (INT0IF=1) S Đ LED5 tắt Xóa cờ INT0IF Xóa cờ INT2IF LED5 sáng LED5 tắt LED1 sáng; các LED LED2 sáng; các LED khác tắt trong ~ 1s khác tắt trong ~ 1s Về CTC LED4 sáng; các LED LED3 sáng; các LED khác tắt trong ~ 1s khác tắt trong ~ 1s Timer
Lưu ý: Các chân nối với các linh kiện, các bộ timer và các tham số (tần số/chu kỳ,
Fosc) được thay đổi theo từng đề thi/kiểm tra
PIC18F4520 có 04 bộ timer: Timer0 Timer1 Timer3 Timer2 Chế độ 8/16 bit 16bit 16bit 8bit => N<256 Nguồn xung
Fosc/4 (trong); Fosc/4 (trong); Fosc/4 (trong); Fosc/4 (trong) T0CKI (ngoài) T13CKI T13CKI (ngoài) (ngoài) Khởi tạo T0CON T1CON T3CON T2CON OpenTimer0() OpenTimer1() OpenTimer2()
Hệ số chia tần 1,2,4,…,256 1,2,4,8 1,2,4,8 Prescaler: 1,4,16 Postscaler: 1,2,3,..,16 Nạp giá trị ban TMR0H= TMR1H= TMR3H= PR2= N đầu TMR0L= TMR1L= TMR3L= WriteTimer0() WriteTimer1() WriteTimer3()
Điều kiện tràn Giá trị của Giá trị của Giá trị của Số lần TMR2=PR2 trùng timer lớn hơn timer lớn hơn timer lớn hơn với Postscaler đã đặt 255 (8bit)/ 65535 65535 65535(16bit) Cờ tràn TMR0IF TMR1IF TMR3IF TMR2IF
Cách tính thời gian tràn:
Gọi x là hệ số chia tần; Fosc(Mhz) là tần số hoạt động của VĐK; 256-N (với chế độ
8bit) hoặc 65536-N (với chế độ 16bit) là giá trị ban đầu của timer: 4𝑥𝑁
𝑇ℎờ𝑖 𝑔𝑖𝑎𝑛 𝑡𝑟à𝑛 (𝑢𝑆) = 𝐹𝑜𝑠𝑐 Câu 1.
a. Thiết kế mạch điện như sau:
- Các linh kiện được sử dụng: Điện trở, nút nhấn thường mở (PB).
- Nút nhấn PB được nối với chân RE0; Chân RE1 được nối với Oscilloscope và Counter Timer.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Khi PB ở trạng thái nhấn: Chân RE1 có mức logic 0;
- Khi PB ở trạng thái nhả: Sử dụng Timer0/1/2/3 tạo xung có tần số ≈ 250Hz trên chân
RE1 (bỏ qua sai số do thời gian thực hiện lệnh của vi điều khiển). PIC18F4520 hoạt
động ở tần số 8Mhz (Fosc=8Mhz).
F=250hz =>T=1/250 (s) = 4000uS => T/2=2000uS. Áp dụng CT trên: 4𝑥𝑁 4𝑥𝑁
𝑇ℎờ𝑖 𝑔𝑖𝑎𝑛 𝑡𝑟à𝑛 (𝑢𝑆) = = 2000𝑢𝑆 => = 2000 => 𝑥𝑁 = 4000 𝐹𝑜𝑠𝑐 8 Chọn x=1=>N=4000 begin begin
Khởi tạo: RE1: ra số; RE0: vào số.
Khởi tạo: RE1: ra số; RE0: vào số. Khởi tạo timer1: Khởi tạo timer1: Chế độ 16bit; Chế độ 16bit; Nguồn xung: Fosc/4 Nguồn xung: Fosc/4 Chia trước: 4 Hệ số chia tần = 1 Hệ số chia tần = 1 Chia sau: 10 Đ Đ PB nhấn? RE1=0 PB nhấn?
Nạp cho timer1 giá trị 65536-10000 Timer1 tràn?
Nạp cho timer1 giá trị 65536-4000
Nạp cho timer1 giá trị 65536-5000 Đ
Xóa cờ tràn; lật múc logic trên RE1 Timer1 tràn? Timer1 tràn? Đ Đ
Xóa cờ tràn; lật múc logic trên RE1
Xóa cờ tràn; lật múc logic trên RE1 Câu 2.
a. Thiết kế mạch điện như sau:
- Các linh kiện được sử dụng: Điện trở, nút nhấn thường mở (PB).
- Nút nhấn PB được nối với chân RC0; Chân RD1 được nối với Oscilloscope và Counter Timer.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Khi PB ở trạng thái nhấn: Sử dụng Timer0/1/2/3tạo xung có tần số ≈ 50Hz trên chân RD1;
- Khi PB ở trạng thái nhả: Sử dụng Timer0/1/2/3 tạo xung có tần số ≈ 100Hz trên chân RD1.
Bỏ qua sai số do thời gian thực hiện lệnh của vi điều khiển; PIC18F4520 hoạt động ở tần số 4Mhz (Fosc=4Mhz).
F1=50Hz =>T1=1/50s =20.000uS
4xN/Fosc = T1/2=10.000 => xN=10.000
Nếu chọn 1 bộ chia tần hệ số chia lớn nhất = 16 => N=10.000/16=625>256: Không được
Chọn x1(chia trước)=4; x2(chia sau)=10 => x=x1*x2=40 => N=250
Tinh toan tuong tự, với F2=100Hz, N=125