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

📄 main.c

📁 MSP430有许多寄存器来设定程序的频率和周期
💻 C
字号:
//使用AD单通道多次转换,采集P6.0输入的模拟电压值(0变化范围:0~3.3
//转换为数字量,建立二维数组和通过顺序查表的方法得出下埃及回来的电压值
//,然后通过数码管显示当前电压值,显示跟随输入的模拟电压的变化。由于只有两位数码管,故显示电压值景区到小数点后
//一位,如果是2.37显示2.4.
#include "msp430.h"

void Init(void);
__interrupt void ADC12_interrupt(void);
unsigned int Result;
unsigned int Table[4][10]={{0x040,0x0bc,0x138,0x1b4,0x2ac,0x328,0x3a4,0x420,0x49c},
{0x518,0x594,0x610,0x68c,0x708,0x784,0x800,0x87c,0x8f8,0x974 },
{0x9f0,0xa6c,0xae8,0xb64,0xbe0,0xc5c,0xc08,0xd54,0xdd0,0xe4c},
{0xec8,0xf44,0xfc0,0xfff}};
//该数组元素用于与AD转换的电压相比较 如果某个数组元素稍大于等于AD转换后的电压数值,
//就输出
int main( void )
{
  P4DIR=0XFF;//mov #0xfff,p4dir mov #01000101b,r3   add #56,r3
 P5DIR=0XFF;
 Init();
 _EINT();
 ADC12CTL0|=ENC+ADC12SC;//设置,转换允许位置1,采样/控制位置1 采样信号SAMPCON由采样定时器产生(SHP=1)
                           //则 产生一次转换
 while(1);
  //return 0;
}
void Init(void)
{
  WDTCTL=WDTHOLD+WDTPW;
  P6SEL|=0X01;
  ADC12CTL0&=~ENC; //复位转换允许位
  ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V;//ADC12ON打开模块 可以进行转换
                                         //SHT0_2周期是4*t*4
                                         //REFON内部参考电压打开
                                          //REF2_5V 电压 2.5V
  ADC12CTL1=SHP+CONSEQ_2;//SHP SAMPON 来自采样定时器,采样信号上升沿触发
                          //  CONSEQ_2单通道 多次转换模式
  ADC12MCTL0=SREF_0;
  ADC12IE|=BIT0;
  
}

#pragma vector=ADC_VECTOR
__interrupt void ADC_interrupt(void)
{
  unsigned char seg_7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  unsigned char seg_8[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
  unsigned i,j;
  ADC12CTL0&=~ENC;
  for(i=0;i<4;i++)
  {
    for(j=0;j<10;j++)
    {
      if(ADC12MEM0<=Table[i][j])
        goto xxx;
      
    }
  }
xxx:{P4OUT=seg_7[j];
    P5OUT=seg_8[i];}
    ADC12CTL0|=ENC+ADC12SC;
}

⌨️ 快捷键说明

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