YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2602|回复: 0
打印 上一主题 下一主题

转帖:跑马灯变形记(二)

[复制链接]
回帖奖励 1 金币 回复本帖可获得 1 金币奖励! 每人限 1 次

签到天数: 9 天

[LV.3]偶尔看看II

跳转到指定楼层
楼主
发表于 2014-12-23 08:18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 雷柏 于 2014-12-24 08:21 编辑

本帖转自http://bbs.21ic.com
第一次变形:  typedef、函数封装、空格、间隔行、注释。

1) 先从类型重定义说起,“#define uchar unsigned char”这样的语句,其意义恐仅是为了减少敲写“unsigned char”的时间,偷懒之举罢了。类型重定义用意何其深远,区区“define”是万万授受不起的,可详见本书章节“被低估了的typedef”。在本系统中,typedef还用不上,删之。

2) 在main中,对于P1的操作如果用函数包起来,冠以一个恰当的函数名,再对P1这种“裸露端口”和“常量80”加上一个define宏定义,那代码阅读起来就比较不会堵得慌了。

3) 还有,字符间的空格,函数间的空白行,代码注释,这些也是良好程序的重要组成部分。

综上三点进行修改,我们的跑马灯才大概有一个雏形出来。如下:


  1. <font color="#000"><font face="sans-serif">#include<reg51.h>
  2. #include<intrins.h>
  3. /*********************************************************/
  4. #define  LED_PORT                                P1 /* led端口映射 */
  5. #define  LIGHT_INTERVAL_TIME        80 /* unit:ms     */
  6. /*********************************************************/
  7. void delay_ms(unsigned intms) /* 替换形参名和函数名 */
  8. {
  9.     unsigned char  i;
  10.     while (ms--) /* 加空格 */
  11.     {
  12.         for(i=0; i<255; i++);/* 加空格 */
  13.     }
  14. }
  15. /***** LED 跑马灯(从右至左)********************************/
  16. void led_light_init(void)
  17. {
  18.         LED_PORT =0xFE;
  19. }
  20. void led_light_right2left(void)
  21. {
  22.         if (0x7F == LED_PORT) /* 防止’==’与’=’的意外 */
  23.         {
  24.                 LED_PORT =0xFE;
  25.         }
  26.             else
  27.         {
  28.                 LED_PORT =_crol_(LED_PORT,1);
  29.         }
  30. }
  31. /*********************************************************/
  32. void main(void)
  33. {
  34.         led_light_init();
  35.         while(1)
  36.         {
  37.                 led_light_right2left();
  38.                 delay_ms(LIGHT_INTERVAL_TIME);
  39.         }
  40. }
  41.                                                 代码2  跑马灯的第一次变形</font></font>
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-12-22 00:44 , Processed in 0.045470 second(s), 24 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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