📄 c51_2_ansi.c
字号:
#ifndef __C51_2_ANSI_C__
#define __C51_2_ANSI_C__
#include "C51_2_ANSI.h"
void cpu_inti(void)
{
//处理器初始化
TRISA=0x00;TRISB=0xFF;TRISC=0x00;TRISD=0x00;//口线初始化
GIE=1;//中断允许
TMR1H=DISPLAY_TIME_H;//显示器刷新初始化
TMR1L=DISPLAY_TIME_L;
T1CON=1;//开启时钟
TMR1IE=1;//开启时钟中断
PEIE=1; //开启时钟外部中断
OPTION=0x7F;//B口弱上拉有效
PORTB=0X00;//B口输入配置初始化
INTE=1;INTEDG=0;//外部中断允许
INTF=0; //清外部中断
T0CS=0;PSA=1;T0IE=0;//开启时钟,用于随机数
//处理器初始化
}
void interrupt display_refresh(void) //中断服务程序 //键盘中断,25uS注意这里算法要尽量简单,否则影响主机延时时间
{
if (TMR1IE && TMR1IF) //判时钟中断
{
TMR1IF=0;//清除时钟中断
TMR1H = DISPLAY_TIME_H; // load timer 1 high byte下次刷新
TMR1L = DISPLAY_TIME_L; // load timer 1 low byte
display_enable=DISPLAY_OFF; //关闭显示
if(buffer_y==15)
{//此处刷了一屏
buffer_y=0;//显示完一屏重新开始
if((flash_status==FLASH_YES_TIME)&(!flash_time))flash_status=NO_FLASH;
flash_ctrl+=flash_fre_ctrl;flash_time--;
}
else
buffer_y++;
if(flash_status)
if(flash_ctrl>FLASH_WIDTH)//闪烁的代码
r595_send_data(displaybuffer_16mux16[buffer_y]&~flash_displaybuffer[buffer_y]);
else
r595_send_data(displaybuffer_16mux16[buffer_y]|flash_displaybuffer[buffer_y]);
else//不闪烁的代码
r595_send_data(displaybuffer_16mux16[buffer_y]);//送显示数据
PIONT_Y=buffer_y; //显示第buffer_y行
LED_EN_PORT=SEG_7_LED_EN[LED_cur]|EN_LED;
LEDPORT=seg_7_led_buffer[LED_cur];
if(LED_cur==3)LED_cur=0; else LED_cur++;
}
keywords=rand_int();
if (INTE && INTF) //判外部中断,即键盘中断
{
INTF=0; //清外部中断
keywords=PORTB&0b01111110;//线选取键值0111 1110
switch(Current_game)//根据游戏选择要处理的键盘程序
{
case DEFAULTS:
defaults_key(); //游戏选择,默认状态
break;
case SNAKE:
key_snake(); //贪食蛇键盘处理
break;
case BRICK:
key_brick(); //俄罗斯方块键盘处理
break;
case HIT_BRICK:
key_hit(); //打砖块键盘处理
break;
case LOSTWAY:
lostway_key(); //迷宫键盘处理
break;
default:
//出现错误,这里可写错误修正,或者错误报告
Current_game=DEFAULTS;//回到初始态
break;
}
}
}
uint16_t rand (void)//时钟随机函数,需要在人为随机处调用
{ //随机变量有两个字节,可以得到65536之间随机
static char rand_temp_1,rand_temp_2;//随机变量1,2
rand_temp_2=rand_temp_1;//存储下一个1号变量
rand_temp_1=RAND_TIME;
return rand_temp_1*rand_temp_2;
}
uint16_t rand_int(void)//时钟随机函数,需要在人为随机处调用,中断用
{ //随机变量有两个字节,可以得到65536之间随机
static char rand_temp_1,rand_temp_2;//随机变量1,2
rand_temp_2=rand_temp_1;//存储下一个1号变量
rand_temp_1=RAND_TIME;
return rand_temp_1*rand_temp_2;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -