这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ICC 请教ICC

共3条 1/1 1 跳转至

ICC 请教ICC

院士
2006-09-17 18:14:16     打赏
ICC 请教ICC



关键词: 请教    

院士
2006-12-22 22:43:00     打赏
2楼
问 请问各位大虾,ICC
           ADCSRA|=(1<<ADSC);
作何解释,若要对ADSC清0,程序代码是什么?谢谢各位不吝赐教。 1: 很简单呀请问各位大虾,ICC
           ADCSRA|=(1<<ADSC);
作何解释,若要对ADSC清0,程序代码是什么?谢谢各位不吝赐教。
===============================================================

    ADCSRA是一个8位的IO寄存器,而ADSC是ADCSRA中的一个位(我不知道具体是第几位,比如说是第5位吧),那么 ADCSRA|=(1<<ADSC); 就是把ADCSRA的第ADSC位置成1,具体介绍如下:
    (1). 如果ADSC是第5位,则(1<<ADSC)就是0x20(把0x01左移了5位);
    (2). ADCSRA与0x20按位或。
    (3). ADCSRA中与ADSC相对应的位就被置成1啦。 2: 若要清0如下ADCSRA  &=  ~(1<<ADSC); 3: 郁闷    查了一下数据手册,ADSC是ADCSR的第6位,但是不是ADCSRA呀!不过先按第6位来讲清0部分:
    ADCSR  &=  ~(1<<ADSC);  // 清0部分

    (1). 简化思路第一步: ADCSR &= ~(1<<6);
    (2). ADCSR &= ~(0x01<<6);   // 1和0x01在这里是猫和咪的关系嘛
    (3). ADCSR &= ~(0x40);
    (4). ADCSR &= 0xbf;      // 0x40按位取反就是0xbf嘛
    (5). ADCSR = (ADCSR & 0xbf);

    我就不相信还敢有人看不懂! 哈哈! 4: 非常感谢qjy_dali 5: 关于  关于C语言的 bit-mask(位掩码)技术,中国电力出版社翻译的<<并行端口编程>>是本好书,只是它用的是Turbo C,语言翻译水平中上吧。 6: 在gcc中就可以这样:cbi(ADCSRA,ADSC);清除该位。
sbi(ADCSRA,ADSC);设置该位。

生成的汇编也及其简单 7: ADCSRA在mega128中有用, 8: 在ICC中自己做一个宏,用起来和gcc一样简单 9: 编译器一般会优化的,也可看.lst文件确认

高工
2023-03-11 17:02:41     打赏
3楼

学习


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]