1. Trang chủ
  2. » Giáo án - Bài giảng

Đề cương Ôn tập thiết kế hệ thống nhúng

56 2 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐỀ CƯƠNG ÔN TẬP THIẾT KẾ HỆ THỐNG NHÚNG Câu 1: Thiết kế hệ thống nhúng SoC gồm 1 GPIO có 2 kênh: 1 kênh nối BTN, 1 kênh nối LED. Viết chương trình bấm BTNC thì LED0 sáng nhấp nháy 2 lần rồi tắt. nhấn BTNU thì LED1 sáng nhấp nháy 3 lần rồi tắt. Nhấn BTND, LED3 sáng nhấp nháy 5 lần rồi sáng hẳn. Câu 2: Thiết kế hệ thống nhúng SoC gồm 1 GPIO có 2 kênh: 1 kênh nối SW, 1 kênh nối LED. Viết chương trình khi SW0 =1 thì LED0 sáng nhấp nhay 2 lần rồi tắt. SW1 =1 thì LED1 sáng nhấp nháy 3 lần rồi tắt. Khi SW2 =1, LED3 sáng nhấp nháy 5 lần rồi sáng hẳn. Câu 3: Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với SW. Hiển thị trên màn hình terminal trạng thái của các SW Câu 4: Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với BTN. Hiển thị trên màn hình terminal trạng thái của từng BTN. Câu 5: Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với BTN. Đếm số lần nhấn phím BTNC (giá trị đếm tối đa là 99). Hiển thị trên màn hình terminal kết quả đếm Câu 6: Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với LED. Viết chương trình cho phép hệ thống tự động đếm lùi từ 99 về 0. Kết quả đếm hiển thị dạng nhị phân trên LED đơn và hiển thị dạng thập phân trên màn hình terminal Câu 7: Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO. GPIO1 nối với LED , GPIO2 nối BTN, ngắt đặt trên GPIO2. Đếm số lần nhấn phím BTNC. Kết quả hiển thị trên LED đơn. Câu 8: Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO. GPIO1 nối với LED, GPIO2 nối BTN, ngắt đặt trên GPIO2. Khi nhấn BTNU hệ thống tự động đếm tiến từ 0 – 255, Khi nhân BTND hệ thống tự động đếm lùi từ 255 – 0. Phím reset đặt trên BTNC. Kết quả hiển thị LED đơn Câu 9: Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO. GPIO1 nối với LED, GPIO2 nối SW. Khi SW0 =1, LED sáng lan từ trái qua phải, khi SW1 = 1 LED sáng lan từ phải qua trái. Khi SW2 = 1 tất cả các LED sáng nhấp nháy. Câu 10: Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO. GPIO1 nối với LED, GPIO2 nối BTN, ngắt đặt trên GPIO2. Viết chương trình LED1 nhấp nháy 3 lần rồi tắt khi phím BTNC được nhấn, LED2 sáng nhấp nháy 5 lần rồi tắt khi BTNU được nhấn. Câu 11: Thiết kế hệ thống nhúng gồm 1 GPIO có 2 kênh 1 kênh nối SW, 1 kênh nối LED 7 thanh. Viết chương trình khi SW0 =1 hệ thống tự động đếm tiến từ 0 -9, khi SW1 = 1 hệ thống tự động đềm lùi từ 9 – 0. Kết quả hiển thị trên LED đơn Câu 12: Thiết kế hệ thống nhúng SoC có chứa giao tiếp UART và 1 GPIO nối SW. Khi SW0 = 1, gửi ký tự ‘A’ Khi SW1 = 1, gửi ký tự ‘B”; Khi SW2 = 1, gửi ký tự ‘C’; Khi SW3 = 1, gửi ký tự ‘D’; Khi SW4 = 1, gửi ký tự ‘E’; Khi SW5 = 1, gửi ký tự ‘F’; Khi SW6 = 1, gửi ký tự ‘G’; Khi SW7 = 1, gửi ký tự ‘H’ lên máy tính qua UART. Câu 13: Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO. GPIO1 nối với LED, GPIO2 nối BTN. Khi nhấn BTNF, LED sáng lan từ trái qua phải, khi nhấn BTNR LED sáng lan từ phải qua trái. Khi nhấn BTNC tất cả các LED sáng nhấp nháy. Câu 14: Thiết kế hệ thống nhúng SoC gồm 1 khối GPIO có 2 kênh. Kênh 1 nối với LED, kênh 2 nối BTN. Khi nhấn BTNF, LED sáng lan từ trái qua phải, khi nhấn BTNR LED sáng lan từ phải qua trái. Khi nhấn BTNC tất cả các LED sáng nhấp nháy Câu 15: Thiết kế hệ thống nhúng gồm 2 khối GPIO. Khối GPIO1 nối với LED, GPIO2 nối BTN, ngắt thiết lập trên GPIO2. Viết chương trình điều khiển khi nhấn BTND đèn LED0 sáng nhấp nháy 2 lần, nhấn BTNU LED2 nhấp nháy 3 lần, nhấn BTNL LED nhấp nháy 4 lần, nhấn BTNR LED nhấp nháy 5 lần. Nhấn BTNC tất cả các LED sáng Câu 16: Thiết kế hệ thống nhúng gồm 2 khối GPIO. Khối GPIO1 nối với LED, GPIO2 nối SW, ngắt thiết lập trên GPIO2. Khi SW0 = 1, LED sáng lần lượt từ LED0 – LED7; khi SW7 = 1 LED sáng lần lượt từ LED7 – LED0 Câu 17: Thiết kế hệ thống nhúng gồm 2 khối GPIO. Khối GPIO1 nối với LED, GPIO2 nối BTN, ngắt thiết lập trên GPIO2. Viết chương trình đếm số lần nhấn phím BTNR ( giá trị đếm tối đa =99) kết quả đếm hiển thị LED 7 thanh. Câu 18: Thiết kế hệ thống nhúng gồm 1 khối GPIO có 2 kênh. Kênh 1 nối với LED, kênh 2 nối BTN. Viết chương trình điều khiển khi nhấn BTND đèn LED0 sáng nhấp nháy 2 lần, nhấn BTNU LED2 nhấp nháy 3 lần, nhấn BTNL LED. Câu 19: Thiết kế hệ thống nhúng gồm 1 khối GPIO có 2 kênh. Kênh 1 nối với LED, kênh 2 nối SW. Khi SW0 = 1, LED sáng lần lượt từ LED0 – LED7; khi SW7 = 1 LED sáng lần lượt từ LED7 – LED0. Câu 20: Thiết kế hệ thống nhúng gồm 1 khối GPIO có 2 kênh. Kênh 1 nối với LED, kênh 2 nối BTN. Viết chương trình đếm số lần nhấn phím BTNR (giá trị đếm tối đa =99) kết quả đếm hiển thị LED 7 thanh. Câu 21: Thiết kế hệ thống điều khiển đèn giao thông tại 2 làn đường. Giả thiết rằng đèn xanh, đỏ, vàng của làn 1 được nối với LED0, LED1, LED2; đèn xanh, đỏ, vàng của làn 2 được nối với LED7, LED6, LED5. Chu kỳ sáng của mỗi đèn là xanh: 5s, vàng 3s, đỏ 8s (LED4 nhấp nháy theo chu kỳ xung =1s Câu 22: Thiết kế hệ thống nhúng khi bấm BTNC các LED sáng lan từ LED0 – LED7 với chu kỳ 0.1s, cho phép điều khiển tốc độ sáng lan của LED tăng dần khi nhấn BTNU. Reset lại hệ thống khi nhấn BTNR. Câu 23: Thiết kế hệ thống nhúng khi bấm BTNC các LED sáng lan từ LED0 – LED7 với chu kỳ 1s, cho phép điều khiển tốc độ sáng lan của LED giảm dần khi nhấn BTND. Reset lại hệ thống khi nhấn BTNL Câu 24: Thiết kế hệ thống nhúng khi bấm BTNC các LED sáng lan từ giữa sang 2 bên; khi nhấn BTNR các LED sáng lan từ 2 bên về giữa. Reset lại hệ thống khi nhấn BTNL. Câu 25: Thiết kế hệ thống điều khiển đèn giao thông tại 1 làn đường. Giả thiết rằng đèn xanh, đỏ, vàng của làn 1 được nối với LED0, LED1, LED2; 1đèn LED 7 thanh dùng để hiển thị thời gian. Chu kỳ sáng của mỗi đèn là xanh: 6s, vàng 3s, đỏ 9s.

Trang 2

{

XGpio_DiscreteWrite(&led,1,k2); delay(100000000);

XGpio_DiscreteWrite(&led,1,0x00); delay(100000000);

if(XGpio_DiscreteRead(&btn,2)==16)

{

nhay(3,2); }

if(XGpio_DiscreteRead(&btn,2)==2)

{

nhay(5,4);

XGpio_DiscreteWrite(&led,1,0x04); }

else

XGpio_DiscreteWrite(&led,1,0x00); }

return 0;

}

Trang 3

Câu 2:

Thiết kế hệ thống nhúng SoC gồm 1 GPIO có 2 kênh: 1 kênh nối SW, 1 kênh nối LED Viết chương trình khi SW0 =1 thì LED0 sáng nhấp nhay 2 lần rồi tắt SW1 =1 thì LED1 sáng nhấp nháy 3 lần rồi tắt Khi SW2 =1, LED3 sáng nhấp nháy 5 lần rồi sáng hẳn

}

int main()

{

XGpio_Initialize(&sw,XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_Initialize(&led,XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_SetDataDirection(&sw,2,0xff);

XGpio_SetDataDirection(&led,1,0x00);

while(1)

{

if( XGpio_DiscreteRead(&sw,2)==1)

Trang 4

XGpio_DiscreteWrite(&led,1, 0x00); delay(10000000);

} }

XGpio_DiscreteWrite(&led,1, 0x00); delay(10000000);

} }

XGpio_DiscreteWrite(&led,1, 0x00); delay(10000000);

}

XGpio_DiscreteWrite(&led,1, 0x08); }

if( XGpio_DiscreteRead(&sw,2)==4)

{

XGpio_DiscreteWrite(&led,1, 0x00); }

}

return 0;

}

Trang 5

Câu 3:

Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với SW Hiển thị trên màn hình terminal trạng thái của các SW

