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

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

发布时间:2020-05-26 发布时间:
|

/***********74HC165并入串出例子程序************/ 
//  单片机 ATmega8读取165串入的拨码开关地址     //  
// 晶振:内部1M                               //  

// Author:wanghu                             // 
// AVRGCC @2008.6.1                          // 
/**********************************************/ 

#include  
#include  

/**********定义位操作的位移宏 by wanghu********/ 
#define setbit(val, bitn) (val |=(1<#define clrbit(val, bitn) (val&=~(1<#define getbit(val, bitn) (val & (1//              setbit(PORTB,0);              // 
//        else clrbit(PORTB,0);              // 
/**********************************************/ 

unsigned char readaddress(void) 

unsigned char add=0; 
unsigned char i=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); 
return add;  


int main(void) 

unsigned char i,j,k; //定义变量 
unsigned char add=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  读  拨码开关

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

热门文章 更多
PIC单片机基础知识之二