您的位置 首页 新品

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

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

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

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/345827.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部