【Start_DSC28034PNT湖人开发板免费体验】(开源)控制机械臂小游戏2 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

[文章]

【Start_DSC28034PNT湖人开发板免费体验】(开源)控制机械臂小游戏2

机械臂小游戏

接上三篇:
【Start_DSC28034PNT湖人开发板免费体验】(开源)控制机械臂小游戏

【Start_DSC28034PNT湖人开发板免费体验】定时器控制数字舵机

【Start_DSC28034PNT湖人开发板免费体验】1初识中科昊芯

【Start_DSC28034PNT湖人开发板免费体验】定时器控制数字舵机 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛! https://bbs.elecfans.com/jishu_2366546_1_1.html

我在其他论坛的网名叫"还没吃饭"

加入游戏机制.老虎、杠子、鸡游戏。
部分源代码:

#include <stdio.h>



#include <stdlib.h>



#include <time.h>



#include "dsc_config.h"



#include <syscalls.h>



#include "IQmathLib.h"



 



#include "gpio.h"



 



int main(void)



{



 



       InitSysCtrl();



 



       LEDInit();



 



       BeepInit();



 



       DINT;



 



       /*禁能所有中断*/



       IER
= 0x0000;



       /*清所有中断标志位*/



       IFR
= 0x0000;



 



       /*初始化PIE 向量表*/



       InitPieVectTable();



 



       /*调用官方库函数,初始化CPU定时器*/



       InitCpuTimers();



 



GpioDataRegs.GPBSET.bit.GPIO32 = 1; 



int v;



   
char player;



   
int computer;



   
char* options[] = {"Tiger", "Chicken",
"Worm", "Lion"};



 



   
printf("欢迎来到老虎、鸡、虫、杠子游戏!\n");



 



              for
( v = 80; v > 40 ; v-- )//32 1 机械臂欢迎手势



              {



 



                     /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                     ConfigCpuTimer(&CpuTimer1,
120, 2000);



 



                     /*To
start or restart the CPU-timer, set TSS to 0*/



                     CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                     /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                     ConfigCpuTimer(&CpuTimer2,
120, 18000);



 



                     /*To
start or restart the CPU-timer, set TSS to 0*/



                     CpuTimer2Regs.TCR.bit.TSS
= 0;



 



              CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



              GpioDataRegs.GPBSET.bit.GPIO32
= 1;



              while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                     {



 



                     }



 



              CpuTimer2Regs.TCR.bit.TIF
= 1;



GpioDataRegs.GPBCLEAR.bit.GPIO32 = 1; /*,GPIO32置低*/



 



//GpioDataRegs.GPBTOGGLE.bit.GPIO32 = 1;
/* GPIO32电平翻转,D400交互闪烁*/



 



while(CpuTimer2Regs.TCR.bit.TIF != 1)



              {



              }



              }



   
// 让计算机随机选择一个选项



   
srand(time(NULL));



   
computer = rand() % 4;



 



printf("玩家,请选择你的选项(T-老虎、C-鸡、W-虫、L-杠子):\n");



 



for ( v = 80; v > 40 ; v-- ) //33 1机械臂“请选择你的选项”手势



              {



 



                     /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                     ConfigCpuTimer(&CpuTimer1,
120, 2000);



 



                     /*To start or
restart the CPU-timer, set TSS to 0*/



                     CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                     /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                     ConfigCpuTimer(&CpuTimer2,
120, 18000);



 



                     /*To start or
restart the CPU-timer, set TSS to 0*/



                     CpuTimer2Regs.TCR.bit.TSS
= 0;



 



              CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



              GpioDataRegs.GPBSET.bit.GPIO33
= 1;



              while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                     {



 



                     }



 



              CpuTimer2Regs.TCR.bit.TIF
= 1;



GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1; /*,GPIO33置低*/



 



//GpioDataRegs.GPBTOGGLE.bit.GPIO32 = 1; /* GPIO电平翻转,D400交互闪烁*/



 



while(CpuTimer2Regs.TCR.bit.TIF != 1)



              {



              }



              }



 



   
scanf(" %c", &player);



 



   
printf("计算机选择的选项是:%s\n", options[computer]);



 



   
// 判断获胜或平局



   
if (player == options[computer][0]) {



       
printf("平局!\n");



                            for
( v = 80; v > 40 ; v-- ) //40 2平局“一般般”手势



                                   {



 



                                          /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                          ConfigCpuTimer(&CpuTimer1,
120, 1000);



 



                                          /*To
start or restart the CPU-timer, set TSS to 0*/



                                          CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                                          /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                          ConfigCpuTimer(&CpuTimer2,
120, 19000);



 



                                          /*To
start or restart the CPU-timer, set TSS to 0*/



                                          CpuTimer2Regs.TCR.bit.TSS
= 0;



 



                                   CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



                                   GpioDataRegs.GPBSET.bit.GPIO40
= 1;



                                   while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                                          {



 



                                          }



 



                                   CpuTimer2Regs.TCR.bit.TIF
= 1;



                     GpioDataRegs.GPBCLEAR.bit.GPIO40
= 1; /*,GPIO43置低*/



 



                     //GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1; /* GPIO41电平翻转,D400交互闪烁*/



 



                     while(CpuTimer2Regs.TCR.bit.TIF
!= 1)



                                   {



                                   }



                                   }



 



 



 



 



                            for
( v = 80; v > 40 ; v-- )//44 2



                                   {



 



                                          /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                          ConfigCpuTimer(&CpuTimer1,
120, 1000);



 



                                          /*To
start or restart the CPU-timer, set TSS to 0*/



                                          CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                                          /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                          ConfigCpuTimer(&CpuTimer2,
120, 19000);



 



                                          /*To
start or restart the CPU-timer, set TSS to 0*/



                                          CpuTimer2Regs.TCR.bit.TSS
= 0;



 



                                   CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



                                   GpioDataRegs.GPBSET.bit.GPIO44
= 1;



                                   while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                                          {



 



                                          }



 



                                   CpuTimer2Regs.TCR.bit.TIF
= 1;



                     GpioDataRegs.GPBCLEAR.bit.GPIO44
= 1; /*,GPIO33置低*/



 



                     //GpioDataRegs.GPBTOGGLE.bit.GPIO41
= 1; /* GPIO41电平翻转,D400交互闪烁*/



 



                     while(CpuTimer2Regs.TCR.bit.TIF
!= 1)



                                   {



                                   }



                                   }



 



       }



   
} else if ((player == 'T' && options[computer][0] == 'C') ||



               (player == 'C' &&
options[computer][0] == 'W') ||



               (player == 'W' &&
options[computer][0] == 'L') ||



               (player == 'L' &&
options[computer][0] == 'T')) {



       
printf("恭喜,你获胜了!\n");



 



 



 



              for
( v = 80; v > 40 ; v-- ) //32 2获胜跳舞



                     {



 



                            /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                            ConfigCpuTimer(&CpuTimer1,
120, 1000);



 



                            /*To
start or restart the CPU-timer, set TSS to 0*/



                            CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                            /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                            ConfigCpuTimer(&CpuTimer2,
120, 19000);



 



                            /*To
start or restart the CPU-timer, set TSS to 0*/



                            CpuTimer2Regs.TCR.bit.TSS
= 0;



 



                     CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



                     GpioDataRegs.GPBSET.bit.GPIO32
= 1;



                     while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                            {



 



                            }



 



                     CpuTimer2Regs.TCR.bit.TIF
= 1;



       GpioDataRegs.GPBCLEAR.bit.GPIO32
= 1; /*,GPIO43置低*/



 



       //GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1; /* GPIO41电平翻转,D400交互闪烁*/



 



       while(CpuTimer2Regs.TCR.bit.TIF
!= 1)



                     {



                     }



                     }



 



              for
( v = 80; v > 40 ; v-- )//33 2



                     {



 



                            /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                            ConfigCpuTimer(&CpuTimer1,
120, 1000);



 



                            /*To
start or restart the CPU-timer, set TSS to 0*/



                            CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                            /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                            ConfigCpuTimer(&CpuTimer2,
120, 19000);



 



                            /*To
start or restart the CPU-timer, set TSS to 0*/



                            CpuTimer2Regs.TCR.bit.TSS
= 0;



 



                     CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



                     GpioDataRegs.GPBSET.bit.GPIO33
= 1;



                     while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                            {



 



                            }



 



                     CpuTimer2Regs.TCR.bit.TIF
= 1;



       GpioDataRegs.GPBCLEAR.bit.GPIO33
= 1; /*,GPIO33置低*/



 



       //GpioDataRegs.GPBTOGGLE.bit.GPIO41
= 1; /* GPIO41电平翻转,D400交互闪烁*/



 



       while(CpuTimer2Regs.TCR.bit.TIF
!= 1)



                     {



                     }



                     }



   
} else {



       
printf("很遗憾,你输了!\n");



 



for ( v = 80; v > 40 ; v-- )//40 1输了“垂头丧气”手势



                            {



 



                                   /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                   ConfigCpuTimer(&CpuTimer1,
120, 2000);



 



                                   /*To
start or restart the CPU-timer, set TSS to 0*/



                                   CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                                   /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                   ConfigCpuTimer(&CpuTimer2,
120, 18000);



 



                                   /*To
start or restart the CPU-timer, set TSS to 0*/



                                   CpuTimer2Regs.TCR.bit.TSS
= 0;



 



                            CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



                            GpioDataRegs.GPBSET.bit.GPIO40
= 1;



                            while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                                   {



 



                                   }



 



                            CpuTimer2Regs.TCR.bit.TIF
= 1;



              GpioDataRegs.GPBCLEAR.bit.GPIO40
= 1; /*,GPIO32置低*/



 



              //GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1; /* GPIO32电平翻转,D400交互闪烁*/



 



              while(CpuTimer2Regs.TCR.bit.TIF
!= 1)



                            {



                            }



                            }



 



              for
( v = 80; v > 40 ; v-- ) //44 1



                            {



 



                                   /*定时器1初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                   ConfigCpuTimer(&CpuTimer1,
120, 2000);



 



                                   /*To
start or restart the CPU-timer, set TSS to 0*/



                                   CpuTimer1Regs.TCR.bit.TSS
= 0;



 



                                   /*定时器2初始化,第二个参数为CPU SYSCLK = 120M,第三个参数为设定的周期,us单位*/



                                   ConfigCpuTimer(&CpuTimer2,
120, 18000);



 



                                   /*To
start or restart the CPU-timer, set TSS to 0*/



                                   CpuTimer2Regs.TCR.bit.TSS
= 0;



 



                            CpuTimer1Regs.TCR.bit.TIF
= 1; /*clear flag*/



                            GpioDataRegs.GPBSET.bit.GPIO44
= 1;



                            while(CpuTimer1Regs.TCR.bit.TIF
!= 1)



                                   {



 



                                   }



 



                            CpuTimer2Regs.TCR.bit.TIF
= 1;



              GpioDataRegs.GPBCLEAR.bit.GPIO44
= 1; /*,GPIO33置低*/



 



              //GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1; /* GPIO电平翻转,D400交互闪烁*/



 



              while(CpuTimer2Regs.TCR.bit.TIF
!= 1)



                            {



                            }



                            }
  
}   
return 0;

}

更多回帖

×
发帖