#include"platform.h" #include"xuartps.h" #include"xgpio.h"

#include"xparameters.h"

XGpio sw;

XUartPs_Config *cf; XUartPs usart1;

int delay(int n)

{

int i;

for(i=0;i<n;i++); return 0;

Trang 6

cf= XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID); XUartPs_CfgInitialize(&usart1,cf, cf->BaseAddress);

XUartPs_SetBaudRate(&usart1, 9600);

XGpio_Initialize(&sw, XPAR_AXI_GPIO_0_DEVICE_ID ); XGpio_SetDataDirection(&sw, 1,0xff);

int j; while(1)

} }

} }

} }

if(XGpio_DiscreteRead(&sw,1)==8)

Trang 7

} }

} }

} }

} }

if(XGpio_DiscreteRead(&sw,1)==128)

{

Trang 8

kt='7';

for(j=0;j<sizeof(m1);j++)

{

XUartPs_Send(&usart1,&m1[j],1); XUartPs_Send(&usart1,&kt,1); delay(10000000);

} }

}

cleanup_platform();

return 0;

}

Trang 9

Câu 4:

Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với BTN Hiển thị trên màn hình terminal trạng thái của từng BTN

#include "platform.h" #include "xgpio.h"

#include "xparameters.h" #include "xuartps.h"

XGpio btn;

XUartPs_Config *cf; XUartPs uart1;

int delay(int n)

{

int i;

for(i=0;i<n;i++); return 0;

Trang 10

u8 kt;

cf=XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID); XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);

XUartPs_SetBaudRate(&uart1,9600);

XGpio_Initialize(&btn, XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_SetDataDirection(&btn,1,0xff);

}

if(XGpio_DiscreteRead(&btn,1)==16)

Trang 11

{

kt='U';

for(j=0;j<sizeof(m1);j++)

XUartPs_Send(&uart1,&m1[j],1); XUartPs_Send(&uart1,&kt,1); delay(10000000);

} }

cleanup_platform();

return 0;

}

Trang 12

Câu 5:

Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với BTN Đếm số lần nhấn phím BTNC (giá trị đếm tối đa là 99) Hiển thị trên màn hình terminal kết quả đếm

Trang 13

Câu 6:

Thiết kế hệ thống nhúng SoC gồm UART và 1 GPIO nối với LED Viết chương trình cho phép hệ thống tự động đếm lùi từ 99 về 0 Kết quả đếm hiển thị dạng nhị phân trên LED đơn và hiển thị dạng thập phân trên màn hình terminal

Trang 14

Câu 7:

Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO GPIO1 nối với LED , GPIO2 nối BTN, ngắt đặt trên GPIO2 Đếm số lần nhấn phím BTNC Kết quả hiển thị trên LED đơn

