资源简介
本压缩包包含贪吃蛇游戏的整个工程,游戏代码可以自定义蛇的地图,同步记录分数,采用epprom记录最高分数,游戏结束后显示。本工程基于芯片STC89C52
代码片段和文件信息
#include “eeprom.h“
/**********打开ISP/IAP功能**************/
void ISP_IAP_Enable(void)
{
EA = 0; //关中断
ISP_CONTR = ISP_CONTR & 0x18;
ISP_CONTR = ISP_CONTR | WaitTime; // 设置等待时间
ISP_CONTR = ISP_CONTR | 0x80; //允许ISP/IAP操作
}
/**********关闭ISP/IAP功能**************/
void ISP_IAP_Disable(void)
{
ISP_CONTR = ISP_CONTR & 0x7f; //禁止ISP/IAP操作
ISP_CMD = 0x00; //去除ISP/IAP命令
ISP_TRIG = 0x00; //防止ISP/IAP命令无触发
EA = 1; // 开中断
}
/**********触发ISP/IAP**************/
void ISPTrig(void)
{
ISP_TRIG = 0x46; //先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此
ISP_TRIG = 0xb9; //送完B9h后,ISP/IAP命令立即被触发启动
_nop_();
}
/**********字节读**************/
unsigned char byte_read(unsigned int byte_addr)
{
unsigned char dat = 0; //读EEPROM数据缓存
EA = 0; //关中断
ISP_ADDRH = (unsigned char)(byte_addr >> 8); //送地址高字节
ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); //送地址低字节
ISP_IAP_Enable(); //打开ISP/IAP功能
ISP_CMD = ISP_CMD & 0xf8; //清除ISP_CMD寄存器低3位
ISP_CMD = ISP_CMD | RdCommand; //写入读数据命令
ISPTrig(); //触发ISP/IAP
dat = ISP_DATA; //将ISP_DATA寄存器中的数据保存起来
ISP_IAP_Disable(); //关闭ISP/IAP功能
EA = 1; //使能中断
return dat; //返回读到的数据
}
/**********字节写**************/
void byte_write(unsigned int byte_addrunsigned char Orig_data)
{
EA = 0; //关中断
ISP_ADDRH = (unsigned char)(byte_addr >> 8); //送地址高字节
ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); //送地址低字节
ISP_IAP_Enable(); //打开ISP/IAP功能
ISP_CMD = ISP_CMD & 0xf8; //清除ISP_CMD寄存器低3位
ISP_CMD = ISP_CMD | PrgCommand; //写入写数据命令
ISP_DATA = Orig_data; //写入数据到ISP_DATA寄存器
ISPTrig(); //触发ISP/IAP
ISP_IAP_Disable(); //关闭ISP/IAP功能
EA =1; //使能中断
}
/**********扇区擦除**************/
void SectorErase(unsigned int sector_addr)
{
EA = 0;
ISP_ADDRH = (unsigned char)(sector_addr >> 8); //送擦除地址高字节
ISP_ADDRL = (unsigned char)(sector_addr & 0x00ff); //送擦除地址低字节
ISP_IAP_Enable();
ISP_CMD = ISP_CMD & 0xf8; //清除ISP_CMD寄存器低3位
ISP_CMD = ISP_CMD | EraseCommand; //写入擦除数据命令
ISPTrig(); //触发ISP/IAP
ISP_IAP_Disable(); //关闭ISP/IAP功能
}
////////////////分数替换函数//////////////////
void max_score(unsigned int scoresss)
{
unsigned int scoresss_pre = 0;
unsigned char scoresss_pre_hscoresss_pre_l;
scoresss_pre = scoresss_pre + byte_read(0x2201);//高位
scoresss_pre = scoresss_pre << 8;
scoresss_pre = scoresss_pre + byte_read(0x2202);//低位
if(scoresss > scoresss_pre)
{
SectorErase(0x2200); //擦除扇区
scoresss_pre_h = (unsigned char)(scoresss >> 8); //送数据高字节
scoresss_pre_l = (unsigned char)(scoresss & 0x00ff); //送数据低字节
byte_write(0x2201scoresss_pre_h);
byte_write(0x2202scoresss_pre_l);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3185 2019-01-24 17:48 EEPROM.c
文件 1098 2019-01-24 17:03 EEPROM.h
文件 5409 2019-01-24 18:19 EEPROM.LST
文件 6566 2019-01-24 18:19 EEPROM.OBJ
文件 823 2018-12-28 20:32 get_kuai.LST
文件 603 2018-12-28 20:32 get_kuai.OBJ
文件 3789 2019-01-08 10:50 interrupt.c
文件 367 2019-01-06 12:56 interrupt.h
文件 7281 2019-01-24 18:18 interrupt.LST
文件 8489 2019-01-24 18:18 interrupt.OBJ
文件 3215 2019-01-08 10:52 key.c
文件 75 2019-01-03 19:39 key.h
文件 6907 2019-01-24 18:18 key.LST
文件 6782 2019-01-24 18:18 key.OBJ
文件 10802 2019-01-08 14:22 lcd_data.c
文件 274 2019-01-08 14:20 lcd_data.h
文件 14890 2019-01-24 18:19 lcd_data.LST
文件 2107 2019-01-24 18:19 lcd_data.OBJ
文件 1149 2019-01-24 18:13 main.c
文件 82 2019-01-06 15:20 main.h
文件 3139 2019-01-24 18:18 main.LST
文件 7281 2019-01-24 18:18 main.OBJ
文件 2688 2019-01-08 14:07 maze.c
文件 117 2019-01-08 14:07 maze.h
文件 5351 2019-01-08 14:19 maze.LST
文件 8427 2019-01-08 14:19 maze.OBJ
文件 9063 2019-01-24 17:54 show.c
文件 974 2019-01-06 15:47 show.h
文件 15214 2019-01-24 18:19 show.LST
文件 12914 2019-01-24 18:19 show.OBJ
文件 19767 2019-01-24 17:49 snake.c
............此处省略18个文件信息
- 上一篇:销售模块的可用性检查
- 下一篇:仿QQ好友列表控件非控件拼凑
评论
共有 条评论