📄 counter_def.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 + -