<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR獨立按鍵C程序

          AVR獨立按鍵C程序

          作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int
          uint num1;
          #pragma data:code//定義程序存在ROM里面
          const table[]={
          0xc0,0xf9,0xa4,0xb0,0x99,
          0x92,0x82,0xf8,0x80,0x90,
          0x88,0x83,0xc6,0xa1,0x86,
          0x8e
          };
          /***********************************************/
          /*******************延時子程序******************/
          /***********************************************/
          void delay(uchar z)
          {
          uchar x,y;
          for(x=0;x<10;x++)
          for(y=0;y}
          /***********************************************/
          /*******************顯示子程序******************/
          /***********************************************/
          void xian(uint num)
          {
          uchar i;
          for(i=0;i<50;i++)//顯示速度
          {
          PORTA=table[num/1000];//千位
          PORTC&=~BIT(3);
          delay(12);
          PORTC|=BIT(3);
          PORTA=table[num%1000/100];//百位
          PORTC&=~BIT(2);
          delay(12);
          PORTC|=BIT(2);
          PORTA=table[num%100/10];//十位
          PORTC&=~BIT(1);
          delay(12);
          PORTC|=BIT(1);
          PORTA=table[num%10];//個位
          PORTC&=~BIT(0);
          delay(12);
          PORTC|=BIT(0);
          }
          }
          /***********************************************/
          /***************按鍵按下判斷子程序*************/
          /***********************************************/
          uchar key()
          {
          uchar i;//定義一個變量來存數(shù)
          DDRD&=0Xf0;//設置PD IO口為輸入方式,高4位不管
          PORTD|=0X0f;//設置IO口低4位為輸入方式且?guī)?strong>上拉電阻,即高電平
          i=PIND;//讀出IO口的狀態(tài)
          i&=0x0f;//將高4位屏蔽掉,從而得到低四位
          if(i!=0x0f)//判斷按鍵是否有按下狀態(tài)
          return 1;//當有按鍵按下時,狀態(tài)就不是0x0f,從而返回值1
          else
          return 0;//如果還是那個狀態(tài),則直接返回0
          }
          /***********************************************/
          /*******************鍵值處理子程序**************/
          /***********************************************/
          void keyy()
          {
          uchar k;//定義一個變量來存數(shù)
          if(key()==1)//如果鍵值處理函數(shù)為1則說明有按鍵按下了
          {
          delay(1);//消抖一下
          if(key()==1)//再次判斷一下
          {
          k=PIND;//讀出IO口的狀態(tài)
          k&=0x0f;//同樣將它高4位屏蔽掉
          switch(k)//來判斷具體鍵值,從而實現(xiàn)各種功能
          {
          case 0x0e:num1++;//如果低4位第1個鍵按下了,就將計數(shù)器加1
          break;//返回
          case 0x0d:num1--;//如果低4位第2個鍵按下了,就將計數(shù)器減1
          break;
          case 0x0b:num1=0;//如果低4位第3個鍵按下了,就將計數(shù)器清0
          break;
          }
          while(key()==1);//按鍵松手檢測,即如果鍵值處理程序為1則說明有鍵按下,
          //如果還有鍵按下,則一直等待。
          }
          }
          }
          /***********************************************/
          /*******************主程序*********************/
          /***********************************************/
          void main()
          {
          DDRA=0xff;//設置PA口為輸出
          DDRC=0xff;//設置PC口為輸出
          num1=1234;//計數(shù)器初值定義
          while(1)
          {
          keyy();//調(diào)用按鍵處理子程序
          xian(num1); //調(diào)用顯示子程序
          }


          關鍵詞: AVR獨立按

          評論


          技術(shù)專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();