×
单片机 > 单片机程序设计 > 详情

单片机ATmega8读取165串入拨码开关地址的程序分享

发布时间:2020-12-24 发布时间:
|

单片机ATmega8读取165串入的拨码开关地址

晶振:内部1M//

//Author:wanghu//

//AVRGCC@2008.6.1//

#include

#include

/**********定义位操作的位移宏bywanghu********/

#definesetbit(val,bitn)(val|=(1《《(bitn)))//

#defineclrbit(val,bitn)(val&=~(1《《(bitn)))//

#definegetbit(val,bitn)(val&(1《《(bitn)))//

//使用方法:if(getbit(PINB,7))//

//setbit(PORTB,0);//

//elseclrbit(PORTB,0);//

unsignedcharreadaddress(void)

{

unsignedcharadd=0;

unsignedchari=0;

clrbit(PORTC,1);

setbit(PORTC,1);

for(i=0;i《7;i++)

{

add|=getbit(PINC,0);//上电后QH的值即是165的第8位值,可以直接赋值完后,给165上升沿读取下个数据

add《《=1;

clrbit(PORTC,2);

setbit(PORTC,2);

}

add|=getbit(PINC,0);

returnadd;

}

intmain(void)

{

unsignedchari,j,k;//定义变量

unsignedcharadd=0;

DDRB=0xFF;

PORTB=0;

PORTC=0x01;

DDRC=0xFE;

DDRD=0xFF;

i=1;

for(j=0;j《8;j++)//循环8次,即PA0~~PA7轮流闪亮,流水一遍自检

{

PORTB=i;//按位取反,反相输出,低电平有效

for(k=0;k《10;k++)_delay_ms(30);//延时30*10=300毫秒,可自行调节

i=i《《1;//左移一位

}

while(1)

{

add=readaddress();

PORTB=add;

PORTD=add;

}

}

关键字:单片机  ATmega8  读取165串入  拨码开关地址

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义