求at89c51单片机程序

要实现功能描叙是这样的,a和b是两个开关,他们开始状态都是关闭的,当a接通后,开始计时到b开通时,假设时间为t1,当a结束了,计时为t2.我需要得到这2个时间的程序,谢谢了!
t1时间是1-3秒t2时间是1-8分钟
对,就是你这个意思。
能给出程序吗

第1个回答  2009-12-17
t1和t2的时间大约是多长?
-------------------------------
//a和b是两个开关。
//当a接通后,t1开始计时,至b接通t1停止计时,t2开始计时,当a断开,t2停止计时
//===============================
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit akey = P1^2;
sbit bkey = P1^1;
uint t1, t2, t3;
//-------------------------------
void T0_time() interrupt 1 //T0中断.
{
TH0 = (65536-10000)/256; //初值, 定时10ms @ 12MHz
TL0 = (65536-10000)%256;
t3++;
}
//-------------------------------
void main() //主函数.
{
TMOD = 0x01; //定时器0 工作方式1
TH0 = (65536-10000)/256; //初值, 定时10ms @ 12MHz
TL0 = (65536-10000)%256;
ET0 = 1; //开T0中断.
EA = 1; //开总中断.
while(akey); //等待a键按下.
TR0 = 1; //T0启动.
while(bkey); //等待b键按下.
t1 = t3;
t3 = 0;
while(!akey); //等待a键释放.
TR0 = 0; //T0关闭.
t2 = t3;
//用这种方法测量时间,分辨率是0.01s.
//t1、t2中的一个数,代表0.01s.
//t1、t2中的100,代表1s.
//t1、t2中的最大值65535,代表655.35s,即10分多钟.
while(1); //无尽循环.
}
//===============================
第2个回答  2009-12-17
描述的不清楚,是不是这样的:a和b是两个开关,开始是短开的,当a闭合后,开始开始计时经过t1开关b闭合,当a再断开时,开关a共闭合接通的时间为t2.
你的描述不清楚
第3个回答  2009-12-17
这个用一个计时器就可以了本回答被提问者采纳
相似回答
大家正在搜