在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 2624|回复: 4

[原创] 菜农发布C5402CFG.H/C(完全增强版)及应用演示包

[复制链接]
发表于 2008-12-21 11:05:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 cjsb37 于 2013-4-29 09:11 编辑

/*---------------------------------------------------------------------------
文   件   名 :  C5402CFG.H(完全增强版)
创   建   人 :  dsp菜鸟  HotPower@126.com
创 建 日  期 :  2006.6.09  11:19
最近修改日期 :  2008.12.21  16:18
创 建  地 点 : 西安大雁塔村队部(http://www.hotpower.org/)
版   本   号 : V4.19
修 改 理  由 :  修正和增订内容
    查看变量时由于CMD的配置问题, SREGs结构查看不到成员
    CMD的正确配置:
       PAGE 1:
    支持对SREGs在watch窗口中有效查看
          MMRS   (RWIX) : o=000000h l=000060h
    .registers  : > MMRS   PAGE 1
    支持对中断向量表的动态装载及改写,
    VECT   (RWIX) : o=000080h l=000080h
    .vectors    : > VECT   PAGE 1
    支持动态加载和卸载中断服务程序
    const uVectorEntry g_pfnVectors[] = {...}
    改为:
    uVectorEntry g_pfnVectors[] = {...}
    ISR_Load(nISR_TIMER0, Timer0Isr);//动态装载Timer0Isr()
    ISR_UnLoad(nISR_TIMER0);//动态卸载Timer0Isr()
    支持在中断中对堆栈SP指针的访问,并可跳过保护直接操作XF管脚
    中断外非保护ST1的写法:SREGs.ST1.Regs ^= (1 << ST1_XF);
    中断内受保护ST1的2种写法注意SREGs.SP.Ptr[X]与压栈个数有关)
    方法1:(分配临时指针变量, 间接修改堆栈内ST1保护寄存器,代码
            简洁,但SREGs.SP.Ptr[X]与优化设置有关)
    TI_PREG regST1 = SREGs.SP.Ptr;//不优化时占用堆栈1个单元
    regST1[X] ^= (1 << ST1_XF);//优化时X=1 不优化时X=2
    方法2:(直接修改堆栈内ST1保护寄存器,与优化设置无关)
    SREGs.SP.Ptr[1] ^= (1 << ST1_XF);//Led工作灯半秒翻转1次  
备        注 : 由此文件出现的问题,DSP菜鸟不负任何责任
                本版本移植了HotBios的一些精华,虽不完全但很实用可与汇编比拼。
    程序代码全部由C/C++语言编写.
                菜农将不断更新和完善本头文件。
应 用 举  例:
    增加对DMA复用中断的位域定义
    SREGs.DMA.DMPREC.Bits.INTOSEL = DMPREC_INTOSEL_CH1_TO_CH3;
    SREGs.IMR.DMA_Bits.DMAC1 = 1;
    ISR_Load(nISR_DMAC1INT, DMAIsr);//动态装载DMAIsr()
    ISR_UnLoad(nISR_DMAC1INT);//动态卸载DMAIsr()
注 意 事  项 :  从本版本起可正式淘汰SREG数组指针,只是为兼容而保留.
声        明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。               
---------------------------------------------------------------------------*/

/*---------------------------------------------------------------------------
文   件   名 :  C5402CFG.C(完全增强版)
创   建   人 :  DSP菜鸟  HotPower@126.com
创 建 日  期 :  2006.6.09  11:19
最近修改日期 :  2008.12.21  16:18
创 建  地 点 : 西安大雁塔村队部(http://www.hotpower.org/)
版   本   号 : V4.19
修 改 理  由 :  修正和增订内容
    支持对SREGs在watch窗口中有效查看
    支持动态装载和卸载中断向量表
    ISR_Load(nISR_TIMER0, Timer0Isr);//动态装载Timer0Isr()
    ISR_UnLoad(nISR_TIMER0);//动态卸载Timer0Isr()
    支持在中断中对堆栈SP指针的访问,并可跳过保护直接操作XF管脚
    SREGs.SP.Ptr[1] ^= (1 << ST1_XF);//Led工作灯半秒翻转1次
    程序代码全部由C/C++语言编写.
备        注 : 由此文件出现的问题,DSP菜鸟不负任何责任
                菜农将不断更新和完善本头文件。
应        用 :
extern "C" interrupt void Timer0Isr(void)
{//每10mS中断1次
static unsigned int Count = 0;
Count ++;
if (Count > 50)//16*62500*50=0.5S
{//main()中的SREGs.ST1.Regs ^= (1 << ST1_XF);可用下列语句替代
     //方法1用暂存器代码更简洁)
  //TI_PREG regST1 = SREGs.SP.Ptr;
  //regST1[1] ^= (1 << ST1_XF);//Led工作灯半秒翻转1次
0000:06F5 7211      MVDM  18h,AR1
0000:06F7 F495      NOP   
0000:06F8 6AE1      XORM  2000h,*AR1(1)
     //方法2:
  SREGs.SP.Ptr[1] ^= (1 << ST1_XF);//Led工作灯半秒翻转1次  
0000:06F5 10F8      LD    *(SP),A
0000:06F7 F000      ADD   #1h,0,A,A
0000:06F9 8811      STLM  A,AR1
0000:06FA F495      NOP   
0000:06FB F495      NOP   
0000:06FC 6A81      XORM  2000h,*AR1
  Count = 0;
  System.Flag.Bits.Timer0 = true;//通知main()定时0.5S时间到
}
    //SREGs.IFR.Bits.TINT0 = 1;//清除定时器0中断标志
}
注 意 事  项 :  从本版本起可正式淘汰SREG数组指针,只是为兼容而保留.
声        明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。               
---------------------------------------------------------------------------*/

下载C5402CFG.H(完全增强版)及应用演示包






发表于 2009-4-28 15:45:01 | 显示全部楼层
谢谢!我看看
发表于 2010-9-10 11:37:28 | 显示全部楼层
gooooooooooooooooooood
 楼主| 发表于 2011-5-7 00:47:48 | 显示全部楼层
看看


                               
登录/注册后可看大图
发表于 2011-5-13 23:40:13 | 显示全部楼层
Good.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-7 04:39 , Processed in 0.027995 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表