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

📄 main.c

📁 用的是LPC2148,开发环境是KEIL3.24
💻 C
字号:
					   // 智林Z213x/4x开发板试验程序 
// 串口发送试验 
// 刘笑然
// 智林测控技术研究所 
// www.the0.net
// 2006.12.1
#include <stdio.h>
#include "LPC214x.H"                        /* LPC21xx definitions */


/*----------------------------------------------------------*\
 | TYPE DEFINE                                              |
\*----------------------------------------------------------*/
typedef char               S8;
typedef unsigned char      U8;
typedef short              S16;
typedef unsigned short     U16;
typedef int                S32;
typedef unsigned int       U32;
typedef long long          S64;
typedef unsigned long long U64;
typedef unsigned char      BIT;
typedef unsigned int       BOOL;

volatile U8 U0IrqFlag = 0;
U8 U0RcvChar;




/*----------------------------------------------------------*\
 | Delay ns                                                 |
\*----------------------------------------------------------*/
void DelayNS (U32 dly) {
	U32 i;
	
	for ( ; dly>0; dly--)
		for (i=0; i<5000; i++);
	}
/*----------------------------------------------------------*\
 | UART0 IRQ                                                |
\*----------------------------------------------------------*/
void UART0IRQ(void) __irq {
	if ((U0IIR & 0x0F) == 0x04)	{
		U0IrqFlag = 1;			// 设置接收到新的数据标志
		U0RcvChar =  U0RBR;		// 读取FIFO的数据,并清除中断
		}
	VICVectAddr = 0x00;			// 中断处理结束
	}
/*----------------------------------------------------------*\
 | UART0 Initial                                            |
\*----------------------------------------------------------*/
void  UART0_init(void)	{
	unsigned short int fdiv;

	PINSEL0 |= 0x00000005;               // 设置I/O连接到UART0

	U0LCR = 0x83;                      // DLAB = 1,可设置波特率
	fdiv  = (60000000 / 16) / 9600;	// 设置波特率
	U0DLM= fdiv/256;
	U0DLL = fdiv%256;
	U0LCR = 0x03;
	U0FCR = 0x01;						// 使能FIFO,并设置触发点为1字节 
	U0IER = 0x01;						// 允许RBR中断,即接收中断 
	
	/* 使能UART0中断 */
	VICIntSelect = 0x00000000;			// 设置所有的通道为IRQ中断 
	VICVectCntl0 = 0x20 | 0x06;			// UART0分配到IRQ slot0,即最高优先级 
	VICVectAddr0 = (U32)UART0IRQ;		// 设置UART0向量地址 
	VICIntEnable = 1 << 6;			// 使能UART0中断 



	}

/*----------------------------------------------------------*\
 | UART0 Send Char                                          |
\*----------------------------------------------------------*/
void  UART0_PutCh(unsigned char  Ch)	{
	U0THR = Ch;                            // 发送数据
	while( (U0LSR&0x40)==0 );          // 等待数据发送完毕
	}
 int d=10;
/*----------------------------------------------------------*\
 |Change UART0 Send Char                                     |     
\*----------------------------------------------------------*/
void  Change(unsigned int num)
{   int i;
	unsigned  int bit[5]; 
	bit[0]=num/10000+'0';
	bit[1]=(num%10000 )/1000+'0';
	bit[2]=((num%10000)%1000)/100+'0';
	bit[3]=((num%1000)%100)/10+'0';
	bit[4]=(num%100)%10+'0'; 
	for(i=0;i<1;i++)
  {
	if(bit[0]=='0')
	{
	  if(bit[1]=='0')
	    {
		   if(bit[2]=='0')
		      {
			  	   if(bit[3]=='0')
				      {
					  	  if(bit[4]=='0')
							{	UART0_PutCh('0');
	                            DelayNS(10);}
						  else
						  {
                              UART0_PutCh(bit[4]);
	                          DelayNS(10);
							  }
					  
					  }
				   else 
				   { 	UART0_PutCh(bit[3]);
                     	DelayNS(10);
				        UART0_PutCh(bit[4]);
                      	DelayNS(10);	   
			                        }
			  
			  }
		   else 
		   {	UART0_PutCh(bit[2]);
	            DelayNS(10);
			    UART0_PutCh(bit[3]);
                DelayNS(10);		  
	            UART0_PutCh(bit[4]);
             	DelayNS(10);	   
			   
			                   	}
		
		}
	  else 
	  {
	    UART0_PutCh(bit[1]);
	    DelayNS(10);
	    UART0_PutCh(bit[2]);
     	DelayNS(10);
	    UART0_PutCh(bit[3]);
        DelayNS(10);		  
	    UART0_PutCh(bit[4]);
    	DelayNS(10);	   
			   
			   }
	}
    else 
	{UART0_PutCh(bit[0]);
	DelayNS(10);
	UART0_PutCh(bit[1]);
    DelayNS(10);
	UART0_PutCh(bit[2]);
	DelayNS(10);
	UART0_PutCh(bit[3]);
    DelayNS(10);		  
	UART0_PutCh(bit[4]);
	DelayNS(10); }
  


    }


}
/*----------------------------------------------------------*\
 | MAIN ENTRY                                               |
\*----------------------------------------------------------*/
int main(void) {

   unsigned int a=10000,b=250,c=30;
   UART0_init();
   for(;;)
   { 
    if(!U0IrqFlag);
	else 
	{U0IrqFlag=0;
    switch(U0RcvChar)
    {
	
	   case'a':	    Change(a);break;
	   case'b': 	Change(b);break;
	   case'c':		Change(c);break;
	   case'd':		Change(d);break;
	   default:    Change(0);
	
 	}

 }
}
}
/*----------------------------------------------------------*\
 | END OF FILE                                              |
\*----------------------------------------------------------*/

⌨️ 快捷键说明

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