atemega8例程:灯闪烁

C语言“位运算”:

“与&”运算:    1=1       0=0   0×1=0   0×0=0

“或|”运算:       11=1       10=1       01=1       00=0

“异或^”运算: 11=0       10=1       01=1       00=0

设:PORTA==10110100  x=(0~7)

PORTA &= ~(0x01<<x) x位置“0

PORTA |= (0x01<<x)     x位置“1

PORTA^=(0x01<<xx位置“取反”

______________________________________

C语言常识:逻辑“真”:非“0”,  逻辑“假”:“0”。

______________________________________

判断端口A的某一“位”的值:x= ( 0 ~ 7 )

IfPORTA &(0x01<<x))then …

if表达式中,如果x位的值为1,则表达式因为“非0”而为“真”,如果x位的值为0,则表达式因为值为“0”而为“假”。

AVR的端口寄存器中DDRx默认为0x00PORTx默认为0x00

/*********************************************************** 
* 函数库说明:ATMEGE8 灯闪烁
* 版本: v1.0
* 修改: 庞辉
* 修改日期: 2011年08月01日
*
* 说明: 无
*
* 版本更新:
*
************************************************************
*注意: LED C5
**********************************************************
*/

#include <avr/io.h>

int main(void)
{
unsigned int i,j;

//PORTC5设置为输出
DDRC |= (1 << DDC5);
//PORTC5输出低电平,LED亮
PORTC &= ~(1 << PORTC5);

while(1)
{
//取反
PORTC ^= (1 << PORTC5);
for(i = 0;i < 100;i ++)
for(j = 0;j < 1000;j ++);
}
}


原文地址:https://www.cnblogs.com/pang123hui/p/2312384.html