C51单片机,用到定时器0、定时器1,分别用途定时和串口通信

定时器0、定时器1,分别用途定时和串口通信,要实现一个这样的功能1、首先定时器1工作(串口通信)完成后,2、定时器0启动工作(开始定时)完成后3、定时器1恢复工作(串口通... 定时器0、定时器1,分别用途定时和串口通信,要实现一个这样的功能
1、首先定时器1工作(串口通信)完成后,
2、定时器0启动工作(开始定时)完成后
3、定时器1恢复工作(串口通信)完成后
4、定时器0恢复工作(开始定时)完成后
5、第3和第4可正常切换工作,互不影响
下面是我写的,有很多问题,请高手帮忙,以实现以上功能,谢谢!

#include <reg51.h>
void delay(unsigned int i); //函数声名
void mc(unsigned char i);
/*---------定义全局变量------------*/
unsigned char K = 0;//计时
unsigned char Miao = 0;//秒
unsigned int Fen = 0;//分
unsigned int Fen2 = 0;
unsigned char tmp , flag;
void InitUART_1(void)
{
TMOD = 0x20; //定时器1 工作于模式2(作串口通信用)
SCON = 0x50; // 0x50 = 10100000 工作模式2
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void dsqcsh(void)//定时器0初始化函数
{
//TMOD = 0x02;//定时器0 工作于模式2(作定时器用)
TH0 = 0x00;// 定时时间200us
TL0 = 0x48;
EA = 1;//开总中断
ET0 = 1;//开定时器/计数器0中断
TR0 = 1;//定时器/计数器0开始计时
}
void main(void)
{
dsqcsh();
InitUART_1();
while(1)
{
if(flag == 1)
{
ES=0;
flag = 0;
tmp = SBUF;
LedNumVal = SBUF ;
SBUF = tmp;
Fen2 = 1;
while(!TI);
TI=0;
TR1 = 0;
TMOD = 0x02;
TR1 = 1;
}
if(Fen2 == 1)
{
TMOD = 0x02;
ET0 = 1;
P3_4 = 1;
TR0 = 1;// 开始计时
mc(tmp);
}
else
{}
}
}
void UARTInterrupt(void) interrupt 4 // 串口通信中断入口
{
if(RI)
{
RI = 0;
flag = 1;
//add your code here!
}
else
{
TI = 0;
}
}
void SendOneByte(unsigned char c)
{
/*SBUF = c;
while(!TI);
TI = 0;
*/
}
void Timer1Interrupt(void) interrupt 1//定时器0 工作于模式2 中断入口
{
//unsigned int i;
TH0 = 0x00;
TL0 = 0x48;
++K;
if(K>=1)
{
++Miao;
K = 0;
}
else{}
//add your code here!

}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 500; j > 0; j--);
}
void mc(unsigned char i)
{

if(Miao>=1)
{
if(Fen>=i*2)
{
LedNumVal = Fen;
TR0 = 0;
ET0 = 0;
TMOD = 0x20; //定时器1 工作于模式2(作串口通信用) 打开
//flag = 1;
Fen = 0;
Fen2 = 0;
//delay(10);
ES=1;
TR1 = 1;
//++Q; //圈记数,每走一圈加1
}
else
{
P3_2 = !P3_2;
Miao = 0;
++Fen;
}
}
//for(i=i;i<=0;--i)
//P3_2 = !P3_2;
}
展开
 我来答
胖大海君
2012-10-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1436
采纳率:11%
帮助的人:635万
展开全部
定时器0、定时器1是2个互相独立的定时计数器 可以同时工作 互不影响 用不着互相切换来工作。
ywhjp
2012-10-08 · TA获得超过1299个赞
知道小有建树答主
回答量:1002
采纳率:60%
帮助的人:432万
展开全部
用不着这切换来切换去吧, 你这两功能可以同时运行嘛

定时和通讯可以同时运行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式