| 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 网上商城 | 芯片价格参考 | 留言 | 论坛 | 网络协议 | 驱动设计 | 购买指南-HowtoBuy | 
您现在的位置: FPGA开发板&SOPC开发板-嵌入式控制研究室 >> DSP >> DSP进阶 >> 文章正文 用户登录 新用户注册
DSP的第一个程序         ★★★ 【字体:
DSP的第一个程序
作者:未知    文章来源:互联网    点击数:    更新时间:2006-8-4

我的第一个DSP程序很简单,就是XF输出一个方波,并驱动LED。但是碰到了很多基本的问题。现写一个主要问题给秀一下。

语句 if (Flag>10) asm(" SSBX XF"); else asm(" RSBX XF");放在不同的位置,从C/C++程序语言来说应该没什么大的问题。但是得到不同的结果。后来通过查看编译后的汇编,才知道问题所在。

XF是ST1的一个bit,但是在中断中,首先把ST1压入堆栈,出中断前才弹出堆栈,所以在中断中改变XF没有实际的意义。所以在C/C++加如汇编要谨慎。

说明:定时器的周期太短,无法肉眼看见LED的亮灭,所以加了一个记数变量。

 第一次写程序,有问题

void main()
{
    init_5402();
    init_timer();
    while(1)
    {
           asm(" NOP");
    }
}

interrupt void int_timer0()
{
         Flag=Flag+1;
         if (Flag>10) asm(" SSBX XF"); else asm(" RSBX XF");
         if (Flag>20) Flag=0;
}

修改后的程序,正确

void main()
{
    init_5402();
    init_timer();
    while(1)
    {
           asm(" NOP");
           if (Flag>10) asm(" SSBX XF"); else asm(" RSBX XF");
     }
}

interrupt void int_timer0()
{
       Flag=Flag+1;
       if (Flag>20) Flag=0;
}

文章录入:fengfeiyi    责任编辑:fengfeiyi 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)