#include "xparameters.h" #include "xgpio.h"

#include "xil_exception.h" #include "xscugic.h"

#define led_id XPAR_AXI_GPIO_0_DEVICE_ID #define btn_id XPAR_AXI_GPIO_1_DEVICE_ID

#define btnint_id XPAR_FABRIC_AXI_GPIO_1_IP2INTC_IRPT_INTR #define intc_id XPAR_PS7_SCUGIC_0_DEVICE_ID

#define btn_mask_int XGPIO_IR_CH1_MASK

XGpio led, btn;

XScuGic btnint; // khai bao bien

int dem=0; int delay(int n)

{

int i;

for(i=0;i<n;i++); return 0;

}

// Ham dieu khien ngat

void hamdk()

{

Trang 15

// Disable ngat GPIO

XGpio_InterruptDisable(&btn, btn_mask_int); // bo qua lan bam phim bo sung

if ((XGpio_InterruptGetStatus(&btn)& btn_mask_int) != btn_mask_int) return;

// Dem so lan nhan cua BTNC hien thi LED don

if(XGpio_DiscreteRead(&btn, 1)==1)

{

dem++;

XGpio_DiscreteWrite(&led, 1, dem); delay(10000000);

}

// Xoa co ngat

XGpio_InterruptClear(&btn, btn_mask_int); // Enable ngat GPIO

XGpio_InterruptEnable(&btn, btn_mask_int); }

// Ham khoi tao ngat

int setup_int1(XGpio *t)

{

XScuGic_Config *IntcConfig; int status;

// Khoi tao ngat

IntcConfig = XScuGic_LookupConfig(XPAR_PS7_SCUGIC_0_DEVICE_ID); status = XScuGic_CfgInitialize(&btnint, IntcConfig, IntcConfig-

>CpuBaseAddress);

if(status != XST_SUCCESS) return XST_FAILURE;

Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,&btnint);

Xil_ExceptionEnable(); // goi ham dk ngat

status = XScuGic_Connect(&btnint,btnint_id,(Xil_InterruptHandler)hamdk,(void *)t);

// Enable ngat GPIO, ngat toan cuc XGpio_InterruptEnable(t, 1); XGpio_InterruptGlobalEnable(t); XScuGic_Enable(&btnint, btnint_id); return XST_SUCCESS;

Trang 16

}

int main()

{ int status;

status = XGpio_Initialize(&led, led_id);

if(status != XST_SUCCESS) return XST_FAILURE; status = XGpio_Initialize(&btn, btn_id);

if(status != XST_SUCCESS) return XST_FAILURE; XGpio_SetDataDirection(&led, 1, 0x00);

XGpio_SetDataDirection(&btn, 1, 0xFF); status = setup_int1(&btn);

if(status != XST_SUCCESS) return XST_FAILURE; while (1);

return 0; }

Trang 17

Câu 8:

Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO GPIO1 nối với LED, GPIO2 nối BTN, ngắt đặt trên GPIO2 Khi nhấn BTNU hệ thống tự động đếm tiến từ 0 – 255, Khi nhân BTND hệ thống tự động đếm lùi từ 255 – 0 Phím reset đặt trên BTNC Kết quả hiển thị LED đơn

#include "xparameters.h" #include "xgpio.h"

#include "xil_exception.h" #include "xscugic.h"

#define led_id XPAR_AXI_GPIO_0_DEVICE_ID #define btn_id XPAR_AXI_GPIO_1_DEVICE_ID

#define btnint_id XPAR_FABRIC_AXI_GPIO_1_IP2INTC_IRPT_INTR #define intc_id XPAR_PS7_SCUGIC_0_DEVICE_ID

#define btn_mask_int XGPIO_IR_CH1_MASK

XGpio led, btn;

XScuGic btnint; // khai bao bien

int dem=0; int delay(int n)

{

int i;

for(i=0;i<n;i++); return 0;

}

// Ham dieu khien ngat

void hamdk()

Trang 18

{

// Disable ngat GPIO

XGpio_InterruptDisable(&btn, btn_mask_int); // bo qua lan bam phim bo sung

if ((XGpio_InterruptGetStatus(&btn)& btn_mask_int) != btn_mask_int) return;

// Dem so lan nhan cua BTNC hien thi LED don

if(XGpio_DiscreteRead(&btn, 1)==1||XGpio_DiscreteRead(&btn,

1)==2)

break;

} }

if(XGpio_DiscreteRead(&btn, 1)==1||XGpio_DiscreteRead(&btn,

1)==16)

break;

} }

if(XGpio_DiscreteRead(&btn, 1)==1)

{

dem=0;

XGpio_DiscreteWrite(&led, 1, dem); }

// Xoa co ngat

XGpio_InterruptClear(&btn, btn_mask_int); // Enable ngat GPIO

Trang 19

XGpio_InterruptEnable(&btn, btn_mask_int); }

// Ham khoi tao ngat

int setup_int1(XGpio *t)

{

XScuGic_Config *IntcConfig; int status;

// Khoi tao ngat

IntcConfig = XScuGic_LookupConfig(XPAR_PS7_SCUGIC_0_DEVICE_ID); status = XScuGic_CfgInitialize(&btnint, IntcConfig, IntcConfig-

>CpuBaseAddress);

if(status != XST_SUCCESS) return XST_FAILURE;

Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,&btnint);

Xil_ExceptionEnable(); // goi ham dk ngat

status = XScuGic_Connect(&btnint,btnint_id,(Xil_InterruptHandler)hamdk,(void *)t);

// Enable ngat GPIO, ngat toan cuc XGpio_InterruptEnable(t, 1); XGpio_InterruptGlobalEnable(t); XScuGic_Enable(&btnint, btnint_id); return XST_SUCCESS;

}

int main()

{ int status;

status = XGpio_Initialize(&led, led_id);

if(status != XST_SUCCESS) return XST_FAILURE; status = XGpio_Initialize(&btn, btn_id);

if(status != XST_SUCCESS) return XST_FAILURE; XGpio_SetDataDirection(&led, 1, 0x00);

XGpio_SetDataDirection(&btn, 1, 0xFF); status = setup_int1(&btn);

if(status != XST_SUCCESS) return XST_FAILURE; while (1);

return 0; }

Trang 20

Câu 9:

Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO GPIO1 nối với LED, GPIO2 nối SW Khi SW0 =1, LED sáng lan từ trái qua phải, khi SW1 = 1 LED sáng lan từ phải qua trái Khi SW2 = 1 tất cả các LED sáng nhấp nháy

}

int main()

{

u8 m1[8]={128,192,224,240,248,252,254,255}; u8 m2[8]={1,3,7,15,31,63,127,255};

XGpio_Initialize(&sw,XPAR_AXI_GPIO_1_DEVICE_ID); XGpio_Initialize(&led,XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_SetDataDirection(&sw,1,0xff);

XGpio_SetDataDirection(&led,1,0x00);

while(1)

{

if(XGpio_DiscreteRead(&sw,1)==1)

Trang 21

} }

} }

if(XGpio_DiscreteRead(&sw,1)==4)

{

XGpio_DiscreteWrite(&led,1,0xff); delay(10000000);

XGpio_DiscreteWrite(&led,1,0x00); delay(10000000);

}

if(XGpio_DiscreteRead(&sw,1)==8)

{

XGpio_DiscreteWrite(&led,1,0x00); delay(10000000);

_DiscreteRead(&sw,1)==4)

break;

} }

return 0;

}

Trang 22

Câu 10:

Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO GPIO1 nối với LED, GPIO2 nối BTN, ngắt đặt trên GPIO2 Viết chương trình LED1 nhấp nháy 3 lần rồi tắt khi phím BTNC được nhấn, LED2 sáng nhấp nháy 5 lần rồi tắt khi BTNU được nhấn

#include "xparameters.h" #include "xgpio.h"

#include "xil_exception.h" #include "xscugic.h"

#define led_id XPAR_AXI_GPIO_0_DEVICE_ID #define btn_id XPAR_AXI_GPIO_1_DEVICE_ID

#define btnint_id XPAR_FABRIC_AXI_GPIO_1_IP2INTC_IRPT_INTR #define intc_id XPAR_PS7_SCUGIC_0_DEVICE_ID

#define btn_mask_int XGPIO_IR_CH1_MASK

Trang 23

XGpio_InterruptDisable(&btn, btn_mask_int); // bo qua lan bam phim bo sung

if ((XGpio_InterruptGetStatus(&btn)& btn_mask_int) != btn_mask_int) return;

XGpio_DiscreteWrite(&led, 1, 0x00); delay(10000000);

} }

XGpio_DiscreteWrite(&led, 1, 0x00); delay(10000000);

} }

// Xoa co ngat

XGpio_InterruptClear(&btn, btn_mask_int); // Enable ngat GPIO

XGpio_InterruptEnable(&btn, btn_mask_int); }

// Ham khoi tao ngat

int setup_int1(XGpio *t)

{

XScuGic_Config *IntcConfig; int status;

// Khoi tao ngat

IntcConfig = XScuGic_LookupConfig(XPAR_PS7_SCUGIC_0_DEVICE_ID); status = XScuGic_CfgInitialize(&btnint, IntcConfig, IntcConfig-

>CpuBaseAddress);

Trang 24

if(status != XST_SUCCESS) return XST_FAILURE;

Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,&btnint);

Xil_ExceptionEnable(); // goi ham dk ngat

status = XScuGic_Connect(&btnint,btnint_id,(Xil_InterruptHandler)hamdk,(void *)t);

// Enable ngat GPIO, ngat toan cuc XGpio_InterruptEnable(t, 1); XGpio_InterruptGlobalEnable(t); XScuGic_Enable(&btnint, btnint_id); return XST_SUCCESS;

}

int main()

{ int status;

status = XGpio_Initialize(&led, led_id);

if(status != XST_SUCCESS) return XST_FAILURE; status = XGpio_Initialize(&btn, btn_id);

if(status != XST_SUCCESS) return XST_FAILURE; XGpio_SetDataDirection(&led, 1, 0x00);

XGpio_SetDataDirection(&btn, 1, 0xFF); status = setup_int1(&btn);

if(status != XST_SUCCESS) return XST_FAILURE; while (1);

return 0; }

Trang 25

Câu 11:

Thiết kế hệ thống nhúng gồm 1 GPIO có 2 kênh 1 kênh nối SW, 1 kênh nối LED 7 thanh Viết chương trình khi SW0 =1 hệ thống tự động đếm tiến từ 0 -9, khi SW1 = 1 hệ thống tự động đềm lùi từ 9 – 0 Kết quả hiển thị trên LED đơn

#include"xgpio.h"

#include"xparameters.h"

XGpio swt,led;

int dem=0; int delay(int n)

{

int i;

for(i=0;i<n;i++); return 0;

}

int main()

{

XGpio_Initialize(&swt, XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_Initialize(&led, XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_SetDataDirection(&swt, 1,0xff);

Trang 26

} }

return 0;

}

Trang 27

Câu 12:

Thiết kế hệ thống nhúng SoC có chứa giao tiếp UART và 1 GPIO nối SW

Khi SW0 = 1, gửi ký tự ‘A’ Khi SW1 = 1, gửi ký tự ‘B”; Khi SW2 = 1, gửi ký tự ‘C’; Khi SW3 = 1, gửi ký tự ‘D’; Khi SW4 = 1, gửi ký tự ‘E’; Khi SW5 = 1, gửi ký tự ‘F’; Khi SW6 = 1, gửi ký tự ‘G’; Khi SW7 = 1, gửi ký tự ‘H’ lên máy tính qua UART

Trang 28

Câu 13:

Thiết kế hệ thống nhúng SoC gồm 2 khối GPIO GPIO1 nối với LED, GPIO2 nối BTN Khi nhấn BTNF, LED sáng lan từ trái qua phải, khi nhấn BTNR LED sáng lan từ phải qua trái Khi nhấn BTNC tất cả các LED sáng nhấp nháy

}

int main()

{

u8 m1[8]={128,192,224,240,248,252,254,255}; u8 m2[8]={1,3,7,15,31,63,127,255};

int i;

XGpio_Initialize(&btn,XPAR_AXI_GPIO_1_DEVICE_ID); XGpio_Initialize(&led,XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_SetDataDirection(&led,1,0x00);

XGpio_SetDataDirection(&btn,1,0xff);

while(1)

Trang 29

} }

} }

if(XGpio_DiscreteRead(&btn,1)==1)

{

XGpio_DiscreteWrite(&led,1,0xff); delay(100000000);

XGpio_DiscreteWrite(&led,1,0x00); delay(100000000);

}

if(XGpio_DiscreteRead(&btn,1)==2)

{

XGpio_DiscreteWrite(&led,1,0x00); }

}

return 0;

}

Trang 30

Câu 14:

Thiết kế hệ thống nhúng SoC gồm 1 khối GPIO có 2 kênh Kênh 1 nối với LED, kênh 2 nối BTN Khi nhấn BTNF, LED sáng lan từ trái qua phải, khi nhấn BTNR LED sáng lan từ phải qua trái Khi nhấn BTNC tất cả các LED sáng nhấp nháy

}

int main()

{

u8 m1[8]={128,192,224,240,248,252,254,255}; u8 m2[8]={1,3,7,15,31,63,127,255};

int i;

XGpio_Initialize(&btn,XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_Initialize(&led,XPAR_AXI_GPIO_0_DEVICE_ID); XGpio_SetDataDirection(&led,1,0x00);

XGpio_SetDataDirection(&btn,2,0xff);

while(1)

Trang 31

} }

} }

if(XGpio_DiscreteRead(&btn,2)==1)

{

XGpio_DiscreteWrite(&led,1,0xff); delay(100000000);

XGpio_DiscreteWrite(&led,1,0x00); delay(100000000);

}

if(XGpio_DiscreteRead(&btn,1)==2)

{

XGpio_DiscreteWrite(&led,1,0x00); }

}

return 0;

}

Trang 32

Câu 15:

Thiết kế hệ thống nhúng gồm 2 khối GPIO Khối GPIO1 nối với LED, GPIO2 nối BTN, ngắt thiết lập trên GPIO2 Viết chương trình điều khiển khi nhấn BTND đèn LED0 sáng nhấp nháy 2 lần, nhấn BTNU LED2 nhấp nháy 3 lần, nhấn BTNL LED nhấp nháy 4 lần, nhấn BTNR LED nhấp nháy 5 lần Nhấn BTNC tất cả các LED sáng

#include "xparameters.h" #include "xgpio.h"

#include "xil_exception.h" #include "xscugic.h"

#define led_id XPAR_AXI_GPIO_0_DEVICE_ID #define btn_id XPAR_AXI_GPIO_1_DEVICE_ID

#define btnint_id XPAR_FABRIC_AXI_GPIO_1_IP2INTC_IRPT_INTR #define intc_id XPAR_PS7_SCUGIC_0_DEVICE_ID

#define btn_mask_int XGPIO_IR_CH1_MASK

}

// Ham dieu khien ngat

void hamdk()

Trang 33

{

// Disable ngat GPIO

XGpio_InterruptDisable(&btn, btn_mask_int); // bo qua lan bam phim bo sung

if ((XGpio_InterruptGetStatus(&btn)& btn_mask_int) != btn_mask_int) return;

XGpio_DiscreteWrite(&led, 1, 0x00); delay(10000000);

} }

XGpio_DiscreteWrite(&led, 1, 0x00); delay(10000000);

} }

XGpio_DiscreteWrite(&led, 1, 0x00); delay(10000000);

} }

if(XGpio_DiscreteRead(&btn, 1)==8)

{

for(i=0;i<5;i++)

{

Trang 34

XGpio_DiscreteWrite(&led, 1, 0xff); delay(10000000);

XGpio_DiscreteWrite(&led, 1, 0x00); delay(10000000);

} }

if(XGpio_DiscreteRead(&btn, 1)==1)

{

XGpio_DiscreteWrite(&led, 1, 0xff); }

// Xoa co ngat

XGpio_InterruptClear(&btn, btn_mask_int); // Enable ngat GPIO

XGpio_InterruptEnable(&btn, btn_mask_int); }

// Ham khoi tao ngat

int setup_int1(XGpio *t)

{

XScuGic_Config *IntcConfig; int status;

// Khoi tao ngat

IntcConfig = XScuGic_LookupConfig(XPAR_PS7_SCUGIC_0_DEVICE_ID); status = XScuGic_CfgInitialize(&btnint, IntcConfig, IntcConfig-

>CpuBaseAddress);

if(status != XST_SUCCESS) return XST_FAILURE;

Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,&btnint);

Xil_ExceptionEnable(); // goi ham dk ngat

status = XScuGic_Connect(&btnint,btnint_id,(Xil_InterruptHandler)hamdk,(void *)t);

// Enable ngat GPIO, ngat toan cuc XGpio_InterruptEnable(t, 1); XGpio_InterruptGlobalEnable(t); XScuGic_Enable(&btnint, btnint_id); return XST_SUCCESS;

Ngày đăng: 27/07/2024, 16:26

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w