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

📄 timer_ini.c

📁 这个是做自动控制的小车的代码
💻 C
字号:
//////////T法测频调试程序/////////////
/////////t3 频率方波输出//////////////
/////////t4 脉冲计数/////////////////////
/////////t2 计时////////////////////////////
/////////t2t3t4.c//////////////////////////
#include "common.h"
#include "timer.h"
#define T3RUN temppage=SFRPAGE;SFRPAGE=0x01;TR3=1;SFRPAGE=temppage
#define T4RUN temppage=SFRPAGE;SFRPAGE=0x02;TR4=1;SFRPAGE=temppage
#define T4STOP temppage=SFRPAGE;SFRPAGE=0x02;TR4=0;SFRPAGE=temppage
#define T3STOP temppage=SFRPAGE;SFRPAGE=0x01;TR3=0;SFRPAGE=temppage
uint t2count;           //计录
sfr16 RCAP2=0xca;
sfr16 RCAP3=0xca;
sfr16 RCAP4=0xca;
sfr16 TMR4=0xcc;
sfr16 TMR3=0xcc;
sfr16 TMR2=0xcc;

//uchar temppage;
//uchar tf2num;
//uint  t2count;   //t2 90s定时次数标志
//bit isnewdata;
//ulong freTime;
//void t4ISR();
//void t2ISR();

void t0_ini()    //TO定时器450ms
{
   temppage=SFRPAGE;
   SFRPAGE=0x00;
   TCON      = 0x10;        //启动定时器
   TMOD      = 0x01;        //16位定时器
   CKCON     = 0x02;        //系统时钟的48分频
   IE        |= 0x02;       //T0中断使能
   TH0       = 0x90;            //定时器赋初值
   TL0     = 0x0a;
   SFRPAGE=temppage;
}
void t1_count_ini()
{//T1为16位计数器,用于记寻车行驶的距离
   temppage=SFRPAGE;
   SFRPAGE=0x00;
   TMOD=0x50;       
   TCON=0x00;
   TR1=1;               //开启计数器
   SFRPAGE=temppage;
}
void t2_time90s_ini()
{//t2为定时器模式,采用系统时钟12分频
	temppage=SFRPAGE;
	SFRPAGE=0x00;
	TMR2CN=0X00;//定时器模式,自动重载
	TMR2CF=0x00;//DCEN=0,向下计数禁止,采用系统时钟
	RCAP2=0x0000;
	TMR2=0x0000;
	SFRPAGE=0X00;
    ET2=1;//T2中断使能
	SFRPAGE=temppage;
    t2count=0;
}
void t2_time90s_start()
{
	temppage=SFRPAGE;
	SFRPAGE=0x00;
	TMR2=0x0000;
	TF2=0;
	TR2=1;
	SFRPAGE=temppage;
    
}
void t4_count_ini()
{//T4为计数模式,路程计数
	temppage=SFRPAGE;
	SFRPAGE=0x02;
	TMR4CF=0X00;   //计数模式下,对T4M1-T4M0设置无效,DCEN=0,向下计数禁止
	TMR4CN=0X02;   // CT4=1  T4为计数器模式
    RCAP4=0X00;
	TMR4=RCAP4;
	TR4=1;        //开始计数
	SFRPAGE=0X00;
	//EIE2|=0X04;//T4中断禁止
	SFRPAGE=temppage;
}


/****T3产生40K方波*/
void t3_fre_set(uint val){//T3频率设置,计算公式为:(T3时钟频率/(2*val))
	temppage=SFRPAGE;
	SFRPAGE=0x01;
	RCAP3=~val+1;
	TMR3=RCAP3;
	SFRPAGE=temppage;
}
void t3_fre_set40k(void)
{
     t3_fre_set(100);
}
void t3_ini()
{//t3为频率输出模式
	temppage=SFRPAGE;
	SFRPAGE=0x01;
	TMR3CN=0x00;    //TR3=0,T3尚未启动
	TMR3CF=0x02;    //T3采用系统时钟,TOG3=0,T3不计数时输出为0,DCEN=0
	SFRPAGE=temppage;
}


⌨️ 快捷键说明

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