📄 44bmon.c
字号:
if(stjishi==100)
{
bf[j]=0x20;charfu=' ';
j=j-1;
while(fs) Delay(1);
// lcdchar(xx,yy,RED,0);
if(xx>=1)xx--;
else {yy--;xx=39;}
lcdchar(xx,yy,RED,0);
}
else
{
bf[j]=0x20;charfu=' ';
lcdchar(xx,yy,RED,0);
}
}
break;
case 'f':
key=0;
i=0;
break;
case 'c'://///////////////返回
return;
break;
case 0:
break;
default:
key=0;
Uart_Printf1("\nsorry you touch an wrrong key\n");
break;
}
}
xx=0;yy++;
lcd_printf(xx,yy,BLUE,"ok");
Delay(500);
//j=j+1;
bf[j]=0;
for(k=0;k<=j;k++)
xin[k]=bf[k];
}
/////////////////////////////////////////////////////////////////子程序
/////////////////////////////////////////////////////////////////子程序
/////////////////////////////////////////////////////////////////子程序
/////////////////////////////////////////////////////////////////子程序
void __irq Timer0Isr(void) //Timer0中断服务程序
{
int i=0;
static int state=0;
static char akey=0;
static char bkey=0;
static int mark=0;
static char qianbu=0x20;
//static char stjishi=100;由于外部需要调用,设为全局变量
rI_ISPC |=0x02000; //clear int bit
////////////////////////显示光标/////////////
if(fs<=5)
{
if(mark==9)
{
mark=0;
if(fs==0)//此时光标为灭
{
if(stjishi==50)
{
charfu=0x20;
qianbu=0x20;
if(xx<=38) xx++;
else {xx=0;yy++;}
stjishi=100;
j++;
}
fs=1;
//if(xx<=38)
lcdchar(xx+1,yy,RED,'[');
//else
//lcdchar(0,yy+1,RED,'[');
}
else//此时光标为亮
{
//if(xx<=38)
lcdchar(xx+1,yy,RED,0);
//else
//lcdchar(0,yy+1,RED,0);
fs=0;
}
}
else mark++;
}
else ;
////////////////////////显示光标
//////////////////////////////////////////
if(charfu!=0x20)
{
if(qianbu!=charfu)
{
qianbu=charfu;
stjishi=0;
}else;
if(stjishi!=100)
{
if(stjishi<30)
stjishi++;
else
stjishi=50;
}
}
else
{
stjishi=100;
qianbu=0x20;
}
///////////////////////
rPDATG &= 0xf;
switch(state)
{
case 0:
{
if((((rPDATF >> 5) & 0xf) == 0xf) && (!Uart_Flush1()))
{
akey=0;
bkey=0;
state=0;
}
else
{
switch ((rPDATF >> 5) & 0xf)
{
case 0xf:
akey=0;
bkey=0;
state=0;
return;
case 0xe:
for (i=0;((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
akey='1';
break;
case 2:
akey='5';
break;
case 3:
akey='6';
break;
case 4:
akey='7';
}
break;
case 0xd:
for (i=0; ((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
akey='2';
break;
case 2:
akey='8';
break;
case 3:
akey='9';
break;
case 4:
akey='0';
break;
}
break;
case 0xb:
for (i=0; ((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
akey='3';
break;
case 2:
akey='a';
break;
case 3:
akey='b';
break;
case 4:
akey='c';
break;
}
break;
case 0x7:
for (i=0; ((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
akey='4';
break;
case 2:
akey='d';
break;
case 3:
akey='e';
break;
case 4:
akey='f';
break;
}
break;
}
state=1;
}
}
break;
//////////////////////////////////////////////////////////////////
case 1:
{
switch ((rPDATF >> 5) & 0xf)
{
case 0xf:
state=0;
akey=0;
bkey=0;
return;
case 0xe:
for (i=0;((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
bkey='1';
break;
case 2:
bkey='5';
break;
case 3:
bkey='6';
break;
case 4:
bkey='7';
}
break;
case 0xd:
for (i=0; ((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
bkey='2';
break;
case 2:
bkey='8';
break;
case 3:
bkey='9';
break;
case 4:
bkey='0';
break;
}
break;
case 0xb:
for (i=0; ((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
bkey='3';
break;
case 2:
bkey='a';
break;
case 3:
bkey='b';
break;
case 4:
bkey='c';
break;
}
break;
case 0x7:
for (i=0; ((rPDATF >> 5) & 0xf) != 0xf; i++)
{
rPDATG = rPDATG & 0xf | (0x10 << i);
}
switch (i)
{
case 1:
bkey='4';
break;
case 2:
bkey='d';
break;
case 3:
bkey='e';
break;
case 4:
bkey='f';
break;
}
break;
}
if(akey==bkey)
state=2;
else
{
akey=0;
bkey=0;
state=0;
}
}
break;
///////////////////////////////////////////////////////
case 2:
{ if((((rPDATF >> 5) & 0xf) == 0xf) && (!Uart_Flush1()))
{
key=akey;
state=0;
}
else
state=2;
}
break;
}
}
void __irq Utxd1Isr(void)
{
}
void __irq Urxd1Isr(void)
{
static int state=0;
char ch;
rI_ISPC |=0x040;
ch=rURXH1;
switch(state)
{
case 0:
if(ch=='+')
{
state=1;
borf=1;
}
else
;
break;
case 1:
if(ch==',')
state=2;
else
;
break;
case 2:
m=m+1;
weidu[m][0]=ch;
state=3;
break;
case 3:
if((ch>=0x30)&&(ch<=0x39))
{
weidu[m][1]=ch;
}
else
weidu[m][1]=0;
state=0;
borf=0;
break;
}
}
void __irq Urxd0Isr(void)
{
}
void __irq Utxd0Isr(void)
{
}
//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
void timer_init(int i)
{
rTCFG0 |=0X0ff; //prescaler=255
rTCFG1 |=0X01; // divide sets=1/4
rTCNTB0=(i*60000000/256/4); //count=60M,
rTCON &=~0X08;
rTCON |=0X02; // manual update
rTCON &=~0X02;
}
////////////////////////////////////////////////////////////////
void Sys_Init(void)
{
/* Write Buffer On,8K Cache */
rSYSCFG = CACHECFG;
/* Set NonCache Area */
rNCACHBE0 = 0xc0002000;
Port_Init();
Uart_Init(MCLK, UART_BAUD);//////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -