功能
秒表
动图:
部分代码
这段代码是用C语言编写的,用于在基于德州仪器MSP430微控制器的平台上实现一个简易的电子秒表功能。
#include <msp430.h>
#include "LCD.h"unsigned int second = 0;
unsigned int millisecond100 = 0;
char Stopwatch_open = 0;int main( void )
{unsigned char display_str[15], str_count;WDTCTL = WDTPW | WDTHOLD; /* stop watchdog timer */if ( CALBC1_1MHZ == 0xFF ) /* If calibration constant erased */{while ( 1 ); /* do not load, trap CPU!! */}DCOCTL = 0; /* Select lowest DCOx and MODx settings */BCSCTL1 = CALBC1_1MHZ; /* Set range */DCOCTL = CALDCO_1MHZ; /* Set DCO step + modulation * / */Port_init(); /* lcd */LCD_init(); /* lcd */LCD_write_str( 0, 0, "Stopwatch" );_EINT();while ( 1 ){/*按键输入 */P1DIR &= ~BIT3;P1SEL &= ~BIT3;P1REN |= BIT3;P1OUT |= BIT3;if ( !(P1IN & BIT3) ){while ( !(P1IN & BIT3) );Stopwatch_open = !Stopwatch_open; /* 开始或者暂停 */}delay_ms( 10 );str_count = 0;display_str[str_count++] = (second / 60) % 100 / 10 + '0';display_str[str_count++] = (second / 60) % 10 + '0';display_str[str_count++] = ':';display_str[str_count++] = (second % 60) % 100 / 10 + '0';display_str[str_count++] = (second % 60) % 10 + '0';display_str[str_count++] = '.';display_str[str_count++] = (millisecond100) % 10 + '0';display_str[str_count++] = 0;Port_init(); /* lcd */LCD_write_str( 0, 1, display_str );}
}#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A( void )
{static char num2 = 0;if ( Stopwatch_open ){num2 = (num2 + 1) % 10;if ( num2 == 9 ){millisecond100++;if ( millisecond100 == 10 ){millisecond100 = 0;second++;}}}
}
全部代码
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2