亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:蟲蟲下載站 > 資源下載 > 單片機編程 > AVR單片機轉速表

AVR單片機轉速表

  • 資源大小:446 K
  • 上傳時間: 2016-03-09
  • 上傳用戶:lgjdqm
  • 資源積分:2 下載積分
  • 標      簽: C語言

資 源 簡 介

/**************************************************************** 
                外部晶振8M 
                PA0~3:四位數碼管的位選 
                PB0~7:數碼管的8位段選 
                外部中斷0用于計數 
                定時器0溢出中斷的定時為1ms 
                說明 :檢測到水流較小時,繼電器延時1秒關閉 
******************************************************************/               
#include<iom16v.h>  
#include<macros.h>  
#define uchar unsigned char  
#define uint unsigned int  
  
 char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //數碼管段選  
   
 char position[4]={0xfe,0xfd,0xfb,0xf7};//數碼管位選  
   
 uint sumnum=0;  //用于記錄1000ms內進入中斷的次數  
   
 uint time=0;   //記錄進入比較定時器0的次數  
   
 uint num=0;     //記錄1ms內進入中斷的次數  
   
 uint count=0;   //進入外部中斷0的次數  
   
 uchar flag;  
   
 uint sumnum1;   //記錄100ms內的數目  
   
/***************************函數聲明***************************/  
   
 void delay();  
   
 void display(uint m );  
   
 void init();  
   
 void init_0();  
   
 void init_2();  
 void _delay_us(uint l)  
{  
     unsigned int i;  
     for(i=0;i<l;i++)  
     {  
     asm("nop");  
     }  
}  
   
   
/**************************主函數***********************************/  
  
 void main()  
{  
     init();  
     init_0();  
     init_2();  
     while(sumnum<5)  
     {  
        PORTD=0XBF;  
        segdisplay(sumnum1);  
     }  
    while(1)  
    {  
        segdisplay(sumnum1);  
    }  
       
}  
   
 /*************************掃描數碼管時的延時函數*********************/  
   
 void delay()  
 {  
      uchar i,j;  
      for(i=6;i>0;i--)  
      for(j=225;j>0;j--);  
 }  
   
 /************************數碼管顯示函數*****************************/  
   
void segdisplay( int temp)  
     {  
      int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  
      int temp1,temp2,temp3,temp4;  
      temp1=temp/1000;  
      temp2=(temp/100)%10;  
      temp3=(temp/10)%10;  
      temp4=temp%10;  
      DDRB=0xff;  
      DDRA|=0x0f;  
        PORTA=~BIT(3);  
        PORTB=seg[temp1];  
        _delay_us(100);  
        PORTA=~BIT(2);  
        PORTB=seg[temp2];  
        _delay_us(100);  
        PORTA=~BIT(1);  
        PORTB=seg[temp3];  
        _delay_us(100);  
        PORTA=~BIT(0);  
        PORTB=seg[temp4];  
        _delay_us(100);  
    }  
   
 /***********************管腳初始化函數*********************/  
   
 void init()  
 {  
        
          DDRD|=0X40;   //PD4 設置為輸出  
          PORTD=0XBF;     
          DDRA=0XFF;  
          DDRB=0XFF;  
          PORTA=0XFF;  
          PORTB=0XFF;  
 }  
   
 /***********************外部中斷0初始化*********************/  
   
 void init_0()  
 {  
      MCUCR=0X02;   //INT0為下降沿觸發  
      GICR=0X40;   //使能INT0中斷  
      SREG=0X80;  //使能總中斷  
 }  
   
 /**********************定時器2初始化***********************/  
   
 void init_2()  
 {  
      TCCR0=0x03;   // 內部時鐘,64 分頻(8M/64=125KHz)   
      TCNT0=0x83;   //裝初值    
      TIMSK=0x01;   // 允許 T/C0溢出中斷中斷    
 }  
  
  
 /***********************外部中斷0子函數********************/  
     #pragma interrupt_handler int0_isr:2  
     void int0_isr(void)  
     {  
          count++;  
     }   
    /*********************定時計數器0溢出中斷子函數*****************/  
    #pragma interrupt_handler int0_over:10   
    void int0_over(void)  
    {  
        TCNT0=0x83;   //重裝初值   
        if((time%100) == 0)  
            sumnum1 = num;  
        if(time == 1000)  
        {  
            sumnum=num;  
            if(sumnum<10)  
            {  
                  
                if((flag==1)&&(sumnum<10))  
                {  
                    PORTD=0XFF;  
                    flag=0;  
                }                 
                    flag++;  
            }  
            else  
                    PORTD=0XBF;  
            num=0;  
            time=0;  
        }  
        num+=count;  
        count=0;  
        ++time;   
    } 

相 關 資 源

主站蜘蛛池模板: 阿尔山市| 长乐市| 桓仁| 文昌市| 四川省| 岢岚县| 青铜峡市| 蒙城县| 上犹县| 新平| 正阳县| 中卫市| 柳江县| 桐梓县| 澎湖县| 尉犁县| 大丰市| 昔阳县| 宁波市| 韶山市| 辽中县| 安康市| 渭源县| 岑溪市| 桂阳县| 衡阳县| 孟津县| 小金县| 且末县| 金乡县| 哈密市| 监利县| 习水县| 黄山市| 惠来县| 翁源县| 桐柏县| 简阳市| 新邵县| 宝丰县| 都江堰市|