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

📄 counter_def.c

📁 菜鸟,详细NRF24E1运用,程序,电路
💻 C
字号:
#include "def.h"
#include "reg24le1.h"

/*软件延时函数*/

void delay(unsigned int x)
{
unsigned char j=120;
   for(;x>0;x--)
     for(;j>0;j--)
	    {
		;
		}

}

/*计数器配置函数,名称init_counter(),
无输入参数,无返回,用于计数器初始化*/

void init_counter(void)
{
//配置计数器
TMOD=0x05;	  //配置计数器0成沿计数方式
TR0=1;		  //启动计数器
TH0=0;		  //高位清0
TL0=0;        //低位清0

}


void init_uart(void)
{
    //配置串口
    CLKCTRL=0X28;
    CLKLFCTRL = 0x01; 		// RCOSC32K 

		// UART	
	P0DIR &= 0xF7;				// P03 (TxD) is output
  	P0DIR |= 0x10;     			// P04 (RxD) is input 
	P0|=0x18;	 
		
	S0CON = 0x50;  
   	PCON |= 0x80; 				// SMOD = 1
  	WDCON |= 0x80;   			// Select internal baud rate generator 
	
	//S0RELL = 0xFB; 	
    	S0RELL = 0xF3;         // BAUD_38K4
  //  S0RELL = 0x98; 			   //4800
  //  S0RELL = 0x30; 
  	    S0RELH = 0x03;	
	//P0CON = 0x13;
	//P0CON = 0x44;	 	  	 
  	//ES0 = 1;

 }

/*IO口配置函数*/

void io_config(void){
 P0DIR&=~(0X20);//配置P05为输出作为脉冲发生端口
 P0DIR|=0x80;   //配置P07为输入,是一个复用口,这里是T0       			
 P05=0;
}

/** 计数器脉冲读取的函数,返回的是当前计数器的脉冲数目**/
/* 函数名称:counter_result(),输入参数无*/

unsigned int counter_result(void)
{
static unsigned int flowtime=0;			//记录脉冲超过50000个的次数
unsigned int res;						//脉冲数保存
res=TH0*256+TL0;						//计算当前记录的脉冲个数
if(res==50000)							//如果脉冲到50000个就清理TH0和TL0,flowtime自加一次
{
flowtime++;
res=0;
}
return (flowtime*50000+res);			 //返回当前记录的脉冲总数
}


/*通过串口打印一个字符到电脑的串行终端*/

void putch(char s)
{

S0BUF=s;
while(!TI0);
TI0=0;
}

⌨️ 快捷键说明

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