实现秒表功能 : 显示时,分,秒 , 点击按钮开始计时

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>practice3</title>
	</head>

	<body>
		<b>实现秒表功能 : 显示时,分,秒 , 点击按钮开始计时</b>
		<ul id="ul"></ul>
		<span id="hour">00</span><span>时</span>
		<span id="minute">00</span><span>分</span>
		<span id="second">00</span><span>秒</span><br />
		<button οnclick="start()">开始</button>
		<button οnclick="pause()">暂停</button>
		<button οnclick="recount()">重新计数</button>
		<script>
			var time;
			var hour = document.getElementById("hour");
			var minute = document.getElementById("minute");
			var second = document.getElementById("second");
				var i = 1;//一开始写在start里,多点几次的时候就有错误,所以写成全局了
				var j = 1;
				var k = 1;
			function start() {
				
				clearInterval(time);
				time = setInterval(change, 1000) //计时器

				function change() {
//					i++;
//					second.innerHTML=i;				
					if(i == 60) {
						i = 0;
						second.innerHTML = "00";
						i++;
						if(j == 60) {
							j = 0;
							minute.innerHTML = "00";
							j++;
							if(k == 60) {
								k = 0;
								hour.innerHTML = "00";
								k++;
							} else {
								if(k <= 9) {
									t1.innerHTML = "0" + k;
									k++;
								} else {
									hour.innerHTML = k;
									k++;
								}
							}//时
						} else {
							if(j <= 9) {
								minute.innerHTML = '0' + j;
								j++;
							} else {
								minute.innerHTML = j;
								j++;
							}
						}//分
					} else if(i <= 9) {
						second.innerHTML = '0' + i;
						i++;
					} else {
						second.innerHTML = i;
						i++;
					}//秒
				}//change函数
			} //开始,从中间开始扩散的看
			function pause(){
				clearInterval(time);
			}//暂停
			function recount(){
				 i = 1;
				 j = 1;
				 k = 1;//这个地方要重新赋值
				clearInterval(time);
				hour.innerHTML='00';
				minute.innerHTML='00';
				second.innerHTML='00';
				start();
			}//重算
			//点暂停,再点开始是继续
		</script>
	</body>

</html>

最近学的有点蒙,只能一点一点扣了。。。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要明确一些变量的定义: - H:表示小数,取值范围为0-23 - M:表示分钟数,取值范围为0-59 - S:表示秒数,取值范围为0-59 - MS:表示毫秒数,取值范围为0-99 - flag:表示秒表计时器的状态,0表示停止状态,1表示运行状态 然后,可以编写以下程序来实现秒表计时器的功能: ```assembly ORG 0 ; 从地址0开始存储程序 ; 变量定义 H DB 0 ; 小数 M DB 0 ; 分钟数 S DB 0 ; 秒数 MS DB 0 ; 毫秒数 flag DB 0 ; 秒表计时器状态,0表示停止,1表示运行 ; 中断向量表 ORG 0CH ; 定器0中断向量 TIMER0_ISR: PUSH ACC ; 保存现场 INC MS ; 每次中断毫秒数加1 CJNE MS, 99, SKIP1 ; 如果毫秒数不等于99,则跳过下一行 CLR MS ; 如果毫秒数等于99,则清零毫秒数 INC S ; 每满一秒钟,秒数加1 CJNE S, 60, SKIP2 ; 如果秒数不等于60,则跳过下一行 CLR S ; 如果秒数等于60,则清零秒数 INC M ; 每满一分钟,分钟数加1 CJNE M, 60, SKIP3 ; 如果分钟数不等于60,则跳过下一行 CLR M ; 如果分钟数等于60,则清零分钟数 INC H ; 每满一小,小数加1 CJNE H, 24, SKIP4 ; 如果小数不等于24,则跳过下一行 CLR H ; 如果小数等于24,则清零小数 SKIP4: SKIP3: SKIP2: SKIP1: POP ACC ; 恢复现场 RETI ; 退出中断 ; 主程序 START: MOV A, #0FH ; 设置定器0的计数模式为16位自动重装载 MOV TMOD, A MOV A, #18 ; 设置定器0的计数值为65536-5000,即5000us中断一次 MOV TH0, A MOV TL0, A SETB ET0 ; 允许定器0中断 SETB EA ; 允许总中断 LOOP: JNB P3.0, STOP ; 如果启动/停止按没有按下,则跳过下一行 CPL flag ; 切换秒表计时器状态 JB flag, START_COUNT ; 如果秒表计时器状态为1,则跳转到START_COUNT标签处 JMP STOP ; 如果秒表计时器状态为0,则跳转到STOP标签处 START_COUNT: SJMP LOOP ; 进入循环 STOP: JNB P3.1, RESET ; 如果复位按没有按下,则跳过下一行 MOV H, #0 ; 清零小数 MOV M, #0 ; 清零分钟数 MOV S, #0 ; 清零秒数 MOV MS, #0 ; 清零毫秒数 SETB flag ; 停止秒表计时器 JMP LOOP ; 返回循环 RESET: JMP START ; 重启秒表计时器 END ; 程序结束 ``` 这段程序使用定器0来产生5000us的定中断,每次中断将毫秒数加1,并判断是否满一秒钟、满一分钟、满一小,如果是,则分别将秒数、分钟数、小数加1,并清零毫秒数、秒数、分钟数、小数。同,在主程序中,通过判断启动/停止按和复位按是否被按下来控制秒表计时器的状态和数据的清零。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值