📄 led.c
字号:
//2007年8月20日晚 四位共阴数码管显示程序。
//
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Buffer (volatile unsigned int *)0x7006
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
int LED[10]={0x3F00,0x0600,0x5B00,0x4F00,0x6600, 0x6D00,0x7D00,0x0700,0x7F00,0x6f00,0xFF00};
void DisplayLED(unsigned int num,unsigned int location)
{
*P_IOA_Data&=0x00ff;
*P_IOA_Data|=0x00f0;
*P_IOA_Data = LED[num];
*P_IOA_Data|=0x00f0;
if( 1==location)
{
*P_IOA_Data&=0xffef;
}
else if(2==location)
{
*P_IOA_Data&=0xffdf;
}
else if(3==location)
{
*P_IOA_Data&=0xffbf;
}
else if( 4==location )
{
*P_IOA_Data&=0xff7f;
}
LDelay(20);
*P_IOA_Data|=0x00f0;
}
void Init(){
*P_IOA_Dir|= 0xff00; //设置A口高8位为同向高电平输出,控制LED和数码管的显示状态
*P_IOA_Attrib|= 0xff00;
*P_IOA_Data&= 0x00ff;
*P_IOA_Dir|= 0x00f0; //设置A5_A8口为同相低电平输出,LED和数码管的片选
*P_IOA_Attrib|= 0x00f0;
*P_IOA_Data |= 0x00f0; //IO初始化
}
int LDelay() // 计数延时
{
int DelayValue = 0;
for (DelayValue = 0; DelayValue < 0x20; DelayValue++)
*P_Watchdog_Clear = 1; //清看门狗
}
void LedShow(unsigned int j)//显示任意一个十进制数
{
Init();
//DisplayLED(j/1000,1);
//DisplayLED( j/100%10,2);
// DisplayLED( j%100/10,3);
//DisplayLED( j%1000%100%10,4);
DisplayLED( (j%10000)/1000,1);
DisplayLED( (j%1000)/100,2);
DisplayLED( (j%100)/10,3);
DisplayLED( (j%10)/1,4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -