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

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

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

晶振:内部1M//

//Author:wanghu//

//AVR[email protected]//

#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;

}

}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2575794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-07
下一篇 2022-08-07

发表评论

登录后才能评论

评论列表(0条)

保存