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

📄 adc01.c

📁 ARM定时器0和1调试完整c和汇编程序
💻 C
字号:
/****************************************************************************
*                            Begin Of File
* 文 件 名:ADC01.C
* 功    能:
****************************************************************************/
#include   "config.h"
#define    UART_BPS	   115200			/* 定义通讯波特率 */

uint16     l,uart_counter;
fp64       t_total;
uint32     count_t;
void       __irq TimeIRQ_Interrupt(void);
void       Uart_Send(void);
void       Invaliable_Init(void);
/****************************************************************************
* 名        称:Invaliable_Init()
* 功        能:初始化
****************************************************************************/
void Invaliable_Init(void)
{
 l                     =  0;
 uart_counter          =  0;
 t_total               =  0;
 count_t               =  0;
}
/****************************************************************************
* 名        称:PIN_Init()
* 功        能:初始化引脚功能
****************************************************************************/
void PIN_Init(void)
{
   PINSEL0 = 0x00000005;                // 设置P0.0、P0.1分别连接到UART0的TXD、RXD
   //PINSEL1 = 0x01400000;				// 设置P0.27、P0.28分别连接到AIN0、AIN1   
}
/****************************************************************************
* 名        称:UART0_Init()
* 功        能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200
****************************************************************************/
void  UART0_Init(void)
{  
   uint16  Fdiv;
   U0LCR = 0x83;		             // DLAB = 1,可设置波特率
   Fdiv  = (Fpclk / 16) / UART_BPS;  // 设置波特率
   U0DLM = Fdiv / 256;							
   U0DLL = Fdiv % 256;						
   U0LCR = 0x03; 
}	
/****************************************************************************
* 名    称:Time01Init()
* 功    能:初始化定时器0。 
****************************************************************************/
void  Time0_Init(void)
{    
    /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz        Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz */	
   T0PR  = 99;                    // 设置定时器110592Hz	
   T0MCR = 0x03;		           // 匹配通道0 匹配中断 并复位T0TC	    
   T0MR0 = 8;	                   // 比较值(13824Hz定时值)	
   T0TCR = 0x03;		   	       // 启动并复位T0TC	
   T0TCR = 0x01; 			
	
   VICIntSelect = 0x00000000;     
   VICVectAddr0 = (uint32)TimeIRQ_Interrupt;    
   VICVectCntl0 = 0x00000024;    
   VICIntEnable = 0x00000010;	
}
/****************************************************************************
* 名    称:Uart_Send()
* 功    能:向串口发送字节数据,并等待发送完毕。
**************************************************************************/  
void Uart_Send(void)
{ 
   uint8 p;  
   uint8 second;
   uint8 minite;    
   
   
     
    U0THR = '[';
    while((U0LSR&0x40) == 0);
    U0THR = 'T';				               // 发送数据
    while( (U0LSR&0x40)==0 );	           // 等待数据发送完毕
    U0THR = '=';   
    while((U0LSR&0x40) == 0);
   
    minite=(uint8)(t_total*0.01666667);
    second=(uint8)(t_total-minite*60);
   
    if(minite<10)
    {
     U0THR = ' ';
     while((U0LSR&0x40) == 0);
     U0THR = minite+0x30;
     while((U0LSR&0x40) == 0);
     }
    else
    {
     p     = minite*0.1;
     U0THR = 0x30+p;
     while((U0LSR&0x40) == 0);
     U0THR = 0x30+minite-p*10;
     while((U0LSR&0x40) == 0);
     }
     
    U0THR = ':';
    while((U0LSR&0x40) == 0); 
   
    if(second<10)
    {
     U0THR = second+0x30;
     while((U0LSR&0x40) == 0);
     U0THR = ' ';
     while((U0LSR&0x40) == 0);
     }
    else
    {
     p     = second*0.1;
     U0THR = 0x30+p;
     while((U0LSR&0x40) == 0);
     U0THR = 0x30+second-p*10;
     while((U0LSR&0x40) == 0);
    }
    U0THR = ']';
    while((U0LSR&0x40) == 0);
  
} 
/*********************************************************************************************************
** 函数名称: TimeIRQ_Interrupt
** 功能描述: AD转换结束后请求FIQ
********************************************************************************************************/
void __irq TimeIRQ_Interrupt(void)
{ 
  uart_counter++;
  count_t++;
  if(uart_counter==13824) 
  {  
     t_total=(count_t*0.000072338);     
     Uart_Send();
     uart_counter=0;     
  }    
  T0IR = 0x01;                             // 清除中断标志
  VICVectAddr = 0x00;                      // 通知VIC中断处理结束    
}
/****************************************************************************
* 名称:main()
* 功能:进行通道0、1电压ADC转换,并把结果转换成电压值处理,数据处理后发送到串口。
* 说明:在CONFIG.H文件中包含stdio.h。
****************************************************************************/
int  main(void)
{ 
   PIN_Init();                  						        // 初始化引脚
   UART0_Init();			  	 						  	    // 初始化UART0 
   Time0_Init();
   Invaliable_Init() ;               						        // 初始化Time0
   while(1);                                                    // 等待中断的到来
   return(0);   
}
/****************************************************************************
* 
* 功能:此程序正在调试过程中   End Of File
*                            
****************************************************************************/










⌨️ 快捷键说明

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