⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 一套MSP430单片机完整程序
💻 C
字号:
/**************************************************************************
*                        MCU  MSP430F149
*                         
*              (c) Copyright 2006.03.17  zrh
*                       All Rights Reserved
*
***************************************************************************/
#include <msp430x14x.h>
#include "define.h"
#include "Global.h"

unsigned int Value;
main(void)
{
    MCU_Init();                                 // 初始化MCU
    Led_Init();
    Display_All(0xFF);                          // 全显示以检查LED是否有缺段
    Delayms(1000);
    Display_All(0x00);   
    O2_Column_Pre = O2_Column_Cur + 1;
    Display_O2_Column(O2_Column_Cur);
    N2O_Air_Column_Pre = N2O_Air_Column_Cur + 1;
    Display_N2O_Air_Column(N2O_Air_Column_Cur);        
    while(1)
    {
        Read_Key();                             // 读取按键
        Status_Check();                         // 状态查询
        Value_Change();                         // 数值转换
        Display_LED();                          // 数码管显示
        Display_Column();                       // 光柱显示     
        Send_Uart(Buffer);                      // 串口通讯
    }
}

/**************************************************************************
* 软件延时 
* 输入参数: n即为n(ms)  最长延时 65535ms
***************************************************************************/
void Delayms(unsigned int n)
{
    unsigned int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<150;j++);             // 按一指令1us来计算
    }
}

// TIMERA0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
    AD_Sampling_Counter ++;
    if(AD_Sampling_Counter > 20)         // 采样周期200ms
    {
        AD_Sampling_Counter = 0;
        ADC12CTL0 &= ~ENC;
        Value_O2_Cur1[Array_No] = ADC12MEM0 & 0x0fff; 
        Value_N2O_Air_Cur1[Array_No] = ADC12MEM1 & 0x0fff;
        Value = ADC12MEM2 & 0x0fff;  
        Array_No ++;
        if(Array_No >= 24) Array_No = 0;    
        Value_Change_En = 0x01;
        Send_Uart_En = 0x01;
        ADC12CTL0 |= ENC+ADC12SC;       // 开始新一轮转换
    }
    
    Display_Counter++;
    if(Display_Counter > 100)            // 显示周期1000ms     
    {
        Display_Counter = 0x0;
        Display_LED_En = 0x01;
        Status_Check_En = 0x01;  
    }
    
    Display_Column_En = 0x01;    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -