Professional Documents
Culture Documents
De KT
De KT
Câu 1: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 8 SW. Viết chương trình ứng dụng điều khiển LED
sáng khi SW tương ứng = 0, LED tắt khi SW = 1.
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int main()
{
XGpio_Initialize(&SW,SW_LED);
XGpio_Initialize(&LED,SW_LED);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==1)
XGpio_DiscreteWrite(&LED,2,0xFF);
else if((XGpio_DiscreteRead(&SW,1))==2)
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 2: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED
sáng khi BTN tương ứng được nhấn, LED tắt khi nhả BTN.
#include"xgpio.h"
#include"xparameters.h"
#define BTN_LED XPAR_AXI_GPIO_0_DEVICE_ID
XGpio LED,BTN;
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,2,0xff);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
gt_btn=XGpio_DiscreteRead(&BTN,2);
// BTNC
if(gt_btn==1)
{
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
// BTND
elseif (gt_btn==2)
{
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
// BTNL
elseif (gt_btn==4)
{
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
// BTNR
elseif (gt_btn==8)
{
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
// BTNU
elseif (gt_btn==16)
{
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
elseif (gt_btn==0)
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
return 0;
}
Câu 3: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 8 SW. Viết chương trình ứng dụng điều khiển LED1
sáng nhấp nháy 7 lần rồi tắt khi SW1 = 1, LED tắt trong các trường hợp còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&SW,SW_LED);
XGpio_Initialize(&LED,SW_LED);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==2)
nhay(7);
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 4: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED1
sáng nhấp nháy 5 lần rồi tắt khi BTNC được nhấn, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio BTN,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==1)
nhay(5);
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 5: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED2
sáng nhấp nháy 10 lần rồi tắt khi BTNL được nhấn, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio BTN,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==4)
nhay(10);
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 6: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED4
sáng nhấp nháy 10 lần rồi tắt khi BTNR được nhấn, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio BTN,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==8)
nhay(10);
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 7: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED5
sáng nhấp nháy 10 lần rồi tắt khi BTNU được nhấn, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio BTN,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==16)
nhay(10);
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 8: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED2
sáng nhấp nháy 8 lần rồi tắt khi BTND được nhấn, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio BTN,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==2)
nhay(8);
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 9: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 8 SW. Viết chương trình ứng dụng điều khiển LED
sáng lần lượt từ LED0 – LED7 rồi tắt sáng khi SW1 = 1, LED tắt trong các trường
hợp còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int i,j;
u8 mang[8]={1,2,4,8,16,32,64,128};
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&SW,SW_LED);
XGpio_Initialize(&LED,SW_LED);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==2)
{
//while((XGpio_DiscreteRead(&SW,1))==2);
for(j=0;j<8;j++)
{
XGpio_DiscreteWrite(&LED,2,mang[j]);
Delay(100000000);
}
}
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 10: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 8 SW. Viết chương trình ứng dụng điều khiển LED
sáng lan từ LED0 – LED7 rồi tắt sáng khi SW0 = 1, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int i,j;
u8 mang[8]={1,3,7,15,31,63,127,255};
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&SW,SW_LED);
XGpio_Initialize(&LED,SW_LED);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,2,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==2)
{
//while((XGpio_DiscreteRead(&SW,1))==2);
for(j=0;j<8;j++)
{
XGpio_DiscreteWrite(&LED,2,mang[j]);
Delay(100000000);
}
}
else
XGpio_DiscreteWrite(&LED,2,0x00);
}
return 0;
}
Câu 11: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng đếm số lần BTND
được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,2,0xff);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,2)==2)
{
while(XGpio_DiscreteRead(&BTN,2)==2);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 12: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng đếm số lần BTNC
được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
#define BTN_LED XPAR_AXI_GPIO_0_DEVICE_ID
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,2,0xff);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,2)==1)
{
while(XGpio_DiscreteRead(&BTN,2)==1);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 13: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng đếm số lần BTNU
được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
#define BTN_LED XPAR_AXI_GPIO_0_DEVICE_ID
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,2,0xff);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,2)==16)
{
while(XGpio_DiscreteRead(&BTN,2)==16);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 14: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng đếm số lần BTNL
được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
#define BTN_LED XPAR_AXI_GPIO_0_DEVICE_ID
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,2,0xff);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,2)==4)
{
while(XGpio_DiscreteRead(&BTN,2)==4);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 15: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng đếm số lần BTNR
được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN,BTN_LED);
XGpio_Initialize(&LED,BTN_LED);
XGpio_SetDataDirection(&BTN,2,0xff);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,2)==8)
{
while(XGpio_DiscreteRead(&BTN,2)==8);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 16: Thiết kế hệ thống SoC gồm 1 VXL và 2 khối GPIO mỗi khối có 1 cổng, 1
khối nối với 8 LED và 1 khối nối 8 SW. Viết chương trình ứng dụng điều khiển
LED sáng khi SW tương ứng = 0, LED tắt khi SW = 1.
#include"xgpio.h"
#include"xparameters.h"
XGpio SW,LED;
int main()
{
int gt_sw;
XGpio_Initialize(&SW,SW_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
gt_sw=XGpio_DiscreteRead(&SW,1);
if(gt_sw==1)
XGpio_DiscreteWrite(&LED,1,0xFF);
if(gt_sw==2)
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 17: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng điều khiển
LED sáng khi BTN tương ứng được nhấn, LED tắt khi nhả BTN.
#include"xgpio.h"
#include"xparameters.h"
#define BTN_ID XPAR_BTN_DEVICE_ID
#define LED_ID XPAR_LED_DEVICE_ID
XGpio LED,BTN;
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
gt_btn=XGpio_DiscreteRead(&BTN,1);
// BTNC
if(gt_btn==1)
XGpio_DiscreteWrite(&LED,1,gt_btn);
// BTND
elseif(gt_btn==2)
XGpio_DiscreteWrite(&LED,1,gt_btn);
// BTNL
elseif (gt_btn==4)
XGpio_DiscreteWrite(&LED,1,gt_btn);
// BTNR
elseif (gt_btn==8)
XGpio_DiscreteWrite(&LED,1,gt_btn);
// BTNU
elseif (gt_btn==16)
XGpio_DiscreteWrite(&LED,1,gt_btn);
elseif (gt_btn==0)
XGpio_DiscreteWrite(&LED,1,gt_btn);
}
return 0;
}
Câu 18: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 8 SW. Viết chương trình ứng dụng điều khiển
LED1 sáng nhấp nháy 7 lần rồi tắt sáng khi SW1 = 1, LED tắt trong các trường
hợp còn lại
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&SW,SW_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==2)
nhay(7);
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 19: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng điều khiển
LED1 sáng nhấp nháy 5 lần rồi tắt khi BTNC được nhấn, LED tắt trong các
trường hợp còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio LED,BTN;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==1)
nhay(5);
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 20: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng điều khiển
LED2 sáng nhấp nháy 10 lần rồi tắt khi BTNL được nhấn, LED tắt trong các
trường hợp còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio LED,BTN;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==4)
nhay(10);
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 21: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng điều khiển
LED4 sáng nhấp nháy 10 lần rồi tắt khi BTNR được nhấn, LED tắt trong các
trường hợp còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio LED,BTN;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==8)
nhay(10);
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 22: Thiết kế hệ thống SoC gồm 1 VXL và 1 khối GPIO có 2 cổng, 1 cổng nối
với 8 LED, 1 cổng nối với 5 BTN. Viết chương trình ứng dụng điều khiển LED5
sáng nhấp nháy 10 lần rồi tắt khi BTNU được nhấn, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio LED,BTN;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==16)
nhay(10);
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 23: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng điều khiển
LED2 sáng nhấp nháy 8 lần rồi tắt khi BTND được nhấn, LED tắt trong các
trường hợp còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio LED,BTN;
int i;
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
int gt_btn;
XGpio_Initialize(&BTN,BTN_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&BTN,1))==2)
nhay(8);
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 24: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 8 SW. Viết chương trình ứng dụng điều khiển LED
sáng lần lượt từ LED0 – LED7 rồi tắt sáng khi SW1 = 1, LED tắt trong các trường
hợp còn lại
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int i;
u8 mang[8]={1,2,4,8,16,32,64,128}
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&SW,SW_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==2)
{
//while((XGpio_DiscreteRead(&SW,1))==2);
for(j=0;j<8;j++)
{
XGpio_DiscreteWrite(&LED,1,mang[j]);
Delay(100000000);
}
}
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 25: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 8 SW. Viết chương trình ứng dụng điều khiển LED
sáng lan từ LED0 – LED7 rồi tắt sáng khi SW0 = 1, LED tắt trong các trường hợp
còn lại.
#include "xparameters.h"
#include "xgpio.h"
XGpio SW,LED;
int i;
u8 mang[8]={1,3,7,15,31,63,127,255};
int delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
int main()
{
XGpio_Initialize(&SW,SW_ID);
XGpio_Initialize(&LED,LED_ID);
XGpio_SetDataDirection(&SW,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
if((XGpio_DiscreteRead(&SW,1))==1)
{
//while((XGpio_DiscreteRead(&SW,1))==1);
for(i=0;i<8;i++)
{
XGpio_DiscreteWrite(&LED,1,mang[i]);
Delay(100000000);
}
}
else
XGpio_DiscreteWrite(&LED,1,0x00);
}
return 0;
}
Câu 26: Thiết kế hệ thống SoC gồm 1 VXL và và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng đếm số lần
BTND được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN, BTN_ID);
XGpio_Initialize(&LED, LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,1)==2)
{
while(XGpio_DiscreteRead(&BTN,1)==2);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 27: Thiết kế hệ thống SoC gồm 1 VXL và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng đếm số lần
BTNC được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN, BTN_ID);
XGpio_Initialize(&LED, LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,1)==1)
{
while(XGpio_DiscreteRead(&BTN,1)==1);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 28: Thiết kế hệ thống SoC gồm 1 VXL và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng đếm số lần
BTNU được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN, BTN_ID);
XGpio_Initialize(&LED, LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,1)==16)
{
while(XGpio_DiscreteRead(&BTN,1)==16);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 29: Thiết kế hệ thống SoC gồm 1 VXL và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng đếm số lần
BTNL được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN, BTN_ID);
XGpio_Initialize(&LED, LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,1)==4)
{
while(XGpio_DiscreteRead(&BTN,1)==4);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 30: Thiết kế hệ thống SoC gồm 1 VXL và 2 khối GPIO mỗi khối có 1 cổng
nối với 8 LED, 1 khối nối với 5 BTN. Viết chương trình ứng dụng đếm số lần
BTNR được nhấn, Kết quả đếm hiển thị dạng nhị phân trên LED.
#include"xgpio.h"
#include"xparameters.h"
XGpio LED,BTN;
int main()
{
int dem;
XGpio_Initialize(&BTN, BTN_ID);
XGpio_Initialize(&LED, LED_ID);
XGpio_SetDataDirection(&BTN,1,0xFF);
XGpio_SetDataDirection(&LED,1,0x00);
while(1)
{
// BTND
if(XGpio_DiscreteRead(&BTN,1)==8)
{
while(XGpio_DiscreteRead(&BTN,1)==8);
dem++;
XGpio_DiscreteWrite(&LED,1,dem);
}
}
return 0;
}
Câu 31: Sử dụng ngắt trên GPIO. Thiết kế mạch đếm số lần nhấn phím BTNC. Kết
quả đếm hiển thị dạng nhị phân trên LED đơn.
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
// Xoa co ngat
XGpio_InterruptClear(&btn, btn_mask_int);
// Enable ngat GPIO
XGpio_InterruptEnable(&btn, btn_mask_int);
}
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;
}
Câu 32: Sử dụng ngắt trên GPIO. Thiết kế mạch đếm số lần nhấn phím BTNC. Kết
quả đếm hiển thị dạng thập phân trên LED 7 thanh.
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
int dem=0;
int delay(int n)
{
int i;
for(i=0;i<n;i++);
return 0;
}
int maled_7doan(int x)
{
switch(x)
{
case 0:return 0xc0;
case 1:return 0xf9;
case 2:return 0xa4;
case 3:return 0xb0;
case 4:return 0x99;
case 5:return 0x92;
case 6:return 0x82;
case 7:return 0x8f;
case 8:return 0x80;
case 9:return 0x90;
}
// 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;
}
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;
}
Câu 33: Sử dụng ngắt trên GPIO. khi nhấn BTNC(1): LED0 sáng nhấp nháy 5 lần
rồi tắt, khí nhấn BTNU(16): LED0 sáng nhấp nháy 7 lần rồi tắt, khi nhấn
BTND(2): LED0 sáng nhấp nháy 3 lần rồi tắt.
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
// Xoa co ngat
XGpio_InterruptClear(&btn, btn_mask_int);
// Enable ngat GPIO
XGpio_InterruptEnable(&btn, btn_mask_int);
}
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;
}
int Delay(int n)
{
for(i=0;i<n;i++);
return 0;
}
// Xoa co ngat
XGpio_InterruptClear(&btn, btn_mask_int);
// Enable ngat GPIOãc q
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;
}
Câu 35: Thiết kế hệ thống SOC. Viết chương trình đọc giá trị từ button. Nếu
BTNC nhấn, Led sang lan từ giữa sang 2 bên. Nếu BTNU nhấn, led sang lan từ 2
bên về giữa. Nếu BTNL nhấn, led sang lan từ trái qua phải. Nếu BTNR nhấn, LED
sang lan từ phải qua trái. Nếu nhấn BTND led4 sang nhấp nháy
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
#define led_id XPAR_GPIO_1_DEVICE_ID
#define btn_id XPAR_GPIO_0_DEVICE_ID
#define btnint_id XPAR_FABRIC_BTN_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
// Ham dieu khien ngat
int delay(int n)
{
int i;
for(i=0;i<n;i++);
return 0;
}
u8 mang1[8]={1,3,7,15,31,63,127,255};
u8 mang2[4]={24,60,126,255};
void hamdk()
{
int btn_value;
// 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;
btn_value= XGpio_DiscreteRead(&btn,1);
if(btn_value==1)
{
for(i=0;i<4;i++)
{
XGpio_DiscreteWrite(&LED,1,mang2[i]);
Delay(100000000);
}
}
if(btn_value==16)
{
for(i=4;i>=0;i--)
{
XGpio_DiscreteWrite(&LED,1,mang2[i]);
Delay(100000000);
}
}
if(btn_value==4)
{
for(i=7;i>=0;i--)
{
XGpio_DiscreteWrite(&LED,1,mang1[i]);
Delay(100000000);
}
}
if(btn_value==8)
{
for(i=0;i<8;i++)
{
XGpio_DiscreteWrite(&LED,1,mang1[i]);
Delay(100000000);
}
}
if(btn_value==2)
{
XGpio_DiscreteWrite(&LED,2,0b00010000); \\ LED4 sang
Delay(1000000);
XGpio_DiscreteWrite(&LED,2,0x00);
Delay(1000000);
// Xoa co ngat
XGpio_InterruptClear(&btn, btn_mask_int);
// Enable ngat GPIOãc q
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;
}
Câu 36: Sử dụng ngắt trên GPIO. Viết chương trình kiểm tra xem BTN nào vừa
được nhấn. Gửi thông báo qua UART lên máy tính.
// Ngat
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
#include "xuartps.h"
XGpio btn;
XScuGic btnint; // khai bao bien
XUartPs_Config *cf;
XUartPs uart1;
int gt_btn,i;
u8 str[30]="Ban vua nhan BTN";
u8 kt;
// Ham dieu khien ngat
void hamdk()
{ int gt_btn;
// 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;
// Kiem tra BTN nao vua duoc nhan
gt_btn = XGpio_DiscreteRead(&btn, 1);
if(gt_btn==1)
{
kt='C';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==2)
{
kt='D';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==4)
{
kt='L';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==8)
{
kt='R';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==16)
{
kt='U';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
// 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;
}
int main()
{
int status;
status = XGpio_Initialize(&btn, btn_id);
if(status != XST_SUCCESS) return XST_FAILURE;
// UART
init_platform();
cf = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID);
XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);
XUartPs_SetBaudRate(&uart1,9600);
XGpio_Initialize(&btn,XPAR_BTN_DEVICE_ID);
XGpio_SetDataDirection(&btn, 1, 0xFF);
status = setup_int1(&btn);
if(status != XST_SUCCESS) return XST_FAILURE;
while (1);
cleanup_platform();
return 0;
}
//Khong ngat
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xuartps.h"
XGpio btn;
XUartPs_Config *cf;
XUartPs uart1;
int main()
{
int gt_btn,i;
u8 str[30]="Ban vua nhan BTN";
u8 kt;
init_platform();
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_BTN_DEVICE_ID);
XGpio_SetDataDirection(&btn,1,0xff);
while(1)
{
gt_btn=XGpio_DiscreteRead(&btn,1);
if(gt_btn==1)
{
kt='C';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==2)
{
kt='D';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==4)
{
kt='L';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==8)
{
kt='R';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
if(gt_btn==16)
{
kt='U';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
}
}
cleanup_platform();
return 0;
}
Câu 37: Sử dụng ngắt trên GPIO. Viết chương trình VĐK nhận dữ liệu qua UART
nếu nhận được ký tự “A” LED0 sáng, nhận ký tự “B” LED1 sáng….
//Ngat
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
#include "xuartps.h"
XGpio led;
XUartPs_Config *cf;
XUartPs uart1;
u8 kt;
XUartPs_Recv(&uart1,&kt,1);
if(kt=='A')
XGpio_DiscreteWrite(&led,2,00000001);
if(kt=='B')
XGpio_DiscreteWrite(&led,2,00000010);
if(kt=='C')
XGpio_DiscreteWrite(&led,2,00000100);
if(kt=='D')
XGpio_DiscreteWrite(&led,2,00001000);
if(kt=='E')
XGpio_DiscreteWrite(&led,2,00010000);
if(kt=='F')
XGpio_DiscreteWrite(&led,2,00100000);
if(kt=='G')
XGpio_DiscreteWrite(&led,2,01000000);
if(kt=='H')
XGpio_DiscreteWrite(&led,2,10000000);
// Xoa co ngat
XGpio_InterruptClear(&led, led_mask_int);
// Enable ngat GPIO
XGpio_InterruptEnable(&led, led_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(&ledint, IntcConfig, IntcConfig->CpuBaseAddress);
if(status != XST_SUCCESS) return XST_FAILURE;
Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,
(Xil_ExceptionHandler)XScuGic_InterruptHandler,&ledint);
Xil_ExceptionEnable();
// goi ham dk ngat
status = XScuGic_Connect(&ledint,ledint_id,(Xil_InterruptHandler)hamdk,(void
*)t);
// Enable ngat GPIO, ngat toan cuc
XGpio_InterruptEnable(t, 1);
XGpio_InterruptGlobalEnable(t);
XScuGic_Enable(&ledint, ledint_id);
return XST_SUCCESS;
}
int main()
{
int status;
status = XGpio_Initialize(&led, led_id);
if(status != XST_SUCCESS) return XST_FAILURE;
// UART
init_platform();
cf = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID);
XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);
XUartPs_SetBaudRate(&uart1,9600);
XGpio_Initialize(&led,XPAR_LED_DEVICE_ID);
XGpio_SetDataDirection(&led, 1, 0xFF);
status = setup_int1(&led);
if(status != XST_SUCCESS) return XST_FAILURE;
while (1);
cleanup_platform();
return 0;
}
// Khong ngat
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xuartps.h"
XGpio led;
XUartPs_Config *cf;
XUartPs uart1;
int main()
u8 kt;
init_platform();
cf = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID);
XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);
XUartPs_SetBaudRate(&uart1,9600);
XGpio_Initialize(&led,XPAR_PS7_GPIO_0_DEVICE_ID)
XGpio_SetDataDirection(&led,2,0x00); // led
while(1)
XUartPs_Recv(&uart1,&kt,1);
if(kt=='A')
XGpio_DiscreteWrite(&led,2,00000001);
if(kt=='B')
XGpio_DiscreteWrite(&led,2,00000010);
if(kt=='C')
XGpio_DiscreteWrite(&led,2,00000100);
if(kt=='D')
XGpio_DiscreteWrite(&led,2,00001000);
if(kt=='E')
XGpio_DiscreteWrite(&led,2,00010000);
if(kt=='F')
XGpio_DiscreteWrite(&led,2,00100000);
if(kt=='G')
XGpio_DiscreteWrite(&led,2,01000000);
if(kt=='H')
XGpio_DiscreteWrite(&led,2,10000000);
cleanup_platform();
return 0;
}
Câu 38: Sử dụng ngắt trên GPIO. Đếm số lần nhấn phím BTNU. Kết quả đếm gửi
qua UART hiển thị trên màn hình terminal.
//Ngat
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
#include "xuartps.h"
#include "string.h"
#define btn_id XPAR_BTN_DEVICE_ID
#define btnint_id XPAR_FABRIC_BTN_IP2INTC_IRPT_INTR
#define intc_id XPAR_PS7_SCUGIC_0_DEVICE_ID
#define btn_mask_int XGPIO_IR_CH1_MASK
XGpio btn;
XUartPs_Config *cf;
XUartPs uart1;
int i;
u8 chuyen(dem)
{
return dem+48;
}
void hamdk()
{
int gt_btn;
u8 str[30]="Ban vua nhan BTNU lan thu: ";
u8 d[100];
// 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 BTNU
gt_btn = XGpio_DiscreteRead(&btn, 1);
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
if(gt_btn==16)
{
dem++;
d[0]=dem;
for(i=0;i<2;i++)
XUartPs_Send(&uart1,&d[i],1);
}
// 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;
}
int main()
{
int status;
status = XGpio_Initialize(&btn, btn_id);
if(status != XST_SUCCESS) return XST_FAILURE;
// UART
init_platform();
cf = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID);
XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);
XUartPs_SetBaudRate(&uart1,9600);
XGpio_Initialize(&btn,XPAR_BTN_DEVICE_ID);
XGpio_SetDataDirection(&btn, 1, 0xFF);
status = setup_int1(&btn);
if(status != XST_SUCCESS) return XST_FAILURE;
while (1);
cleanup_platform();
return 0;
}
// Khong ngat
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xuartps.h"
XGpio btn;
XUartPs_Config *cf;
XUartPs uart1;
int main()
u8 kt;
int gt_btn;
int dem;
init_platform();
cf = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID);
XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);
XUartPs_SetBaudRate(&uart1,9600);
XGpio_Initialize(&btn,XPAR_PS7_GPIO_0_DEVICE_ID)
XGpio_SetDataDirection(&btn,1,0xff); // btn
while(1)
{
If((XGpio_DiscreteRead(&btn,1))==16)
while((XGpio_DiscreteRead(&btn,1))==16);
dem++;
XUartPs_Send(&uart1,&dem,1);
cleanup_platform();
return 0;
}
Câu 39: Thiết kế hệ thống SOC cho phép đếm tiến từ 0 - 9 khi phím SW7 = 1 với
chu kỳ đếm là 1s. Kết quả đếm hiển thị dạng thập phân trên LED 7 thanh.
#include "xgpio.h"
#include "xparameters.h"
XGpio sw;
int delay(int n)
{
int i;
for(i-0;i<n;i++)
return 0;
}
int ma_led(int x)
{
switch(x)
{
case 0: return 0xc0;
case 1: return 0xf9;
case 2: return 0xa4;
case 3: return 0xb0;
case 4: return 0x99;
case 5: return 0x92;
case 6: return 0x82;
case 7: return 0xf8;
case 8: return 0x80;
case 9: return 0x90;
}
}
int main()
{
int d=0;
XGpio_Initialize(&sw,SW_LED7);
XGpio_SetDataDirection(&sw,1,0xFF);
XGpio_SetDataDirection(&sw,2,0x00);
while(1)
{
if(XGpio_DiscreteRead(&sw,1)==128)
{
while(XGpio_DiscreteRead(&sw,1)==128);
if(d>9)
d=0;
else
d++;
XGpio_DiscreteWrite(&sw,2,ma_led(d));
delay(100000000);
}
}
return 0;
}
Câu 40: Thiết kế hệ thống SOC cho phép đếm lùi từ 9 – 0 khi phím SW0 = 1. Kết
quả đếm hiển thị dạng thập phân trên LED 7 thanh.
#include "xgpio.h"
#include "xparameters.h"
XGpio sw;
int delay(int n)
{
int i;
for(i-0;i<n;i++)
return 0;
}
int ma_led(int x)
{
switch(x)
{
case 0: return 0xc0;
case 1: return 0xf9;
case 2: return 0xa4;
case 3: return 0xb0;
case 4: return 0x99;
case 5: return 0x92;
case 6: return 0x82;
case 7: return 0xf8;
case 8: return 0x80;
case 9: return 0x90;
}
}
int main()
{
int d=0;
XGpio_Initialize(&sw,SW_LED7);
XGpio_SetDataDirection(&sw,1,0xFF);
XGpio_SetDataDirection(&sw,2,0x00);
while(1)
{
if(XGpio_DiscreteRead(&sw,1)==1)
{
while(XGpio_DiscreteRead(&sw,1)==1);
if(d<0)
d=9;
else
d--;
XGpio_DiscreteWrite(&sw,2,ma_led(d));
delay(100000000);
}
}
return 0;
}
Biểu điểm bài thường xuyên 1:
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xuartps.h"
XGpio sw;
XUartPs_Config *cf;
XUartPs uart1;
int main()
int gt_sw,i;
init_platform();
cf = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID);
XUartPs_CfgInitialize(&uart1,cf,cf->BaseAddress);
XUartPs_SetBaudRate(&uart1,9600);
XGpio_Initialize(&sw,XPAR_AXI_GPIO_SW_DEVICE_ID);
XGpio_SetDataDirection(&sw,1,0xff);
while(1)
gt_sw=XGpio_DiscreteRead(&sw,1);
if(gt_sw==1)
kt='1';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==2)
kt='2';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==4)
kt='4';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==8)
kt='8';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==16)
{
kt=’16';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==32)
kt='32';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==64)
kt='64';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
if(gt_sw==128)
{
kt='128';
for(i=0;i<sizeof(str);i++)
XUartPs_Send(&uart1,&str[i],1);
XUartPs_Send(&uart1,&kt,1);
cleanup_platform();
return 0;
Ký tự A
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xuartps.h"
XGpio btn;
XUartPs_Config *cf;
XUartPs uart1;
int main()
{
int gt_btn;
u8 kt='A';
init_platform();
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_BTN_DEVICE_ID);
XGpio_SetDataDirection(&btn,1,0xff);
while(1)
gt_btn=XGpio_DiscreteRead(&btn,1);
if(gt_btn==1)
XUartPs_Send(&uart1,&kt,1);
cleanup_platform();
return 0;