单片机 > 单片机程序设计 > 详情

16x16点阵贪吃蛇 单片机源程序 带注释

发布时间:2020-12-28 发布时间:
|

一年前做的小玩意了,硬件丢失了,程序还在,以前都是写在一个文件内,翻出来分成几个文件,程序注释写的很详细,希望对初入单片机的师兄有所帮助

单片机源程序如下:

//=================================================================================================================================================================

//软件功能:贪吃蛇

//硬件描述:最小系统+4x(8x8点阵)+ (1x(HC154)+3x(74HC14D)) + 1x(HC595)

//程序描述:74595.c中有串进并出程序

//          delay.c中有延迟函数

//          dispaly.c中有点阵显示函数

//          anjian.c中有按键函数

//          related.c中有初始化参数函数、游戏结束图案函数、点阵显示清除函数、糖果随机函数、蛇显示变化函数

//功能概括描述:16x16点阵用于显示、5个按键有旋转按键、上、下、左、右按键

//              上、下、左、右按键用于控制蛇上下左右移动

//              有转折点判断(理论上蛇可以打15折)、蛇碰壁判断、蛇速度改变判断

//=================================================================================================================================================================

#include "reg52.h"                                                                                               //51头文件

#include "intrins.h"                                                                                             //部分运算符所需头文件

#include "74595.h"                                                                                               //74595程序

#include "delay.h"

#include "display.h"

#include "anjian.h"

#include "related.h"

#define uchar unsigned char 

#define uint unsigned int 

//=================================================================================================================================================================

//sbit Beep=P2^7;                                                                                                         //蜂鸣器

uint HUANCUN[16],STX,SWX,GCUNY;                       //缓存显示数组,蛇头横坐标,蛇尾横坐标,转折点存储数组,果子位置存储

uchar SSS,t,STY,SWY,GUO,CBN,GCUNX,Q,cus;                         //蛇方向变量,定时器计时变量,蛇头纵坐标,蛇尾纵坐标,转折点反向存储数组,糖果,计时变量,随机数,蛇方向前一个状态变量

uchar idata ZZS[16];

uint idata ZZD[16];

//=================================================================================================================================================================

void Init()                                                                                   //初始化

{

        TMOD=0x01;                                                                                                   //工作方式1

        EA=1;                                                                                                               //CPU中断开启

        ET0=1;                                                                                                             //定时器T0中断开启

        TH0=(65536-5000)/256;                                                                 //定时5ms

        TL0=(65536-5000)%256;

        TR0=0;                                                                                                             //定时器关闭状态

        KS=1;                                                                                                               //开始键置高电平

//        Beep=0;

}

//=================================================================================================================================================================

void main()

{

        Init();

        while(1)

        {

          Q=rand()%256;                                                 //随机代码放在while(1)函数中不停运转

                if(TR0==0){                                                   //如果定时器在关闭状态 

                        J_S();                                                           //清除缓存

                        K_S();                                                           //各种数据初始化 

                }else{

                   if(GUO!=1){                                         //如果没有糖果         

                     SUI_JI();                                         //调用随机子程序

                           t--;                                                           //蛇的速度加快

                           CBN=t;                                                   //CBN用于保存改变后的t

                   }

                 }

XIANSI(); //循环显示函数



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二