智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8479|回复: 17
打印 上一主题 下一主题

求高手写一个基于定时中断的单片机流水灯代码

  [复制链接]

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
QQ
威望
240
贡献
48
兑换币
0
注册时间
2010-7-12
在线时间
6 小时
跳转到指定楼层
1#
发表于 2010-7-13 19:27:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实现定时的流水灯。让开发板上的八个LED,每个灯亮一秒,直到最后一个,再从最后一个开始亮到第一个

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
QQ
威望
240
贡献
48
兑换币
0
注册时间
2010-7-12
在线时间
6 小时
2#
 楼主| 发表于 2010-7-14 13:43:04 | 只看该作者
怎么一个回复的也没有?
回复 支持 反对

使用道具 举报

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
QQ
威望
259
贡献
46
兑换币
0
注册时间
2010-4-11
在线时间
20 小时
3#
发表于 2010-7-14 16:46:52 | 只看该作者
用PIT?
回复 支持 反对

使用道具 举报

7

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
386
威望
279
贡献
55
兑换币
16
注册时间
2010-5-18
在线时间
26 小时
4#
发表于 2010-7-14 20:20:27 | 只看该作者
本帖最后由 shineamnys 于 2010-7-14 20:23 编辑

回复 1# 茅草屋


   
  1. #include <hidef.h> /* common defines and macros */
  2. #include <MC9S12XS128.h> /* derivative information */
  3. #pragma LINK_INFO DERIVATIVE "mc9s12xs128"



  4. //==================================================
  5. //定时中断函数
  6. //定时中断 0实现 500MS定时
  7. //==================================================
  8. #define PITTIME 5000//设定为 50MS定时
  9. unsigned int vTmpPIT=0;


  10. void pllclk(void)//24MHz,外部时钟为 16MHz
  11. {
  12. CLKSEL=0X00;
  13. PLLCTL=0xe1;
  14. SYNR=2;//PLLCLK=2*OSCCLK*(SYNR +1)/(REFDV +1)
  15. REFDV=1;
  16. PLLCTL=0X60;
  17. asm NOP;
  18. asm NOP;
  19. asm NOP;
  20. while((CRGFLG&0X08)==0);//时钟校正同步
  21. CLKSEL=0X80;
  22. }


  23. void initIOBoutput(void)//IO口初始化,B口为输出
  24. {
  25. DDRB=0XFF;
  26. PORTB=0XFF;
  27. }


  28. void initPIT(void)//定时中断初始化函数 50MS定时中断设置
  29. {
  30. PITCFLMT_PITE=0;//定时中断通道0关
  31. PITCE_PCE0=1;//定时器通道 0使能
  32. PITMTLD0=240-1;//8位定时器初值设定。240分频,在 24MHzBusClock下,为 0.1MHz。即 10us.
  33. PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS
  34. PITINTE_PINTE0=1;//定时器中断通道 0中断使能
  35. PITCFLMT_PITE=1;//定时器通道0使能
  36. }


  37. void main(void)
  38. {
  39. pllclk();
  40. initIOBoutput();
  41. initPIT();
  42. EnableInterrupts;
  43. for(;;){}/*wait forever*/
  44. /*please make sure thatyou neverleave this function */
  45. }


  46. #pragma CODE_SEG __NEAR_SEG NON_BANKED
  47. void interrupt 66 PIT0(void)
  48. {
  49. vTmpPIT++;
  50. if(vTmpPIT==20)
  51. {
  52. PORTB=0B11111110;
  53. }
  54. else if(vTmpPIT==40)
  55. {
  56. PORTB=0B11111101;
  57. }
  58. else if(vTmpPIT==60) {
  59. PORTB=0B11111011;
  60. }
  61. else if(vTmpPIT==80) {
  62. PORTB=0B11110111;
  63. }
  64. else if(vTmpPIT==100) {
  65. PORTB=0B11101111;
  66. }
  67. else if(vTmpPIT==120) {
  68. PORTB=0B11011111;
  69. }
  70. else if(vTmpPIT==140) {
  71. PORTB=0B10111111;
  72. }
  73. else if(vTmpPIT==160) {
  74. PORTB=0B01111111;
  75. vTmpPIT=0;
  76. }

  77. PITTF_PTF0=1;//清中断标志位
  78. }
复制代码

今天恰好在研究PIT模块,结合别人的资料自己稍微修改了一下~
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
QQ
威望
240
贡献
48
兑换币
0
注册时间
2010-7-12
在线时间
6 小时
5#
 楼主| 发表于 2010-7-17 14:23:29 | 只看该作者
恩恩 非常谢谢
回复 支持 反对

使用道具 举报

7

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
386
威望
279
贡献
55
兑换币
16
注册时间
2010-5-18
在线时间
26 小时
6#
发表于 2010-7-17 16:18:26 | 只看该作者
回复 5# 茅草屋


    帮个小忙而已~
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
威望
197
贡献
49
兑换币
12
注册时间
2010-7-10
在线时间
18 小时
7#
发表于 2010-11-21 11:10:53 | 只看该作者
不错
回复 支持 反对

使用道具 举报

2

主题

203

帖子

0

精华

高级会员

Rank: 4

积分
741
QQ
威望
434
贡献
249
兑换币
0
注册时间
2010-11-1
在线时间
29 小时
8#
发表于 2010-11-29 10:12:56 | 只看该作者
在PIT里写了SWITCH 语句,因为有BREAK  貌似不可以
回复 支持 反对

使用道具 举报

0

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
321
威望
232
贡献
83
兑换币
0
注册时间
2010-11-30
在线时间
3 小时
9#
发表于 2010-12-23 21:24:51 | 只看该作者
看看
回复 支持 反对

使用道具 举报

8

主题

68

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
QQ
威望
307
贡献
1147
兑换币
0
注册时间
2011-1-10
在线时间
34 小时
10#
发表于 2011-1-13 15:00:42 | 只看该作者
果真高手,如此标准,令人叹服!顶!
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-6-27 01:01 , Processed in 0.068228 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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