一线研发之声之跑马灯变形记(二)
          
            时间:12-02 13:57 阅读:2810次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介:第一次变形: typedef、函数封装、空格、间隔行、注释。
               
                        
          
            1) 先从类型重定义说起,“#define uchar unsigned char”这样的语句,其意义恐仅是为了减少敲写“unsigned char”的时间,偷懒之举罢了。类型重定义用意何其深远,区区“define”是万万授受不起的,可详见本书章节“被低估了的typedef”。在本系统中,typedef还用不上,删之。
2) 在main中,对于P1的操作如果用函数包起来,冠以一个恰当的函数名,再对P1这种“裸露端口”和“常量80”加上一个define宏定义,那代码阅读起来就比较不会堵得慌了。
3) 还有,字符间的空格,函数间的空白行,代码注释,这些也是良好程序的重要组成部分。
综上三点进行修改,我们的跑马灯才大概有一个雏形出来。如下:
#include
#include
/*********************************************************/
#define  LED_PORT                                P1 /* led端口映射 */
#define  LIGHT_INTERVAL_TIME        80 /* unit:ms     */
/*********************************************************/
void delay_ms(unsigned intms) /* 替换形参名和函数名 */
{
    unsigned char  i;
    while (ms--) /* 加空格 */
    {
        for(i=0; i<255; i++);/* 加空格 */
    }
}
/***** LED 跑马灯(从右至左)********************************/
void led_light_init(void)
{
        LED_PORT =0xFE;
}
void led_light_right2left(void)
{
        if (0x7F == LED_PORT) /* 防止’==’与’=’的意外 */
        {
                LED_PORT =0xFE;
        }
            else
        {
                LED_PORT =_crol_(LED_PORT,1);
        }
}
/*********************************************************/
void main(void)
{
        led_light_init();
        while(1)
        {
                led_light_right2left();
                delay_ms(LIGHT_INTERVAL_TIME);
        }
}
代码2跑马灯的第一次变形