久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

AVR獨立按鍵C程序

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

#include<iom16v.h>
#include<macros.h>
#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<z;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;//定義一個變量來存數
 DDRD&=0Xf0;//設置PD IO口為輸入方式,高4位不管
 PORTD|=0X0f;//設置IO口低4位為輸入方式且帶上拉電阻,即高電平
 i=PIND;//讀出IO口的狀態
 i&=0x0f;//將高4位屏蔽掉,從而得到低四位
 if(i!=0x0f)//判斷按鍵是否有按下狀態
 return 1;//當有按鍵按下時,狀態就不是0x0f,從而返回值1
 else
 return 0;//如果還是那個狀態,則直接返回0
}
/***********************************************/
/*******************鍵值處理子程序**************/
/***********************************************/
void keyy()
{
  uchar k;//定義一個變量來存數
 if(key()==1)//如果鍵值處理函數為1則說明有按鍵按下了
 {
   delay(1);//消抖一下
  if(key()==1)//再次判斷一下
  {
    k=PIND;//讀出IO口的狀態
   k&=0x0f;//同樣將它高4位屏蔽掉
   switch(k)//來判斷具體鍵值,從而實現各種功能
   {
     case 0x0e:num1++;//如果低4位第1個鍵按下了,就將計數器加1
    break;//返回
     case 0x0d:num1--;//如果低4位第2個鍵按下了,就將計數器減1
    break;
     case 0x0b:num1=0;//如果低4位第3個鍵按下了,就將計數器清0
    break;
   }
   while(key()==1);//按鍵松手檢測,即如果鍵值處理程序為1則說明有鍵按下,
   //如果還有鍵按下,則一直等待。
  }
 }
}
/***********************************************/
/*******************主程序*********************/
/***********************************************/
void main()
{
   DDRA=0xff;//設置PA口為輸出
  DDRC=0xff;//設置PC口為輸出
  num1=1234;//計數器初值定義
  while(1)
  {
    keyy();//調用按鍵處理子程序
  xian(num1); //調用顯示子程序
 }

關閉窗口

相關文章

主站蜘蛛池模板: 国产精品欧美一区喷水 | 亚洲视频在线观看 | 一区二区三区精品 | 五月天激情综合网 | 国产精品影视 | 欧美一区二区在线播放 | 中文字幕一区二区三区不卡 | 国产成人精品久久久 | 国产日韩电影 | 97精品久久 | 日韩欧美国产精品一区二区三区 | 国产精品日韩一区二区 | 欧美日韩精品在线一区 | 91亚洲精品国偷拍自产在线观看 | 国产一区二区在线播放 | 国产成人综合亚洲欧美94在线 | 超碰欧美 | 国产精品成人一区二区三区夜夜夜 | 成人精品视频99在线观看免费 | 久久久久久久久久久久久久久久久久久久 | 久久精品亚洲 | 亚洲网站在线观看 | 999热视频| 亚洲国产免费 | 久久大陆 | 91精品久久久久久久久 | 91精品国产自产在线老师啪 | 久久久久国产精品 | 天天射网站 | 国产精品久久久久免费 | 人人色视频| 黄色av观看 | 久久精品 | 黑人精品欧美一区二区蜜桃 | 久久精品欧美一区二区三区不卡 | 成人精品久久日伦片大全免费 | 蜜桃视频在线观看www社区 | www.日日干| 黄片毛片免费看 | 国内精品成人 | 国产在线观看一区二区 |