欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

很牛逼的5個端口接25個開關-電路+程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年02月21日   【字體:

  這是一個很牛逼的程序,歷時2天成功的寫出了驅動,單片機io資源得到了最大的利用.




下面是仿真圖:

程序是基于pic單片機的,完整的源代碼下載: http://www.raoushi.com/f/5dk25.rar

#include"pic1687x.h"
#define uchar unsigned char

uchar emp_press()
{
 uchar w,n,dat=0x00;
 TRISC=0XFF;
 PORTC=0XFF;
 w=PORTC;
 if((w|0xe0)!=0xff)
   {
      if(RC4==0)
       dat=25;           

      if(RC3==0)
        dat=24;             

  if(RC2==0)
        dat=23;             

  if(RC1==0)
        dat=22;            

   if(RC0==0)
        dat=21;           }
 return dat;
}
void scan()
{

 static char n,dat,num;
   TRISC=0Xfe;
   PORTC=0Xfe;
   TRISB=0X00;

 num=PORTC;
if((~num)&(0x01<<1))dat=1 ;
else if((~num)&(0x01<<2))dat=2 ;
else if((~num)&(0x01<<3))dat=3 ;
else if((~num)&(0x01<<4))dat=4  ;

TRISC=0Xfd;
PORTC=0Xfd;
 num=PORTC;
if((~num)&(0x01<<0))dat=5 ;
else if((~num)&(0x01<<2))dat=6 ;
else if((~num)&(0x01<<3))dat=7 ;
else if((~num)&(0x01<<4))dat=8  ;
TRISC=0Xfb;
PORTC=0Xfb;
 num=PORTC;
if((~num)&(0x01<<0))dat=9 ;
else if((~num)&(0x01<<1))dat=10;
else if((~num)&(0x01<<3))dat=11 ;
else if((~num)&(0x01<<4))dat=12  ;
TRISC=0Xf7;
PORTC=0Xf7;
 num=PORTC;
if((~num)&(0x01<<0))dat=13 ;
else if((~num)&(0x01<<1))dat=14 ;
else if((~num)&(0x01<<2))dat=15 ;
else if((~num)&(0x01<<4))dat=16  ;
TRISC=0Xef;
PORTC=0Xef;
 num=PORTC;
if((~num)&(0x01<<0))dat=17 ;
else if((~num)&(0x01<<1))dat=18 ;
else if((~num)&(0x01<<2))dat=19;
else if((~num)&(0x01<<3))dat=20 ;
num=emp_press();
if(num)dat=num;
 PORTB=dat; 
for(n=0;n<100;n++);

}


void main()
{

while(1)scan();

}
關閉窗口

相關文章