1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đề thi cuối kỳ LẬP TRÌNH NHÚNG

2 160 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 32,66 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

b Viết chương trình thực hiện 3 tác vụ trên với timing đã đặt ra và SystickTimer như câu a.. Chỉ viết chương trình phục vụ ngắt Systick và vòng lặp chính, đồng thời khai báo các biến toà

Trang 1

ĐỀ THI CUỐI KỲ - HK2 NĂM HỌC 2016/2017

MÔN THI: LẬP TRÌNH NHÚNG

TG: 90 PHÚT

(SV không làm bài trên đề thi)

Câu 1) (2 đ)

Viết hàm revbits nhận vào 1 tham số kiểu char và trả về kết quả kiểu char có giá trị là đảo vị trí các bit của tham số

Giải thích: Tham số có giá trị nhị phân là b7 b6 b5 b4 b3 b2 b1 b0 thì kết quả là b0 b1 b2 b3 b4 b5 b6 b7

Hướng dẫn: Sử dụng các phép toán dịch bit, AND, OR

Câu 2) (2đ)

a) Viết hàm void initPortA(void) khởi động PORTA với PA3 0 là input, PA7 4 là output sử dụng thư viện TIVAware b) Viết hàm void updateOutput(void) xuất giá trị đảo của PA3 0 ra PA7 4.

Ví dụ PA3 0 là 1100 thì PA7 4 sẽ là 0011

Câu 3) (2đ)

Cho 3 hàm void Task1(void), void Task2(void), void Task3(void) Ba hàm này có timing như sau:

Task 1 chạy sau mỗi 40 ms Task 2 chạy sau mỗi 50 ms Task 3 chạy sau mỗi 60 ms

a) Viết hàm void initSystick(void) khởi động Systick Timer với chu kỳ 1 ms

b) Viết chương trình thực hiện 3 tác vụ trên với timing đã đặt ra và SystickTimer như câu a (Chỉ viết chương trình phục

vụ ngắt Systick và vòng lặp chính, đồng thời khai báo các biến toàn cục cần thiết)

//Khai báo các biến cần thiết ở đây

void SystickISRHandler()

{

//write the code here

}

int main(void)

{

while(1)

{

//write the code here

}}

Trang 2

Câu 4: (2đ)

Vi điều khiển ARM TIVA123C muốn truyền dữ liệu sử dụng mã hóa Manchester Một tín hiệu Clock được đưa vào chân

PA0, tín hiệu mã hóa xuất ra trên PA1 Mã hóa manchester được thực thi bằng cách: Clock XOR Data = Manchester Output

Viết hàm Manchester(unsigned char Data) để mã hóa và xuất dữ liệu mã hóa ra PA1, bit truyền đầu tiên là bit có trọng

số cao nhất

Để truyền 1 bit, quá trình như sau:

• Chờ cho clock lên 1

• Đưa giá trị Data XOR Clock ra PA1

• Chờ cho Clock xuống 0

• Đưa giá trị Data XOR CLock ra PA1

Lặp lại quá trình cho cả 8 bit để truyền byte Data đi

Chú ý: Coi như các chân port đã được khởi động Sử dụng các hàm của thư viện TivaWare để đọc/ghi port

Câu 5) (2đ)

Cho các khai báo sau của một chương trình dùng FreeRTOS

xQueueHandle myQueue // our queue

message_t MyMessage; // variable for a message (not a pointer!)

portBASE_TYPE Result; // result of the operation

portBASE_TYPE pxHigherPriorityTaskWoken ;

a) Viết lệnh khởi tạo myQueue có thể chứa 5 phần tử, mỗi phần tử có kiểu message_t

b) Viết lệnh ghi nội dung của biến MyMessage vào Myqueue trong một tác vụ (không phải trình phục vụ ngắt), thời gian chờ là 1000 lần ngắt Systick

c) Viết lệnh đọc một giá trị từ Myqueue vào biến MyMessage trong ISR

d) Trong 1 ISR ta gọi lệnh xSemaphoreGiveFromISR( xCountingSemaphore, &xHigherPriorityTaskWoken );

Khi nào biến xHigherPriorityTaskWoken mang giá trị TRUE?

Ngày đăng: 29/10/2019, 13:23

TỪ KHÓA LIÊN QUAN

w