⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00.txt

📁 凌阳的多位数码管显示 ..用C语言编的超简单的那种...比汇编容易多了
💻 TXT
字号:
#define	P_IOA_Data 			(volatile unsigned int *)0x7000   
#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_Dir			(volatile unsigned int *)0x7007   
#define P_IOB_Attrib		(volatile unsigned int *)0x7008
#define P_Watchdog_Clear	(volatile unsigned int *)0x7012 
#define P_INT_Mask			(volatile unsigned int *)0x7010   
#define P_INT_Clear			(volatile unsigned int *)0x7011  
void led();
void delay(void);
unsigned int count=0;
unsigned int wai,qian,bai,ge,shi;
 unsigned int g_Data[10] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};
unsigned int b[16]={0x0011,0x0021,0x0041,0x0081,0x0012,0x0022,0x0042,0x0082,0x0014,0x0024,0x0044,0x0084,0x0018,0x0028,0x0048,0x0088}; 
unsigned int key[5];
int keyscan();
int main(void)
{  
    __asm("int off");
    *P_IOA_Dir=0xf000;        //A口高8位为键盘扫描 高4位为输出,低4位为输入,
    *P_IOA_Attrib=0xf0ff;     //A口低八位为输入;
    *P_IOA_Data=0x0000;
    *P_IOB_Dir=0xffff;
    *P_IOB_Attrib=0xffff;     //B口高八位为段码输出 低八位为位码输出;
    *P_IOB_Data=0x0000;
     *P_INT_Mask=0x0008;
      __asm("int IRQ");
while(1)
	{
		  led();
	 
		*P_Watchdog_Clear=0x0001;
	}
}

void led()
   {
	 unsigned int a,b,c,d,e;
	   
	    {
    switch(count)
    {
      case 0:
             *P_IOB_Data=0x00000;
            break;
       case 1:
            ge=g_Data[key[1]];
           
            d=ge|0x0200;
	 	  *P_IOB_Data=d;
	 	    delay(); 
	 	    break;
	 	  
  case 2:
     
        shi=g_Data[key[1]];
         c=shi|0x0400;
	 	*P_IOB_Data=c;
	 	delay();
	 	 ge=g_Data[key[2]];
	    	d=ge|0x0200;
	 	*P_IOB_Data=d;
	 	delay(); 
	 break;
	 	       	 	
  case 3:
        
	     bai=g_Data[key[1]];
	 	b=bai|0x0800;
	 	*P_IOB_Data=b;
	 	delay();
	 	 shi=g_Data[key[2]];;
	 	c=shi|0x0400;
	 	*P_IOB_Data=c;
	 	delay();   
	   	ge=g_Data[key[3]];;
	 
	 	d=ge|0x0200;
	 	*P_IOB_Data=d;
	 	 delay(); 
 
   	    break;
   case 4:	    
   	    
	   
	    
	   	qian=g_Data[key[1]];;
		a=qian|0x1000;
	 	*P_IOB_Data=a;
	 	delay();
	    bai=g_Data[key[2]];;
	 	b=bai|0x0800;
	 	*P_IOB_Data=b;
	 	delay();
	 	shi=g_Data[key[3]];;
	 	c=shi|0x0400;
	 	*P_IOB_Data=c;
	 	delay();
	   	ge=g_Data[key[4]];;
	 	d=ge|0x0200;
	 	*P_IOB_Data=d;
	 	 delay(); 
 break;
 case 5:  wai=g_Data[key[1]];;
	     e=wai|0x2000;
	 	*P_IOB_Data=e;
	 	delay();
	   qian=g_Data[key[2]];;
	 	a=qian|0x1000;
	 	*P_IOB_Data=a;
	 	delay();
	 	bai=g_Data[key[3]];;
	 	b=bai|0x0800;
	 	*P_IOB_Data=b;
	 	delay();
	   shi=g_Data[key[4]];
	 	c=shi|0x0400;
	 	*P_IOB_Data=c;
	 	 delay(); 
	 	 ge=g_Data[key[5]];
	 	 	d=ge|0x0200;
	 	*P_IOB_Data=d;
	 	 delay();
	 	break;
       }
    
     
  }	 
   } 
void delay(void)							
{
	unsigned int i;
	for(i=0;i<500;i++)
	{
		* P_Watchdog_Clear=0x0001;

	}
}

void IRQ5(void)__attribute__((ISR));   
void IRQ5(void)
{
	
	int i,j,m,n;

	for(i=0;i<16;i++)
	{	n=b[i]<<8;
		*P_IOA_Data=n&0xf000;
		 m=*P_IOA_Data&0xff00;
		
		if(m==n)
			break;
    }	  

	    if(i<10)
	 {	
	   		count++;
	   
	    	key[count]=i;
	 }
	if(i==10)
		{
	  count=0;		
		}	
		if(count>5)
		count=0;
		
		

      *P_INT_Clear=0x0008;
}
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -