写一下 最近的收获 感谢冷漠等。。。

[复制链接]
6595|31
 楼主| xlsbz 发表于 2010-12-18 12:03 | 显示全部楼层 |阅读模式
TI, TE, ic, ST, timer
本帖最后由 xlsbz 于 2010-12-18 12:08 编辑

好久没上论坛   学单片机也将近2年  感觉冷漠等   

春阳高人 哈哈

牛人真多啊

最近发现  想我程序写的通用  还真得需要大量RAM啊

现在写个我刚弄的 定时器的用法  和大家分享一下

采用8位单片机

--------------------
//定义全局变量
uint16_t   systemTimerTick = 0;

//定时器中断程序
interrupt  Timer  funciton  中断序号n
{
         systemTimerTick++;
}


//得到systemTimerTick的值
uint16_t  Get_systemTimerTick(void)
{    //为什么搞这个函数,推荐看看二版主的申请版主贴 我的这个方法不知道帖子里有没有
      判断systemTimerTick这个值是否在中断程序中被改变,如果改变重新获得该值
      return  systemTimerTick;
}


//应用函数
void Function (uint16_t   定时时间)
{
           bit 是否第一次运行
           static  temp = 0;第一次运行获得的值
           static  temp_systemTimerTick

            /*这里该咋搞 自己想喽 嗨我也记不住了 写的详细了 万一写错了 就 不好了!!*/
              。。。。。。。。。。。。
            。。。。。这里是被省略的代码。。。。。。。。。。。。
            。 ??= Get_systemTimerTick。。。。。。。。。。。
            DIAOyongFunction()
           。。。。。。。。。。。。。
}



//被调用函数
void   DIAOyongFunction void
{
}



main
{     
       //初始化定时器 周期为1ms
      while (1){
              Function(300ms)
      }
}
 楼主| xlsbz 发表于 2010-12-18 12:11 | 显示全部楼层
这个牛贴 耿丽的 贴 赶快加库啊
liang7143 发表于 2010-12-18 12:12 | 显示全部楼层
没有看懂:L
tianm 发表于 2010-12-18 13:24 | 显示全部楼层
楼主没裤子;P
strang 发表于 2010-12-19 10:41 | 显示全部楼层
楼主裸奔吧、、、
zhiyonghe 发表于 2010-12-19 11:22 | 显示全部楼层
这个要加酷???:o
w34880593 发表于 2010-12-19 11:24 | 显示全部楼层
呵呵!路过顶上
shiwilson 发表于 2010-12-19 22:34 | 显示全部楼层
还真是看不懂
ejack 发表于 2010-12-20 08:14 | 显示全部楼层
DIAOyongFunction

这个函数名把俺雷得外焦里嫩……
心静自然凉 发表于 2010-12-20 08:22 | 显示全部楼层
9# ejack
中外结合...
huangqi412 发表于 2010-12-20 08:57 | 显示全部楼层
yewuyi 发表于 2010-12-20 09:07 | 显示全部楼层
又是一个误区:

最近发现  想我程序写的通用  还真得需要大量RAM啊

评分

参与人数 1威望 +1 收起 理由
xlsbz + 1

查看全部评分

dandywang 发表于 2010-12-20 14:56 | 显示全部楼层
LZ想干啥
 楼主| xlsbz 发表于 2010-12-23 19:53 | 显示全部楼层
本帖最后由 xlsbz 于 2010-12-23 19:59 编辑

我以前总是在定时器中断里面弄标志位  

然后主循环里面 判断标志  我相信 很多人都这么弄过



=====================

但是如果我现在比如需要发送50帧东西 比如CAN帧

并且要求 这500帧的发送周期可以自由设置。怎么弄呢?

难道搞50个标志位么?

关键是这样搞 程序的通用性不好   得对定时器中断程序进行重新编程。

于是就用上面的方法了!

移植性很好。

可能大家早就会了 哈哈  

我只是刚刚才用上  有点高兴 就是了

-----------------------------------------------------------

特别感谢救火车的那个申请版主的帖子 ,否则这个问题 我还不知道需要多长时间才能发现
 楼主| xlsbz 发表于 2010-12-23 20:16 | 显示全部楼层
12# yewuyi

我说的有时候确实有点对啊  

我这片 就4K 片外ram  用起来比较紧张啊
 楼主| xlsbz 发表于 2010-12-23 20:34 | 显示全部楼层
嗨  把我在大四他们毕业旧书摊买的书上的例子 敲下来   
尽管例子说的对我目前没啥用  因为我目前对实时性  要求不是太高  对我有点**肋 弄不好还不稳定 不过   可以 瞧瞧

  1. static     WORD  wSignals;

  2. #define  SIGNAL_A     0x0001
  3. #define  SIGNAL_B     0x0002
  4. #define  SIGNAL_C     0x0004
  5. #define  SIGNAL_D     0x0008

  6. .
  7. .
  8. .

  9. void  interrupt   vHandleDeviceA(void)
  10. {
  11.        //重复设置A
  12.        wSignals    |=  SIGNAL_A;
  13. }

  14. void  interrupt   vHandleDeviceB(void)
  15. {
  16.        //重复设置B
  17.        wSignals    |=  SIGNAL_B;
  18. }

  19. .
  20. .
  21. .

  22. void  main(void)
  23. {
  24.       WORD   wHighestPriorityFcn;
  25.       
  26.       while (1)   
  27.       {
  28.               /*等待事情发生*/
  29.               while(wSignals  ==  0)
  30.                       ;
  31.               /*找到后续处理中最高优先级的来进行处理*/
  32.               wHighestPrioritFcn  =  SIGNAL_A;
  33.               
  34.               disable();

  35.               /*如果一个信号没有进行设置。。。。*/
  36.               while (  (wSignals & wHighestPriorityFcn) == 0) {
  37.                        /*...进行下一步*/
  38.                        wHighestPriorityFcn  <<= 1;
  39.               }

  40.               /*重新设该信号;将要对其进行服务*/
  41.               wSignals &=  ~wHighestPriorityFcn;


  42.              enable();
  43.             
  44.              /*现在执行函数*/
  45.              switch  (wHighestPriorityFcn)
  46.              {
  47.                    case   SIGNAL_A:
  48.                                // 处理相关的活动
  49.                                break;
  50.                    case   SIGNAL_B:
  51.                                // 处理相关的活动
  52.                                break;
  53.                     。
  54.                     。
  55.                     。
  56.                     。
  57.               }
  58.          }
  59. }

bhsdlmj 发表于 2010-12-23 21:22 | 显示全部楼层
我是你的马甲 我支持你
渤海三叠浪 发表于 2010-12-23 21:24 | 显示全部楼层
楼主 我是你的马甲 我支持你
渤海三叠浪 发表于 2010-12-23 21:30 | 显示全部楼层
原野之狼 发表于 2010-12-23 23:24 | 显示全部楼层
现在通货膨胀严重 裤子也没有这么廉价的:lol

评分

参与人数 1威望 +1 收起 理由
原野之浪 + 1

查看全部评分

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

本版积分规则

190

主题

1614

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部