《单片机ATmega8读取165串入拨码开关地址的程序分享.doc》由会员分享,可在线阅读,更多相关《单片机ATmega8读取165串入拨码开关地址的程序分享.doc(2页珍藏版)》请在三一文库上搜索。
1、单片机ATmega8读取165串入拨码开关地址的程序分享单片机ATmega8读取165串入的拨码开关地址晶振:内部1M/Author:wanghu/AVRGCC2008.6.1/#include#include/*定义位操作的位移宏bywanghu*/#definesetbit(val,bitn)(val|=(1(bitn)/#defineclrbit(val,bitn)(val#definegetbit(val,bitn)(val/使用方法:if(getbit(PINB,7)/setbit(PORTB,0);/elseclrbit(PORTB,0);/unsignedcharreadaddr
2、ess(void)unsignedcharadd=0;unsignedchari=0;clrbit(PORTC,1);setbit(PORTC,1);for(i=0;i7;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;j8;j+)/循环8次,即PA0PA7轮流闪亮,流水一遍自检PORTB=i;/按位取反,反相输出,低电平有效for(k=0;k10;k+)_delay_ms(30);/延时30*10=300毫秒,可自行调节i=i1;/左移一位while(1)add=readaddress();PORTB=add;PORTD=add;