我正在从事学校项目,需要用AVR atmega控制器学习C的基础知识.
我不明白一切如何设置.例如PORTB,PORTD,DDRB; DDRD,PINB,PIND和类似的东西.而且我不知道如何使用if语句,while循环等.
有人可以给我一个简短的解释吗?
我有几行代码行…
DDRB = 0b00000011; // I know that here DDRB is set to input/output
和if语句:
if (PINB & (1 << PINB0)){ A = true; }
有人可以解释一下这个“if语句”是如何工作的?为什么PINB& (1
你是说什么是if-condition PINB& (1
> 1为0000 0001
> 1 <左移后的2号给0000 0100
>按位,0000 0100给出全零0000 0000或0000 0100
> 1 <左移后的2号给0000 0100
>按位,0000 0100给出全零0000 0000或0000 0100
3A.如果全部为零,则条件为false(当a中的第三位为零时).
3B.如果按位结果为0000 0100,则条件求值为真(当a中的第三位为1时).
相关文章
- SQL Server查询 - 用DISTINCT选择COUNT(*)@H_301_38@
- clojure协议的简单说明@H_301_38@
- 框架 - MapReduce的简单说明?@H_301_38@
- c++ typedef和非简单类型说明符@H_301_38@
- c - 显式类型转换和多个简单类型说明符@H_301_38@
- 有人可以提供一个简单的说明,说明如何使用Threading.MemoryBarrier在.Net中实现“全面围栏”@H_301_38@
- ruby-on-rails - 是否有从Phusion Passenger迁移到Unicorn的简单说明?@H_301_38@
- haskell - 简单的例子来说明类别,Monoid和Monad?@H_301_38@
转载注明原文:C – AVR – 简单的PORTB,PINB说明 - 代码日志
解决方法
你是说什么是if-condition PINB& (1
> 1为0000 0001
> 1 <左移后的2号给0000 0100
>按位,0000 0100给出全零0000 0000或0000 0100
> 1 <左移后的2号给0000 0100
>按位,0000 0100给出全零0000 0000或0000 0100
3A.如果全部为零,则条件为false(当a中的第三位为零时).3B.如果按位结果为0000 0100,则条件求值为真(当a中的第三位为1时).