📄 main.c
字号:
/****************************************************************
** fileName : main.c
** discription : 将IOB8~IOB15端口与4*4键盘相连,
IOA8~IOA15端口接SPLC051的DB0-DB7; IOA6,5,4->EP,RW,AO;CS1->GND
** IDE : SUNPLUS u'nSPTM IDE 2.5.5
** Library : (a) C-Lib: (CMacro.lib);
** Date : 07-08-10
** Author : Yao
****************************************************************/
#include "SPCE061A.h"
#include "SPLC501User.h" //包含液晶驱动的头文件
#include "DispChinese.h" //包含字模数据头文件
#include "Key4x4AL.h" //包含4*4键盘服务程序头文件
//#define P_Watchdog_Clear (unsigned int *)0x7012
unsigned int TimeMSec = 0;
unsigned int TimeSec = 0;
unsigned char Num[6] = {0, 0, 0, 0, 0, 0};
unsigned int KeyVal; //键值
unsigned int KeyFlag; //有无按键标志位
/****************************************************************
** FunctionName : HEX_ASCII()
** discription :
** Library : (a) C-Lib: (CMacro.lib);
** Date : 07-08-10
** Author : Yao
****************************************************************/
unsigned int HEX_ASCII(unsigned int HEX)
{
unsigned int ASCII;
if((HEX >= 0) && (HEX <= 9))
ASCII = HEX + 48;
else if((HEX >= 10) && (HEX <= 15))
ASCII = HEX + 55;
return(ASCII);
}
/****************************************************************
** FunctionName : Delay_User(unsigned int Timers)
** discription :
** Library :(a) C-Lib: (CMacro.lib);
** Date : 07-08-10
** Author : Yao
****************************************************************/
void Delay_User(unsigned int Timers)
{
unsigned int i;
while(Timers)
{
for(i=0;i<0x0fff;i++)
{
*P_Watchdog_Clear = 0x0001;
}
Timers--;
}
}
int main(void)
{
unsigned int i;
unsigned int temp;
*P_INT_Ctrl = 0x0010; //开中断
__asm("INT IRQ");
Key_InitIO();
KeyFlag = 0; //无键按下
LCD501_Init(0x00); //初始化液晶
LCD501_Bitmap(0,0,(unsigned int *)encoding_00); //显示汉字:开
LCD501_Bitmap(16,0,(unsigned int *)encoding_01); //拓
LCD501_Bitmap(32,0,(unsigned int *)encoding_02); //创
LCD501_Bitmap(48,0,(unsigned int *)encoding_03); //新
while(1)
{
/*for(i = 0 ; i < 64; i++)
{
LCD501_ScrollUp(1);
Delay_User(2);
*P_Watchdog_Clear = 0x0001; //清看门狗
}*/
KeyFlag = KeyScan();
while(KeyFlag)
{
KeyVal = GetKey(KeyFlag);
KeyFlag = 0;
}
LCD501_PutChar(i*8,32,HEX_ASCII(KeyVal));
LCD501_Bitmap(0,0,(unsigned int *)encoding_00); //显示汉字:开
LCD501_Bitmap(16,0,(unsigned int *)encoding_01); //拓
LCD501_Bitmap(32,0,(unsigned int *)encoding_02); //创
LCD501_Bitmap(48,0,(unsigned int *)encoding_03); //新
Num[5] = (TimeSec / 10) + 48; //将数字转换成ASCII码
*P_Watchdog_Clear = 0x0001;
Num[4] = (TimeSec % 10) + 48;
Num[3] = 58; //显示":"
Num[2] = (TimeMSec / 100) + 48;
temp = TimeMSec /100;
Num[1] = ((TimeMSec / 10) - temp*10) + 48;
Num[0] = (TimeMSec % 10) + 48;
for(i = 0 ; i < 6; i++)
{
LCD501_PutChar(i*8,16,Num[5-i]);
*P_Watchdog_Clear = 0x0001;
}
}
}
//=====================================================================//
//函数:void IRQ4(void)
//描述:IRQ4中断入口程序
//参数:无
//返回:无
//注意:采用了1KHz中断
//=====================================================================//
void IRQ4(void)__attribute__((ISR));
void IRQ4(void)
{
//unsigned int temp
if(*P_INT_Ctrl&0x0010)
{
TimeMSec++;
if(TimeMSec >= 1000)
{
TimeMSec = 0;
TimeSec++;
}
if(TimeSec >= 60)
TimeSec = 0;
*P_INT_Clear = 0x0010; //清中断标志位
*P_Watchdog_Clear = 0x0001;
//BMP_Play_IRQ_Service(); //调用动画显示的中断服务程序
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -