⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vga.c

📁 在Altera公司NIOS IDE开发中控制VGA显示
💻 C
字号:
#include "system.h"#include "VGA.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include <io.h>#include "sys/alt_irq.h"#include "altera_avalon_pio_regs.h"volatile int edge_capture;short s[120000];long cnttime=0;//int keyword;short flag=0,num=0;unsigned long base;static void handle_button_interrupts(void* context, alt_u32 id){  volatile int* edge_capture_ptr = (volatile int*) context;  *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE);  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0);//  printf("in the button pio!edge capture is:%d\n",edge_capture);}static void init_button_pio(){  void* edge_capture_ptr = (void*) &edge_capture;  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0xf);  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x0);  alt_irq_register( BUTTON_PIO_IRQ, edge_capture_ptr, handle_button_interrupts ); }void main(void){  init_button_pio();    unsigned short mmm,site=3,over,xs,ys;  int i,cnt;  VGA_Ctrl_Reg vga_ctrl_set;    vga_ctrl_set.VGA_Ctrl_Flags.RED_ON    = 1;  vga_ctrl_set.VGA_Ctrl_Flags.GREEN_ON  = 1;  vga_ctrl_set.VGA_Ctrl_Flags.BLUE_ON   = 1;  vga_ctrl_set.VGA_Ctrl_Flags.CURSOR_ON = 1;    Vga_Write_Ctrl(VGA_0_BASE, vga_ctrl_set.Value);  Set_Pixel_On_Color(1023,0,0);  Set_Pixel_Off_Color(0,0,1023);      int cnti=3;  Vga_Move_instruct(VGA_0_BASE,7);  usleep(1000000);//while(1)  ///////////////////////////////////////       Vga_Move_instruct(VGA_0_BASE,7);//清屏       usleep(100000);       Vga_Move_instruct(VGA_0_BASE,7);//清屏       usleep(100000);  ///////////////////////////////////////       Vga_Game_Start(VGA_0_BASE,0);      usleep(1000);           Vga_Game_Start(VGA_0_BASE,0);           usleep(1000);             IOWR(VGA_0_BASE,OSD_MEM_ADDR+12,0x3);  Vga_Move_instruct(VGA_0_BASE,7);  usleep(200000);  Vga_Game_Start(VGA_0_BASE,1);usleep(1000);  Vga_Game_Start(VGA_0_BASE,1);usleep(1000);  IORD(VGA_0_BASE,OSD_MEM_ADDR+15);  IORD(VGA_0_BASE,OSD_MEM_ADDR+15);  //Vga_Move_instruct(VGA_0_BASE,site%5);  //          Vga_Move_instruct(VGA_0_BASE,3);printf("begin:\n");//usleep(2000000);            Vga_Move_instruct(VGA_0_BASE,2);//usleep(2000000);            Vga_Move_instruct(VGA_0_BASE,1);//usleep(2000000);            Vga_Move_instruct(VGA_0_BASE,4);usleep(2000000);            Vga_Move_instruct(VGA_0_BASE,2);printf("eheng:\n");usleep(1000000);//  while(1); while(1)   {    /////clear the car and the point ,then set the stop bit//////  IOWR(VGA_0_BASE,OSD_MEM_ADDR+12,0x4);  /////clear the car and the point ,then set the stop bit//////    /////close the game//////////        Vga_Game_Start(VGA_0_BASE,0);        usleep(1000);  /////close the game//////////      /////clear the screen/////////        Vga_Move_instruct(VGA_0_BASE,7);        usleep(1000000);  /////clear the screen/////////        /////open the game//////////        Vga_Game_Start(VGA_0_BASE,1);        usleep(1000);  /////open the game//////////        /////light the car and the point ,then clear the stop bit//////  IOWR(VGA_0_BASE,OSD_MEM_ADDR+12,0x3);  /////light the car and the point ,then clear the stop bit//////       while(1)     {//       printf("begin:\n");           Vga_Move_instruct(VGA_0_BASE,edge_capture%5);                mmm=IORD(VGA_0_BASE,OSD_MEM_ADDR+15);        mmm=IORD(VGA_0_BASE,OSD_MEM_ADDR+15);        mmm=IORD(VGA_0_BASE,OSD_MEM_ADDR+15);                if(mmm!=0)              {  //        usleep(100);//          mmm=IORD(VGA_0_BASE,OSD_MEM_ADDR+15);    //      mmm=IORD(VGA_0_BASE,OSD_MEM_ADDR+15);     //     mmm=IORD(VGA_0_BASE,OSD_MEM_ADDR+15);                  //if(mmm!=0)                  {                  printf("the enter mmm = %x\t",mmm);                   ///////////stop the game//////////                   IOWR(VGA_0_BASE,OSD_MEM_ADDR+12,0x0);                   ///////////stop the game//////////                            ////////////clear the car and set the clear bit//////////                    Vga_Move_instruct(VGA_0_BASE,4);                    ////////////clear the car and set the clear bit//////////                            Vga_Game_Start(VGA_0_BASE,0);                    //mmm=0;                   // mmm=0;                                        break;                      }        }        printf(" mmm = %x\n",mmm);             }/////////////////clear the car and the point///////////      IOWR(VGA_0_BASE,OSD_MEM_ADDR+12,0);    usleep(20);/////////////////clear the car and the point////////////////////////////clear screen/////////////////         printf("clear screen!\n");      Vga_Move_instruct(VGA_0_BASE,7);      usleep(1000000);/////////////////clear screen/////////////////   /////////////show the result///////////////      if(mmm==1)      {      Vga_Move_instruct(VGA_0_BASE,5);      usleep(5000000);      printf("fail!\n");      }      else if(mmm==2)      {      Vga_Move_instruct(VGA_0_BASE,6);      usleep(5000000);      printf("win!\n");      }      mmm=0;/////////////show the result////////////////////////////get the key data//////////////      //      while(1){if(edge_capture==1)break;}printf("key1:\n");while(1){if(edge_capture==2)break;}printf("key2:\n");/////////////get the key data///////////////////////close the game/////////      Vga_Game_Start(VGA_0_BASE,0);      usleep(1000);      Vga_Game_Start(VGA_0_BASE,0);      usleep(1000);/////////close the game/////////    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -