找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2527|回复: 4
打印 上一主题 下一主题
收起左侧

问一个关于msp430f149关于中断的问题

[复制链接]
跳转到指定楼层
楼主
ID:279187 发表于 2018-2-4 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这两天玩一下这个4线串口屏,想把温度,时间和电压采样的数据发送到上面,但是温度和时间(ds1302)的数据发送到上面去没什么问题,但是当我把149自带的ADC采样电压数据发送到上面时,其它的数据就不稳定了,我不知道是不是时间上有什么冲突,大家帮忙找一下原因!下面是主程序

//*************************************************************************
//        ADC中断服务程序
//*************************************************************************
#pragma vector = ADC_VECTOR             //中断名称表示中断的来源
__interrupt void ADC12ISR(void)
{
  while((ADC12CTL1&0x01)==1);           //如果ADC忙,则等待,否则读取ADC转换数值,如果为0则执行下面的程序
  TEMP = ADC12MEM0;//读取ADC转换值,ADC12MEM0为通道存储寄存器,这是模拟量存储数据的地方,设置好相关的配置之后,可以直接读取即可
  sprintf((char*)buf,"main.t16.txt=\"%d\"",TEMP);
  Print_Str1((char*)buf);
  HMISendstop();//这是串口屏接收指令结束符
  Flag=1;
}
/*********************主函数*******************/
void main()
{
   uint i=0;
   WDT_Init();
   UART_Init();
   Clock_Init();
   DS18B20_Reset();
   delay_ms(100 );
   Close_LED();
   DS1302_init();
   delay_ms(10);
   DS1302_write_time(); //ds1302时间数据初始值设定                          
   Flag=1;
   while(1)
   {
    //delay_ms(100);//刷新速度
    DS1302_read_time();//ds1302读取时间函数  
    ds1820_start();
    ds1820_read_temp();//下面sprintf的用法是,把j打印成一个 字符串保存在(char*)buf中
    switch(i++)//一开始发送多组数据不能发,现在通过一个switch通过标志位来可以发了
    {
    case 0:sprintf((char*)buf,"main.t2.txt=\"%.1f\"",temp_value); //注意这里面要发送数据到指定界面时,只需要写明界面名字就行了
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 1:sprintf((char*)buf,"main.t1.txt=\"%x%x\"",time_buf[0],time_buf[1]);//注意这里发送两个数据所以需要两个%x
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 2:sprintf((char*)buf,"main.t5.txt=\"%x\"",time_buf[2]);
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 3:sprintf((char*)buf,"main.t7.txt=\"%x\"",time_buf[3]);
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 4:sprintf((char*)buf,"main.t0.txt=\"%x\"",time_buf[4]);
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 5:sprintf((char*)buf,"main.t9.txt=\"%x\"",time_buf[5]);
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 6:sprintf((char*)buf,"main.t10.txt=\"%x\"",time_buf[6]);
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 7:sprintf((char*)buf,"main.t12.txt=\"%x\"",time_buf[7]);
           Print_Str1((char*)buf);
           HMISendstop();//这是串口屏接收指令结束符
    case 8:if(Flag==1)
            {
             _EINT();
             ADC12CTL0 |= ADC12SC;           //开启转换
             ADC12CTL0 &= ~ADC12SC;          //清零,停止转换
             _DINT();
             Flag=0;
            }
    }
    _DINT();
    if(i>=8)
    i=0;
   }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:279187 发表于 2018-2-4 15:59 | 只看该作者
这里主要看case 8里面的程序,就是case 8这里显示温度数据就有问题,中断不知道怎么改?
回复

使用道具 举报

板凳
ID:279187 发表于 2018-2-4 16:04 | 只看该作者
这里主要是case 8有问题,其它的都是ok,就是中断用了之后就不行了
回复

使用道具 举报

地板
ID:282046 发表于 2018-2-4 17:26 来自手机 | 只看该作者
case 8温度数据有问题
回复

使用道具 举报

5#
ID:279187 发表于 2018-2-4 20:18 | 只看该作者
case 8读取的是电压数据,用的是adc中断
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表