popofxk

    1. MSP430F149头文件详解(中文注释) 710/76417 微控制器 MCU 2013-12-27
      好      
    2. 你知道三段式充电器的三个关键参数么? 41/9663 模拟与混合信号 2012-11-15
      看看
    3. 怎样用外部中断触发ADC? 3/5776 微控制器 MCU 2012-10-24
      你好 版主大人,我用的是F149 #include   #include  "Uart.h" //typedef unsigned char uchar; //typedef unsigned int  uint; uint sum; void Trans_val(uint Hex_Val); /************************主函数****************************/ void main(void) {   WDTCTL = WDTPW+WDTHOLD;                   //关闭看门狗   P6DIR |= BIT2;P6OUT |= BIT2;              //关闭电平转换   P4DIR |= 0x01;   P6SEL |= BIT0;                           // 将P6_0,p6_1作为外围功能使用,使能ADC通道   P3SEL |= 0xC0;                            // P3_4,5,p3_5选择为UART收发端口   P1IE |= BIT5;                             //端口P1.5中断   P1SEL |= BIT5;                            //设置P1.5为外围功能模块      ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // 打开ADC,设置采样时间,参考电压为默认值VCC   ADC12CTL1 = SHP;                 // 使用采样定时器    ADC12CTL0 |= ENC;                         // 使能转换   _EINT();                                  //全局中断   _BIS_SR(GIE);                             //开总中断   LPM0;                                     //低功耗模式0,在此模式下,仅仅关闭MCLK主时钟,其他时钟正常   while(1); } /******************************************* 函数名称:Trans_val 功    能:将16进制ADC转换数据变换成三位10进制           真实的模拟电压数据 参    数:Hex_Val--16进制数据           n--变换时的分母等于2的n次方       返回值  :无 ********************************************/ void Trans_val(uint Hex_Val) {        unsigned long caltmp;     uint Curr_Volt;     uchar n = 5;     uchar str[5];     caltmp = Hex_Val;     Curr_Volt=(caltmp*3300)/4095;      //计算十进制的电压值     str[0]=Curr_Volt/1000;                 str[2]=Curr_Volt%1000/100;     str[3]=Curr_Volt%100/10;     str[4]=Curr_Volt%10;     str[1] = 0x2e;                                //对应符号"."     Uart1_Init();     Uart1_send(str,n);     Delays(); } /******************************************* 函数名称:PORT1_ISR 功    能:检测输入到P1.5口有上升沿时           启动AD转换      参    数:      返回值  : ********************************************/ #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR (void) {   P1IE &= ~BIT5;   if((P1IFG&BIT5)==BIT5)   P4OUT = 0x00;   ADC12CTL0 |= ADC12SC;                     sum = ADC12MEM0;   Trans_val(sum);   P1IFG &= ~BIT5;   P1IE |= BIT5; }     现在的问题是P1.5口没信号时就进中断,而且进去后就跳不出中断,麻烦楼主帮忙~谢谢~~~ [ 本帖最后由 popofxk 于 2012-10-24 16:18 编辑 ]

最近访客

< 1/1 >

统计信息

已有90人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:3

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言