📄 main.c
字号:
//实现功能:彩条下移
//参数: 无
//返回值: 无
//============================================================================================
void ColorLineOff()
{
unsigned char SelRow = 0x0100,j;
for(j=0;j<8;j++)
{
F_ClearWatchdog(); //清看门狗
SP_Export(P_IOA_Data,0xffff); //显示
SP_Export(P_IOB_Data,SelRow);
delay(40);
SelRow = SelRow<<1; //下移
}
}
//============================================================================================
//语法格式:void ColorLineUpOff(void)
//实现功能:彩条上下对移
//参数: 无
//返回值: 无
//============================================================================================
void ColorLineUpOff()
{
unsigned char SelRow = 0x0100,j;
unsigned char SelRow1 = 0x8000;
for(j=0;j<4;j++)
{
F_ClearWatchdog(); //清看门狗
SP_Export(P_IOA_Data,0xffff); //显示
SP_Export(P_IOB_Data,SelRow);
delay(40);
SP_Export(P_IOA_Data,0xffff); //显示
SP_Export(P_IOB_Data,SelRow1);
delay(40);
SelRow = SelRow<<1; //下移
SelRow1 = SelRow1>>1; //上移
}
}
//============================================================================================
//语法格式:void ColorLineLeft(void)
//实现功能:彩条左移
//参数: 无
//返回值: 无
//============================================================================================
void ColorLineLeft()
{
unsigned char SelRow = 0x8000,j;
for(j=0;j<8;j++)
{
F_ClearWatchdog(); //清看门狗
SP_Export(P_IOA_Data,SelRow); //显示
SP_Export(P_IOB_Data,0xffff);
delay(40);
SelRow = SelRow>>1; //左移
}
}
//============================================================================================
//语法格式:void ColorLineRight(void)
//实现功能:彩条右移
//参数: 无
//返回值: 无
//============================================================================================
void ColorLineRight()
{
unsigned char SelRow = 0x0100,j;
for(j=0;j<8;j++)
{
F_ClearWatchdog(); //清看门狗
SP_Export(P_IOA_Data,SelRow); //显示
SP_Export(P_IOB_Data,0xffff);
delay(40);
SelRow = SelRow<<1; //右移
}
}
//============================================================================================
//语法格式:void ColorLineRightLeft(void)
//实现功能:彩条左右移
//参数: 无
//返回值: 无
//============================================================================================
void ColorLineRightLeft ()
{
unsigned char SelRow = 0x0100,j;
unsigned char SelRow1 = 0x8000;
for(j=0;j<4;j++)
{
F_ClearWatchdog(); //清看门狗
SP_Export(P_IOA_Data,SelRow); //显示
SP_Export(P_IOB_Data,0xffff);
delay(40);
SP_Export(P_IOA_Data,SelRow1); //显示
SP_Export(P_IOB_Data,0xffff);
delay(40);
SelRow = SelRow<<1; //右移
SelRow1 = SelRow1>>1; //左移
}
}
//============================================================================================
//语法格式:void ColorLineRightLeftUpOff (void)
//实现功能:彩条上下左右对移
//参数: 无
//返回值: 无
//============================================================================================
void ColorLineRightLeftUpOff ()
{
unsigned char SelRow = 0x0100,j;
unsigned char SelRow1 = 0x8000;
for(j=0;j<4;j++)
{
F_ClearWatchdog(); //清看门狗
SP_Export(P_IOA_Data,SelRow); //显示
SP_Export(P_IOB_Data,0xffff);
delay(40);
SP_Export(P_IOA_Data,0xffff); //显示
SP_Export(P_IOB_Data,SelRow);
delay(40);
SP_Export(P_IOA_Data,SelRow1); //显示
SP_Export(P_IOB_Data,0xffff);
delay(40);
SP_Export(P_IOA_Data,0xffff); //显示
SP_Export(P_IOB_Data,SelRow1);
SelRow = SelRow<<1; //下移或者右移
SelRow1 = SelRow1>>1; //上移或者左移
}
}
//============================================================================================
//语法格式:unsigned int KeyDataChange(unsigned int Key_Data)
//实现功能:键值译码程序,
//参数: unsigned int Key_Data-键值
//返回值: 0~9-数字值;
// 10~12-功能键;
// 0xff-非法键值;
//============================================================================================
unsigned int KeyDataChange(unsigned int Key_Data)
{
switch(Key_Data)
{
case KEY_0: Key_Data = 7;break;
case KEY_1: Key_Data = 8;break;
case KEY_2: Key_Data = 9;break;
case KEY_3: Key_Data = 0;break;
case KEY_4: Key_Data = 4;break;
case KEY_5: Key_Data = 5;break;
case KEY_6: Key_Data = 6;break;
case KEY_7: Key_Data = 0;break;
case KEY_8: Key_Data = 1;break;
case KEY_9: Key_Data = 2;break;
case KEY_A: Key_Data = 3;break;
case KEY_B: Key_Data = 0;break;
case KEY_C: Key_Data = 0;break;
case KEY_D: Key_Data = 0;break;
case KEY_E: Key_Data = 0;break;
case KEY_F: Key_Data = 0;break;
default: Key_Data = 0xff;break;
}
return Key_Data;
}
//===============================================================================================
// 语法格式: int main(void)
// 实现功能: 主函数
// 参数: 无
// 返回值: 无
//============================================================================================
int main(void)
{
unsigned char KeyVal; //保存键码
unsigned char i = 0;
InitialPort();
Key_Init(); //初始化键盘扫描,在Key.asm当中定义
KeyFlag = 0;
Keycode = 10;
SP_INT_128Hz();
while(1)
{
Keycode = Key_Get(); //获取键值
if(Keycode!=0)
{
Off_IRQ();
Keycode = KeyDataChange(Keycode); //转换键值,使之变为适合设计需要的键值
DisplayVal(Keycode); //显示键值
switch(Keycode)
{
case 1:ColorLineUp(); break; //红条上移
case 2:ColorLineOff();break; //红条下移
case 3:ColorLineUpOff();break; //红条上、下对移
case 4:ColorLineLeft();break; //红条左移
case 5:ColorLineRight();break; //红条右移
case 6:ColorLineRightLeft();break; //红条左右对移
case 7:ColorLineRightLeftUpOff();break; //红条左右、上下移动
case 8:TestLed();break; //点亮红灯后点亮绿灯,之后点亮红绿灯
case 9:colorCol();break; //彩条移动
case 0:WalkMan();break; //移动的小人
default:break;
}
Int_IRQ();
}
F_ClearWatchdog(); //清看门狗
}
return 0;
}
//*******************************************************************************************/
// void SP_Init_IOA(int A,int B,int C); 来自于Hardware.asm,API接口函数。IOA初始化。A,方向向
// 量单元,B数据单元,C属性向量单元
// void SP_Init_IOB(int A,int B,int C); 来自于Hardware.asm,API接口函数。IOB初始化。A,方向向
// 量单元,B数据单元,C属性向量单元
// void SP_INT_128Hz(); 来自于SYSTEM.asm,.TMB2选择128Hz
// void F_Get_Key();来自于key.asm,取键值函数
// void F_Show(int A,int B);点亮LED;A,LED的位数(C_Dig),B,LED的显示值
// main.c 结束
//*******************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -