奥运倒计时


<!-- 奥运倒计时 开始 -->

<SPAN id=span_dt_dt class="wenzi-1"></SPAN>
<SCRIPT language=javascript>
<!--
//document.write("");
function show_date_time(){
window.setTimeout("show_date_time()", 1000);
BirthDay=new Date("8/08/2008 20:00:00");//这个日期是可以修改的
today=new Date();
timeold=(BirthDay.getTime()-today.getTime());
sectimeold=timeold/1000
secondsold=Math.floor(sectimeold);
msPerDay=24*60*60*1000
e_daysold=timeold/msPerDay
daysold=Math.floor(e_daysold);
e_hrsold=(e_daysold-daysold)*24;
hrsold=Math.floor(e_hrsold);
e_minsold=(e_hrsold-hrsold)*60;
minsold=Math.floor((e_hrsold-hrsold)*60);
seconds=Math.floor((e_minsold-minsold)*60);
document.getElementById('span_dt_dt').innerHTML=daysold+"天"+hrsold+":"+minsold+":"+seconds;
}
show_date_time();
//-->
</SCRIPT>
<!-- 奥运倒计时 结束 -->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于STM32的奥运倒计时的代码示例: ```c #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_tim.h" #include "stm32f10x_gpio.h" #include "stm32f10x_usart.h" #include "stdio.h" #define LED_PORT GPIOB #define LED_PIN GPIO_Pin_1 TIM_TimeBaseInitTypeDef timerInitStructure; NVIC_InitTypeDef nvicStructure; USART_InitTypeDef usartInitStructure; void initLED(void); void initTimer(void); void initUSART(void); void sendString(char *str); int main(void) { SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); initLED(); initTimer(); initUSART(); while (1); } void initLED(void) { GPIO_InitTypeDef gpioStructure; gpioStructure.GPIO_Pin = LED_PIN; gpioStructure.GPIO_Mode = GPIO_Mode_Out_PP; gpioStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LED_PORT, &gpioStructure); } void initTimer(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); timerInitStructure.TIM_Prescaler = 7200 - 1; // 1秒钟计数次数 timerInitStructure.TIM_CounterMode = TIM_CounterMode_Down; // 向下计数模式 timerInitStructure.TIM_Period = 60 * 60 * 24 - 1; // 计数周期为1天 timerInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM2, &timerInitStructure); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); nvicStructure.NVIC_IRQChannel = TIM2_IRQn; nvicStructure.NVIC_IRQChannelPreemptionPriority = 0; nvicStructure.NVIC_IRQChannelSubPriority = 0; nvicStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&nvicStructure); TIM_Cmd(TIM2, ENABLE); } void initUSART(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); GPIO_InitTypeDef gpioStructure; gpioStructure.GPIO_Pin = GPIO_Pin_9; gpioStructure.GPIO_Mode = GPIO_Mode_AF_PP; gpioStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpioStructure); gpioStructure.GPIO_Pin = GPIO_Pin_10; gpioStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &gpioStructure); usartInitStructure.USART_BaudRate = 115200; usartInitStructure.USART_WordLength = USART_WordLength_8b; usartInitStructure.USART_StopBits = USART_StopBits_1; usartInitStructure.USART_Parity = USART_Parity_No; usartInitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usartInitStructure.USART_Mode = USART_Mode_Tx; USART_Init(USART1, &usartInitStructure); USART_Cmd(USART1, ENABLE); } void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); int days = TIM_GetCounter(TIM2) / 86400; int hours = (TIM_GetCounter(TIM2) - days * 86400) / 3600; int minutes = (TIM_GetCounter(TIM2) - days * 86400 - hours * 3600) / 60; int seconds = TIM_GetCounter(TIM2) - days * 86400 - hours * 3600 - minutes * 60; char buffer[50]; sprintf(buffer, "倒计时:%d天 %02d:%02d:%02d\r\n", days, hours, minutes, seconds); sendString(buffer); if (TIM_GetCounter(TIM2) == 0) { GPIO_SetBits(LED_PORT, LED_PIN); } } } void sendString(char *str) { while (*str) { USART_SendData(USART1, *str++); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } } ``` 这个代码使用了STM32的定时器和串口模块实现了一个倒计时功能。在主函数中初始化了LED、定时器和串口模块,然后进入了一个死循环。定时器的计数周期为1天,每次计数完成后会触发一个中断,在中断处理函数中计算倒计时并通过串口发送到电脑上。当倒计时结束时,会点亮一个LED。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值