延时0.2s的c语言子程序,STC89C52单片机用定时器2怎么写1分钟延时的C程序?只要用定时器2的,定时器0和定时器1我都会了!...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

.忠于直觉.

推荐于 2017.12.16

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:49%    等级:12

已帮助:11692人

#include

#define uchar unsigned char

#define uint unsigned int

void TI2_way0(uint numerical);//定时器2 16位定时计数 numerical 定时计数数值 传统方式

void TI2_way1(uint numerical);//定时器2 16位自动重装定时计数 numerical 定时计数数值

void TI2_RUNset(bit state,way,control);//计数器/定时器2 运行与设置函数

/*定时器2相关函数开始*/

void TI2_way0(uint numerical) //定时器2 numerical 定时计数数值

{

numerical=(65536-numerical); //计算出定时值

TH2=(numerical/256); //定时器2的高8位计数值

TL2=(numerical%256); //定时器2的低8位计数

}

/*定时器2 16位自动重装定时计数 numerical 定时计数数值*/

void TI2_way1(uint numerical)//定时器2 16位自动重装定时计数 numerical 定时计数数值

{

//numerical=(65536-numerical); //计算出定时值

TH2=RCAP2H=(numerical/256); //定时器2的高8位计数值

TL2=RCAP2L=(numerical%256); //定时器2的低8位计数

}

/*

计数器/定时器2 运行与设置函数

state 0关闭定时计数器2 1启动定时计数器2

way 0定时器模式 1计数器模式

control 0:16位自动重装定时器计数器 1:16位捕获

*/

void TI2_RUNset(bit state,way,control)//计数器/定时器2 运行与设置函数

{

//IPH=PT2H; //定时器2中断优先级控制高位

RCLK=0;//接收时钟标志,0:使用定时器1作为串口接收发生器 1:使用定时器2作为串口接收发生器

TCLK=0;//发送时钟标志,0:使用定时器1作为串口发送发生器 1:使用定时器2作为串口发送发生器

switch(control) //启动方式选择

{

case 0x00:CP_RL2=0;EXEN2=0;break; // 0:16位自动重装定时器计数器

case 0x01:CP_RL2=1;EXEN2=1;break; // 1:16位捕获 捕获模式使能位

}

switch(way) //启动方式选择

{

case 0x00:C_T2=0;break; //定时器模式

case 0x01:C_T2=1;break; //计数器模式

}

TR2=state;//定时器2的启动控制位,1:启动定时器 0:停止定时器

ET2=1; //定时器2中断使能位

EA =1; //打开总中断

}

/*

void Timing_count2() interrupt 5 //引脚P10

{

TF2=0;//定时器2溢出标志,由硬件置1,必须由软件清0

EXF2=0;//定时器2的外部标志,由硬件置1,必须由软件清0

}

*/

17分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值