


Preview text:
Phần 1: Counter 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ở, 02 LED 7 thanh ; 02 nút nhấn thường mở (PB).
- Sử dụng các chân RD0 ÷ RD7, RE1, RE1 nối với 02 LED 7 thanh. PB1 được nối với
chân RA4/T0CKI; PB2 được nối với chân RB0.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Sử dụng Timer0 đếm số lần nhấn PB1 và hiển thị trên 02 LED 7 thanh bằng phương
pháp quét. Dừng đếm khi số lần nhấn vượt quá 20 lần.
- Khi nhấn PB2, số lần nhấn được reset về 0. (RA4,RB0) 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ở, 02 LED 7 thanh ; 02 nút nhấn thường mở (PB).
- Sử dụng các chân RD0 ÷ RD7, RE1, RE1 nối với 02 LED 7 thanh. PB1 được nối với
chân RC0/T13CKI; PB2 được nối với chân RB0.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Sử dụng Timer1/Timer3 đếm số lần nhấn PB1 và hiển thị trên 02 LED 7 thanh bằng
phương pháp quét. Dừng đếm khi số lần nhấn vượt quá 20 lần.
- Khi nhấn PB2, số lần nhấn được reset về 0. Phần 2: USART Câu 1.
a. Thiết kế mạch điện như sau:
- Các linh kiện được sử dụng: PIC18F4520, 01 điện trở, 01 nút nhấn thường mở (PB) và VITUAL TERMINAL
- USART của PIC18F4520 nối với VIRTUAL TERMINAL.
- Nút nhấn nối với chân RD0.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
Thiết lập USART với các thông số: Không sử dụng ngắt; chế độ không đồng bộ;
truyền/nhận 8 bit; nhận liên tục các byte; tốc độ baud cao; tốc độ baud: 4800.
PIC18F4520 hoạt động ở tần số 11.0592 Mhz.
- Đếm số lần nhấn PB và hiển thị trên hiển thị trên VIRTUAL TERMINAL dưới dạng số thập phân;
- Dừng đếm khi nhận được từ VIRTUAL TERMINAL ký tự a hoặc số lần nhấn lớn hơn 25.
Tính spbrg (trang 67, đơn vị của Fosc: Hz) 𝐹𝑜𝑠𝑐 11,0592 ∗ 106 Tốc độ baud = ≤> 4800 = 16(𝑠𝑝𝑏𝑟𝑔 + 1) 16(𝑠𝑝𝑏𝑟𝑔 + 1) 11,0592 ∗ 106 => 𝑠𝑝𝑏𝑟𝑔 = − 1 = 71 4800 ∗ 16 Begin
Khởi tạo RD0,RC7: vào số; RC6: ra số x=0
Khởi tạo USART: Chế độ không đồng bộ, …, spbrg=71 OpenUSART(...); PB nhả? PB nhấn?
Hiển thị số nguyên trên Virtual Terminal: char m[32];
x<=20 và nhận được ký tự khác a … x=x+1 sprintf(&m[0],"%d",x);
Hiển thị x trên Virtual Terminal
dưới dạng số nhị phân putsUSART(&m[0]); Câu 2.
a. Thiết kế mạch điện như sau:
- Các linh kiện được sử dụng: vi điều khiển PIC18F4520, các điện trở, 02 LED.
- USART của PIC18F4520 nối với VIRTUAL TERMINAL.
- LED1, LED2 được nối với với các chân RB2, RB3.
b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
Thiết lập USART với các thông số: Không sử dụng ngắt; chế độ không đồng bộ;
truyền/nhận 8 bit; nhận liên tục các byte; tốc độ baud cao; tốc độ baud: 19200.
PIC18F4520 hoạt động ở tần số 11,0592 Mhz.
- Khi bắt đầu bật nguồn, hiển thị họ tên, mã sinh viên ở đầu dòng thứ nhát, mã lớp học
phần ở đầu dòng thứ 2;
- PIC18F4520 nhận các ký tự từ VIRTUAL TERMINAL và điều khiển LED1 sáng khi
nhận được ký tự a, tắt khi nhận ký tự b; điều khiển LED2 sáng khi nhận được ký tự c, tắt khi nhận ký tự d. Begin
Khởi tạo RD0,RC7: vào số; RB2,RB3,RC6: ra số x=0 Hiển thị chuỗi:
putrsUSART(“Nguyen Van An”);
Khởi tạo USART: Chế độ không đồng bộ, …, spbrg=... Xuống dòng: while(BusyUSART());
Hiển thị họ tên, mã SV ở đầu dòng
thứ nhất, mã lớp học phần ở đầu WriteUSART(13); dòng thứ 2
Nhận 01 ký tự từ USART, lưu vào biến x x=’a’? LED1 sáng x=’b’? LED1 tắt x=’c’? LED2 sáng x=’d’? LED2 tắt