/3
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 viết chương trình theo yêu cầu như sau:
-
Sử dụng Timer0 đếm số lần nhấn PB1hiể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.
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 viết chương trình theo yêu cầu như sau:
-
Sử dụng Timer1/Timer3 đếm số lần nhấn PB1hiể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)
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 viết chương trình theo yêu cầu n 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 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 10
6
Tc độ baud =
16
(
𝑠𝑝𝑏𝑟𝑔 + 1
)
≤> 4800 =
16
(
𝑠𝑝𝑏𝑟𝑔 + 1
)
11,0592 10
6
=> 𝑠𝑝𝑏𝑟𝑔 = 1 = 71
4800 ∗ 16
Begin
Khởi tạo RD0,RC7: vào số;
RC6: ra số
x=0
PB nhả?
PB nhấn?
x<=20 và nhận được tự khác a
x=x+1
Hiển thị x trên Virtual Terminal
dưới dạng số nhị phân
Khởi tạo USART: Chế độ không
đồng bộ, …, spbrg=71
Hiển thị số nguyên trên Virtual Terminal:
char m[32];
sprintf(&m[0],"%d",x);
putsUSART(&m[0]);
OpenUSART(...);
Begin
Khởi tạo RD0,RC7: vào số;
RB2,RB3,RC6: ra số
x=0
x=’a’?
LED1 sáng
x=’b’?
LED1 tắt
x=’c’?
LED2 sáng
x=’d’?
LED2 tắt
Nhận 01 ký tự từ USART, lưu vào
biến x
Hiển thị h tên, SV đầu dòng
thứ nhất, mã lớp học phần ở đầu
dòng thứ 2
Khởi tạo USART: Chế độ không
đồng bộ, …, spbrg=...
Hiển thị chuỗi:
putrsUSART(“Nguyen Van An”);
Xuống dòng:
while(BusyUSART());
WriteUSART(13);
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 viết chương trình theo yêu cầu n 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, sinh viên đầu dòng thứ nhát, lớp học
phần ở đầu dòng thứ 2;
-
PIC18F4520 nhận cáctự từ VIRTUAL TERMINAL và điều khiển LED1 sáng khi
nhận được tự a, tắt khi nhận tự b; điều khiển LED2 sáng khi nhận được tự c,
tắt khi nhận ký tự d.

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