//***************************************************************************************// MSP430 Blink the LED Demo - Software Toggle P1.0//// Description; Toggle P1.0 by xor'ing P1.0 inside of a software loop.// ACLK = n/a, MCLK = SMCLK = default DCO//// MSP430x5xx// -----------------// /|\| XIN|-// | | |// --|RST XOUT|-// | |// | P1.0|-->LED//// J. Stevenson// Texas Instruments, Inc// July 2024// Built with Code Composer Studio v5//***************************************************************************************#include #include "tm1638.h"unsigned char LED_CODE[] ={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39,0x5E, 0x79, 0x71 };float i=1000,j=500;int main(void){float a,b; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timerif (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF){while (1); // If calibration constants erased, trap CPU!!}BCSCTL1 = CALBC1_1MHZ; // Set rangeDCOCTL = CALDCO_1MHZ; // Set DCO step + modulationBCSCTL2 = SELM_1 + DIVS_3; //set MCLK=DOC/8 P1DIR |= 0x01; // Set P1.0 to output direction //引脚设置(临时使用 P1.2 输出一路 PWM) P1SEL |= BIT6; //TA1 从 P1.6 输出 P1DIR |= BIT6; //TA1 从 P1.6 输出 P2DIR |= 0xff; P2OUT |= 0XFF; TACTL |= MC_1 +TASSEL_2+ID_0; //时钟源选择 SMCLK,增计数模式 TA 设置 TACCTL1 = OUTMOD_7; //模式 7 高电平 PWM 输出PWM 设置 init_TM1638(); for(;;) { TACCR0 = i; TACCR1 = j; if(Read_key()==0) { while(Read_key()==0); i=i+10; // 调频率 j=b*i/100; } if(Read_key()==1) { while(Read_key()==1); i=i-10; // 调频率 j=b*i/100; } if(Read_key()==2) { while(Read_key()==2); j=j+10; //调占空比 } if(Read_key()==3) { while(Read_key()==3); j=j-10; //调占空比 } b=j*100/i; // 占空比 Write_DATA(0x00, LED_CODE[(int)b/10]); Write_DATA(0x02, LED_CODE[(int)b%10]|0x80); Write_DATA(0x04, LED_CODE[(int)(b*10)%10]); a=1000000/(8.0*i);//频率 Write_DATA(0x08, LED_CODE[(int)a/100]); Write_DATA(0x0a, LED_CODE[(int)a/10%10]); Write_DATA(0x0c, LED_CODE[(int)a%10]|0x80); Write_DATA(0x0e, LED_CODE[(int)(a*10)%10]); }}