有趣的流水灯写法。
来源:互联网 发布:易语言窗口同步器源码 编辑:程序博客网 时间:2024/05/29 09:23
偶然间看到了这段代码,是freescale的示例代码,先看看这段代码。
void main(void) { const char flags[] = {1<<0, 1<<1, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6, 1<<7}; char c; EnableInterrupts; asm_main(); /* call an assembly function (for demo purpose) */ srand(PARTIDH); /* just some 'random' start value as seed */ DDRB = 0xff; PORTB = 0; for(;;) { for(c=0;c<=6;c++) { delay(); Random(); PORTB = ~flags[c]; } for(c=7;c>=1;c--) { delay(); Random();PORTB = ~flags[c];} }/* wait forever */ /* please make sure that you never leave this function */}自然地,如果是嵌入式设计的话,不可避免地要写流水灯。不过,这段代码,我觉得很简单,很容易懂。至少比我原来的写法const char flags[]={0xFE,0xFD,0xFB,0xF7,0x7F,0xBF,0XDF,0xEF};
因为不是很喜欢用移位的方法,所以自然选择了那个方法。移位应该就是这样子了:for(i=0;i<8;i++){ delay(); PORTB=PORTB<<1;}
自然地这是简练多了,可能表示的时候不是很方便,比如要让特定的LED亮,不过也是可以的。PORTB=0x01<<i;
当然,移位方法也是多种多样的。但是,这不像一个 pythonic的作法。const char flags[] = {1<<0, 1<<1, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6, 1<<7};这段代码比0xFE,0b00001111什么的优雅多了。
而且,可以优雅的指定让某个led亮。
PORTB = ~flags[c];
- 有趣的流水灯写法。
- 注释的有趣写法
- 有趣的js匿名函数写法
- 流水灯的程序
- 流水灯的制作
- 流水灯程序的详解
- 拓展后的流水灯。
- 可控的花样流水灯
- LED的流水灯实验
- 最小系统的流水灯
- 流水灯
- 流水灯
- 流水灯
- 流水灯
- 流水灯
- 流水灯
- 流水灯
- 流水灯
- struts2如何动态调用action的方法以及使用json插件范围json格式的javascript对象
- Android开启闪光灯的几种办法
- Eclipse常用快捷键
- 透明位图指定颜色
- HUSTOJ随笔3-配置文件
- 有趣的流水灯写法。
- Android培训班(95)内核解压过程8
- Android-2.2display系统介绍-SW架构
- 3月18日复习提纲
- asp 无组件上传大文件
- Android2.2 display系统介绍
- 表驱动概述<二>
- C指针和数组:定义为字符串指针,声明为字符数组的后果
- awk 笔记之一