注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

tiankai001的个人空间 http://home.eeworld.com.cn/space-uid-139222.html [收藏] [复制] [分享] [RSS]

日志

单片机C语言-十六种方式流水灯(13)

已有 414 次阅读2018-3-25 17:11 |个人分类:proteus for 51 mcu




此内容由EEWORLD论坛网友tiankai001原创,如需转载或用于商业用途需征得作者同意并注明出处



简介:
系列文章《单片机C语言-十六种方式流水灯》是一篇介绍单片机C语言各种基本语句使用范例的文章,总共使用了:顺序结构、单选择语句if、多选择语句if...else、多选择语句switch...case、循环语句for、循环语句while、循环语句do...while、转移语句goto、函数调用、数组、指针、指针+数组、指针+数组+函数、结构体、结构体数组、结构体数组+指针等共计16种方式实现同样的流水灯功能。
通过这十六种方式的流水灯实例,使大家对单片机C语言的基本语句有一个大致的印象,从而使大家能够更快、更好的掌握单片机C语言。
本文是《单片机C语言-十六种方式流水灯》的第十三篇,介绍使用指针+数组+函数方式实现的流水灯。

  1. /************************************************************
  2. 文件:main.c
  3. 功能:用指针+数组方式实现流水灯
  4. 描述:轮流点亮8个LED灯
  5. 作者:老马识途单片机
  6. 日期:2018年1月2日
  7. 编译环境:Keil C51 uVirsion 4.72.9.0
  8. 硬件环境:Proteus 8.0
  9. 主芯片:AT89S51
  10. 晶振:11.0592MHz
  11. ***********************************************************/
  12. #include
  13. unsigned char ucBuffer[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  14. void Delayms(unsigned long int uiTimer);
  15. unsigned char GPIOSet(unsigned char ucGPIOValue);
  16. /*****************************************
  17. 函数名:main()
  18. 入口参数:无
  19. 出口参数:无
  20. 功能:流水灯测试主程序
  21. 说明:用指针+数组+函数实现流水灯
  22. 作者:老马识途单片机
  23. 日期:2018年1月2日
  24. ****************************************/
  25. void main()
  26. {
  27. unsigned char ucCounter;
  28. while(1)
  29. {
  30. for(ucCounter=0;ucCounter<8;ucCounter++)
  31. {
  32. P0 = GPIOSet(ucCounter);
  33. Delayms(50000);
  34. }
  35. }
  36. }
  37. /*****************************************
  38. 函数名:Delay()
  39. 入口参数:ucDelayTimer,延时时间长度
  40. 出口参数:无
  41. 功能:实现延时功能
  42. 说明:延时时间可根据入口参数调整
  43. 作者:老马识途单片机
  44. 日期:208年1月2日
  45. ****************************************/
  46. void Delayms(unsigned long int ucDelayTimer)
  47. {
  48. for(;ucDelayTimer > 0;ucDelayTimer--);
  49. }
  50. /*****************************************
  51. 函数名:GPIOSet()
  52. 入口参数:ucGPIOValue,端口赋值参数
  53. 出口参数:端口要设置的值
  54. 功能:实现端口赋值功能
  55. 说明:端口值可根据入口参数调整
  56. 作者:老马识途单片机
  57. 日期:2018年1月2日
  58. ****************************************/
  59. unsigned char GPIOSet(unsigned char ucGPIOValue)
  60. {
  61. unsigned char *Ptr;
  62. Ptr = ucBuffer;
  63. return *(Ptr + ucGPIOValue);
  64. }
复制代码



本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-11-20 14:08 , Processed in 0.015467 second(s), 10 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2018 http://bbs.eeworld.com.cn/

返回顶部