📄 display.c
字号:
//正确的程序,通过k1,k2,k3改变数码管上显示的数据,当改变的时候效果不错
#include<spce061a_chf.h>
unsigned int count=0;
extern showval[4];
void key_scan(void);//按键扫描函数
void main()
{
Set_IOA_Dir(0x0f00);//低4位为高电平输出,送出位选码
Set_IOA_Attrib(0x0f00);
Set_IOA_Data(0x0f00);
Set_IOB_Dir(0x00ff);//低8位为高电平输出,送出段码
Set_IOB_Attrib(0x00ff);
Set_IOB_Data(0x00ff);
asm("int off");
Set_TimeBase(0x000c);
Set_INT_Ctrl(0x0001);
asm("int irq");
while(1)
{
Watchdog_Clear();//当利用清看门狗函数时候没有参数
}
}
//按键扫描函数
void key_scan(void)
{
unsigned int keyin=0;
Set_IOA_Dir(0x0f00);//低4位为高电平输出,送出位选码(由于是作为输入口,执行这句后,IOA全部变成默认的高电平,所以此时的Data=0xffff,但是Buffer里的没有变
Set_IOA_Attrib(0x0f00);
Set_IOA_Data(0x0f00);//执行完这句Buffer的内容才被改变
keyin=Get_IOA_Data()&0x000f;
if(keyin)
{
//keyin=Get_IOA_Data();
while((Get_IOA_Data()&0x000f));
switch(keyin)//case的情况当为字符的时候要用到单引号,若为数字的时候不用0
{case 0x0001:{showval[3]+=1;
if(showval[3]==10)
{
showval[3]=0;
showval[2]+=1;
}
break;
}//IOA0-K0,显示值加1
case 0x0002: {showval[2]+=1;
if(showval[2]==10)
{
showval[2]=0;
showval[1]+=1;
}
break;
}//IOA1-K1,显示值加10
case 0x0004: {showval[1]+=1;
if(showval[1]==10)
{
showval[1]=0;
showval[0]+=1;
}
break;
}//IOA2-K2,显示值加100
default:break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -