倒记10秒,按钮生效。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>
  <table align="center">
<tr>
<td style="PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; PADDING-TOP: 2px">
<form name="RegTermsForm" action="优快云UserRegister.aspx" method="get">
<input type="hidden" value="Accept" name="RegTerms"> <input class="Button" type="submit" value="同意" name="btnSubmit">
<input class="Button" onclick="JavaScript:history.go(-1);" type="button" value="不同意" name="btnReturn">
</form>
</td>
</tr>
</table>
<script language="javascript" type="text/javascript">
<!--
var secs = 9;
var wait = secs * 1000;
document.RegTermsForm.btnSubmit.value = "同意 (" + secs + ")";
document.RegTermsForm.btnSubmit.disabled = true;
for(i = 1; i <= secs; i++)
{
window.setTimeout("Update(" + i + ")", i * 1000);
}
window.setTimeout("Timer()", wait);
function Update(num, value)
{
if(num == (wait/1000))
{
document.RegTermsForm.btnSubmit.value = "同意";
}
else
{
printnr = (wait / 1000) - num;
document.RegTermsForm.btnSubmit.value = "同意 (" + printnr + ")";
}
}
function Timer()
{
document.RegTermsForm.btnSubmit.disabled = false;
document.RegTermsForm.btnSubmit.value = "同 意";
}
-->
</script>
 </BODY>
</HTML>
 

#include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; sbit KEY1 = P3^2; // 按钮1接P3.2 sbit KEY2 = P3^3; // 按钮2接P3.3 uchar count_50ms; // 50ms计数器 uint sec; // 计数器 bit flag_1s; // 1标志 uchar mode = 0; // 模式状态 uchar flash_counter; // 闪烁计数器 // 新增按钮相关变量 uint saved_sec; // 保存原计时数 uchar saved_mode; // 保存原模式状态 bit button_active = 0; // 按钮激活标志 uint button_timer; // 按钮保持计时 void Timer0_Init() { TMOD = 0x01; // 定时器0模式1 TH0 = 0x3C; // 11.0592MHz晶振 TL0 = 0xB0; EA = 1; ET0 = 1; TR0 = 1; } void Interrupt_Init() { IT0 = 1; // 设置INT0边沿触发 IT1 = 1; // 设置INT1边沿触发 EX0 = 1; // 允许INT0中断 EX1 = 1; // 允许INT1中断 IP = 0x04; // 设置INT1为高优先级 } void main() { Timer0_Init(); Interrupt_Init(); // 初始状态设置 LED1 = 1; // 关闭LED1 LED2 = 0; // 打开LED2 LED3 = 0; // 打开LED3 LED4 = 1; // 关闭LED4 sec = 20; while(1) { if(flag_1s) { flag_1s = 0; if(button_active) { // 按钮处理模式 if(button_timer > 0) button_timer--; if(button_timer == 0) { button_active = 0; sec = saved_sec; // 恢复原计时 mode = saved_mode; // 恢复原LED状态 if(mode == 0) { LED1 = 1; LED4 = 1; LED2 = 0; LED3 = 0; } else { LED1 = 0; LED4 = 0; LED2 = 1; LED3 = 1; } } } else { // 正常模式 if(sec > 0) sec--; // 防止无符号数下溢 if(mode == 0) { if(sec == 0) { mode = 1; sec = 10; LED2 = 1; LED3 = 1; LED1 = 0; LED4 = 0; } } else { if(sec == 0) { mode = 0; sec = 20; LED1 = 1; LED4 = 1; LED2 = 0; LED3 = 0; } } } } } } // INT0中断服务函数(按钮1) void KEY1_ISR() interrupt 0 { saved_sec = sec; saved_mode = mode; button_active = 1; button_timer = 5; LED2 = 0; LED3 = 0; // 点亮LED2、3 LED1 = 1; LED4 = 1; // 关闭LED1、4 } // INT1中断服务函数(按钮2) void KEY2_ISR() interrupt 2 { saved_sec = sec; saved_mode = mode; button_active = 1; button_timer = 5; LED1 = 0; LED2 = 0; // 全部点亮 LED3 = 0; LED4 = 0; } void Timer0() interrupt 1 { TH0 = 0x3C; // 重装初值 TL0 = 0xB0; if(++count_50ms >= 20) { // 1定时 count_50ms = 0; flag_1s = 1; } // 500ms闪烁控制(仅在正常模式生效) if(++flash_counter >= 10 && !button_active) { flash_counter = 0; if(mode == 0 && sec <= 3) { LED2 = ~LED2; if(sec == 0) LED2 = 1; } if(mode == 1 && sec <= 3) { LED4 = ~LED4; if(sec == 0) LED4 = 1; } } }在上述程序添加两个共阴极数码管分别显示LED2和LED4的倒计时,并完整编程
03-22
#include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; sbit KEY1 = P3^2; // 按钮1接P3.2 sbit KEY2 = P3^3; // 按钮2接P3.3 uchar count_50ms; // 50ms计数器 uint sec; // 计数器 bit flag_1s; // 1标志 uchar mode = 0; // 模式状态 uchar flash_counter; // 闪烁计数器 // 新增按钮相关变量 uint saved_sec; // 保存原计时数 uchar saved_mode; // 保存原模式状态 bit button_active = 0; // 按钮激活标志 uint button_timer; // 按钮保持计时 void Timer0_Init() { TMOD = 0x01; // 定时器0模式1 TH0 = 0x3C; // 11.0592MHz晶振 TL0 = 0xB0; EA = 1; ET0 = 1; TR0 = 1; } void Interrupt_Init() { IT0 = 1; // 设置INT0边沿触发 IT1 = 1; // 设置INT1边沿触发 EX0 = 1; // 允许INT0中断 EX1 = 1; // 允许INT1中断 IP = 0x04; // 设置INT1为高优先级 } void main() { Timer0_Init(); Interrupt_Init(); // 初始状态设置 LED1 = 1; // 关闭LED1 LED2 = 0; // 打开LED2 LED3 = 0; // 打开LED3 LED4 = 1; // 关闭LED4 sec = 20; while(1) { if(flag_1s) { flag_1s = 0; if(button_active) { // 按钮处理模式 if(button_timer > 0) button_timer--; if(button_timer == 0) { button_active = 0; sec = saved_sec; // 恢复原计时 mode = saved_mode; // 恢复原LED状态 if(mode == 0) { LED1 = 1; LED4 = 1; LED2 = 0; LED3 = 0; } else { LED1 = 0; LED4 = 0; LED2 = 1; LED3 = 1; } } } else { // 正常模式 if(sec > 0) sec--; // 防止无符号数下溢 if(mode == 0) { if(sec == 0) { mode = 1; sec = 10; LED2 = 1; LED3 = 1; LED1 = 0; LED4 = 0; } } else { if(sec == 0) { mode = 0; sec = 20; LED1 = 1; LED4 = 1; LED2 = 0; LED3 = 0; } } } } } } // INT0中断服务函数(按钮1) void KEY1_ISR() interrupt 0 { saved_sec = sec; saved_mode = mode; button_active = 1; button_timer = 5; LED2 = 0; LED3 = 0; // 点亮LED2、3 LED1 = 1; LED4 = 1; // 关闭LED1、4 } // INT1中断服务函数(按钮2) void KEY2_ISR() interrupt 2 { saved_sec = sec; saved_mode = mode; button_active = 1; button_timer = 5; LED1 = 0; LED2 = 0; // 全部点亮 LED3 = 0; LED4 = 0; } void Timer0() interrupt 1 { TH0 = 0x3C; // 重装初值 TL0 = 0xB0; if(++count_50ms >= 20) { // 1定时 count_50ms = 0; flag_1s = 1; } // 500ms闪烁控制(仅在正常模式生效) if(++flash_counter >= 10 && !button_active) { flash_counter = 0; if(mode == 0 && sec <= 3) { LED2 = ~LED2; if(sec == 0) LED2 = 1; } if(mode == 1 && sec <= 3) { LED4 = ~LED4; if(sec == 0) LED4 = 1; } } }在此程序倒计时都加上由AT89C51单片机控制的共阴极数码管显示程序
03-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值