偶然间看到了这段代码,是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];
分享到:
相关推荐
JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单...
LED采用共阳极接法(灌电流),为了符合操作习惯,初始化的时候布尔...进入循环后通过一维数组循环移位函数不断改变状态,同时把值赋给 vi,实现流水灯效果。当然,程序还有其他N种写法,有兴趣的小伙伴可以试一下!
用汇编语言写出来的流水灯程序,不要拍砖,这是我的第一个汇编程序,以前都写C程序的。可能写法比较奇怪,因为汇编的课我没上过,是边学边写的。以后会多练习多写。
注释的标准写法注释的标准写法注释的标准写法
make写法
三层架构的写法三层架构的写法三层架构的写法三层架构的写法
android 中Handler 的几种写法,很简单的demo,大神简单修改下,用的是Handler.Callback,的方法
本文档包含sass所有的语法、以及写法规范、写法案例。
TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4的类的写法TahDoMvc4...
易语言写法
struts2标签写法
table表格,让thead固定,tbody有滚动条,关键是都对齐的纯css写法。table表格,让thead固定,tbody有滚动条,关键是都对齐的纯css写法。table表格,让thead固定,tbody有滚动条,关键是都对齐的纯css写法。table...
03_createElement写法.html
windows下的各种批处理命令的写法。。
此线程写法更容易理解,对初学者帮助很大,这里有两种写法可以供大家参考
C#委托的另一种写法 C#委托的另一种写法 C#委托的另一种写法
js闭包写法学习demo
Android-RecyclerView基础写法简单实现,集成过程请见CSDN博客介绍https://blog.csdn.net/weimeig/article/details/80244059
告诉大家一个UCF文件的写法,上传上来大家参考参考
常用数据库jdbc连接写法大全 ReadyGo!技术成就梦想 www.efish.cn efish 2007-10-5 1:45:32 1. mysql(http://www.mysql.com)mm.mysql-2.0.2-bin.jar class.forname( "org.gjt.mm.mysql.driver" ); ...