找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2105|回复: 0
打印 上一主题 下一主题
收起左侧

stc8a8k单片机开发的方块游戏机源程序

[复制链接]
跳转到指定楼层
楼主
本帖最后由 qq624353765 于 2021-6-12 06:33 编辑

硬件STC8A8K64S4A12+LCD12864,只做了两个游戏(俄罗斯方块+推箱子),有兴趣的师兄可以继续写完!如需帮助点我头像加我








单片机源程序如下:
  1. #include <STC8.h>
  2. #include <stdlib.h>
  3. #include <intrins.h>
  4. #include "51GUI.h"
  5. #include "ST7567.h"
  6. #include "EEPROM.h"
  7. #include "主菜单.h"
  8. #include "俄罗斯方块1.h"
  9. #include "推箱子1.h"

  10. #define InitialAddress 1632

  11. unsigned char module,minute,second,count,D_num;

  12. void verify_eeprom(){
  13.         p_DATA eepromdata dat;
  14.         unsigned char a;
  15.         unsigned int b;
  16.         if(ED->sign!='L'){
  17.                 for(a=1;a<38;a++)((unsigned char p_DATA*)&dat)[a]=0;
  18.                 for(b=38;b<467;b++)((unsigned char p_DATA*)&dat)[a]=0xFF;
  19.                 dat.sign='L';
  20.                 EEPROM_Write(&dat);
  21.         }
  22. }

  23. unsigned char Key_scan(){//按键扫描
  24.         unsigned char a;
  25.         a=P3&Bin(0011,0011);
  26.         P3=Bin(1100,1101);
  27.         _nop_();_nop_();_nop_();_nop_();
  28.         a|=P3&Bin(1100,1101);
  29.         P3=Bin(0011,0011);
  30.         return a;
  31. }

  32. void main(){
  33.         VOCTRL=Bin(1000,0000);
  34.         P_SW1=Bin(0000,0100);
  35.         SPCTL=Bin(1101,1100);
  36.         AUXR=Bin(0001,0000);
  37.         TH0=0x0B;
  38.         TL0=0xDC;
  39.         INTCLKO=Bin(0100,0000);
  40.         IE2=Bin(0000,0100);
  41.         IE=Bin(1000,0010);
  42.         init_mempool(InitialAddress,8192-InitialAddress);
  43.         GUI_Init(64,128);
  44.         ST7567_init();
  45.         verify_eeprom();
  46.         for(;;)switch(module){
  47.                 case NMM:main_menu();break;
  48.                 case NT:tetris();break;
  49.                 case NTG:tetris_gameover();break;
  50.                 case NS:Sokoban();break;
  51.                 case NSP:Sokoban_reach();break;
  52.                 case NSSA:module=NS;break;
  53.         }
  54. }

  55. time25ms()interrupt 1{//计时
  56.         if(++count>40){
  57.                 count=0;
  58.                 if(--second==0xFF){
  59.                         second=59;
  60.                         --minute;
  61.                 }
  62.         }
  63. }

  64. delay()interrupt 12{
  65.         D_num++;
  66. }

  67. Automatically_download()interrupt 16{
  68.         IAP_CONTR=0x60;
  69. }
复制代码

所有程序51hei提供下载:
方块游戏机.zip (308.87 KB, 下载次数: 23)

视频效果,使用QQ扫一扫







评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表