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 ++);
    }
}


 

你可能感兴趣的:(c,语言)