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

控制/MCU

1889人已加入

描述

单片机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;

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分