AVR單片機外部中斷觸發的流水燈程序

2021-01-07 電子產品世界
/*programname : 外部中斷程序;

這費了我好幾個小時的心血!成功的喜悅難以用言語表達!
概述:
8位流水非精確定時,一秒循環燈閃爍,等待外部中斷一下降沿中斷觸發信號,
外部中斷一旦觸發,等待觸發按鍵彈起(此時流水燈暫停狀態),中斷按鍵一旦彈
起,繼續運行上一級程序(流水燈繼續運行);

accomplish time : 2014-2-7 22:47:15;
*/

本文引用地址:http://www.eepw.com.cn/article/201612/324372.htm


#include <avr/io.h>
#include interrupt.h> //中斷必備的頭文件;

typedef unsigned char uint8;
typedef unsigned int uint16;


void init_io() //所有io口初始化函數;
{
DDRA=0XFF;
PORTA=0X00; //PA口輸出0;

DDRB=0XFF;
PORTB=0X00; //PB口輸出0;

DDRC=0XFF;
PORTC=0X00; //PC口輸出0;

DDRD=~(1<<3); //INT1引腳設為輸入狀態;
PORTD=0XFF; //INT1引腳內部有上拉,其他引腳輸出1;

}

void delay()
{
uint16 u=0 ;
uint8 s=0;

for(s=0;s<200;s++)
{
for(u=0;u<50000;u++); //5毫秒左右;

}

}


void buzz()
{
uint16 s=0;
uint8 i=0;

PORTC|=0X80;
for(i=0;i<10;i++)
{
for(s=0;s<50000;s++);
}
PORTC&=~0X80;
}


int main(void)
{
init_io(); //初始化io口;


//* 1. 先設置好由那個引腳來觸發外部中斷, 和觸發方式;

// MCUCR 是中斷觸發模式控制寄存器;
MCUCR|=1<<3; //ISC11 被置一,其他位全部是零,代表 INT1 (外部中斷1)下降沿產生異步中斷;
//一旦 INT1 被拉低,就會進入中斷子程序;
//* 2. 開啟中斷使能位;

GICR |=0X80; // GICR是中斷使能寄存器,最高位被置一,表示外部INT1中斷使能
// (在MCUCR寄存器中,INT1被設置為下降沿異步中斷觸發方式);

sei();//全局中斷使能函數.沒有此函數,中斷將無法執行.(我不知道為什麼!或許是甲魚的屁股--規定!)

while(1)
{
PORTB|=1<<2; //使能流水燈,此時PA口為全零(流水燈全亮);

delay(); //非精確延時1秒左右;

PORTB&=~(1<<2); //關閉流水燈;

delay(); //非精確延時1秒左右;

}


}
//==================中斷服務子程序=============================

SIGNAL(SIG_INTERRUPT1) //外部中斷INT1 中斷服務子程序函數(中斷一旦被觸發,cpu將會進入此函數);
{
buzz();
while((PIND&(1<<3))==0);

}

相關焦點

  • 各種單片機中斷程序的寫法
    //////////////////// 下面是PIC單片機中斷的寫法!/324648.htmvoid main(){}void interrupt tt() //中斷服務程序,不用申明{}////////////////////////////////////////// 下面AVR單片機GCC中斷程序的寫法 ///////
  • avr單片機和stm32區別與優缺點分析
    摘要:avr單片機和stm32單片機是目前使用較廣泛的單片機,那麼avr單片機和stm32單片機有什麼區別呢?有什麼優劣勢呢?   一、AVR單片機介紹   AVR單片機是1997年由ATMEL公司研發出的增強型內置Flash的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機。可以廣泛應用於計算機外部設備、工業實時控制、儀器儀表、通訊設備、家用電器等各個領域。
  • 單片機兩級中斷嵌套的示例C程序
    單片機兩級中斷嵌套的示例C程序本文引用地址:http://www.eepw.com.cn/article/201611/320293.htm
  • 51單片機輕鬆入門與實踐 — 暢學單片機
    ,講解當前最熱門的51單片機的C程序設計!下載常見問題及解決;第3課 暢學51單片機開發學習板硬體測試1、測試說明2、單色流水燈測試3、彩色流水燈測試4、雙色燈測試5、八位數碼管測試6、1位數碼管測試7、雙色點陣測試8、LCD1602測試9、LCD12864測試10、OLED測試11、TFT彩屏顯示測試12
  • 多字節無符號二進位數除法單片機彙編程序舉例
    STC51單片機流水燈+外部中斷蜂鳴器 閒暇之餘做了一個簡單的流水燈,設計思路先將如果產生外部中斷(即按鈕按下),則8個LED燈全亮,之後又恢復流水燈狀態。
  • 51單片機外部引腳英文全稱是什麼?
    51單片機外部引腳英文全稱縮寫 英文解釋 中文解釋RXD (10--P3.0) Receive Data 串口接收端TXD (11--P3.1) Transmit Data 串口發送端PSEN (29)progammer saving
  • 結合單片機學習板學習c語言之流水燈製作--intrins.h頭文件
    目的:實現流水燈。本文引用地址:http://www.eepw.com.cn/article/201608/294948.htm  源程序:  /*本程序結合STC89C51使用,晶振12M,中間用到串口中斷子程序是利用STC單片機的自定義ISP下載功能,自定義下載命令是FEH,關於自定義下載請參考《用51單片機就用STC51,手把手教你STC51的ISP
  • AVRGCC/WinAVR編譯環境中斷函數的使用方法
    早期版本的avr-libc 對中斷服務程序的書寫提供了兩個宏SIGNAL 和INTERRUPT,並且需要包含兩個頭文件:avr/signal.h 和avr/interrupt.h。
  • 51單片機+PID算法水溫控制系統設計
    方案2:採用8031晶片,其內部沒有程序存儲器,需要進行外部拓展,這給電路增加了複雜度。   方案3:本方案的CPU模塊採用2051晶片,其內部有2KB單元的程序存儲器,不需要外部拓展程序存儲器,但由於系統用到較多的I/O口,因此此晶片的資源不夠用。
  • MSP430單片機輕鬆入門與實踐 — 暢學單片機
    ,循序漸進地基於理論講解並結合實驗項目實戰開發,講解當前最熱門的MSP430單片機的C程序設計!下載常見問題及解決第3課 暢學MSP430單片機開發學習板硬體測試1、測試說明2、單色流水燈測試3、彩色流水燈測試
  • pic單片機之中斷程序(附實例)
    什麼是中斷程序呢?形象的生活比喻就比如你現在這在看我的文章,突然你的朋友喊你一起去烤地瓜,這時候你就中斷了看文章和朋友烤地瓜去了,烤完地瓜之後你又回來看文章。烤地瓜這件事就好比中斷程序,他中斷了你看文章這件事。在程序方面來說 當CPU在執行一個程序的時候,突然產生了中斷事件CPU就去執行中斷程序了,當執行完成後CPU又回來執行原先的程序。
  • 基於單片機的ADC0809數字電壓表設計報告(彙編語言)
    當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。圖2.1 單片機引腳圖EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH ) 。 EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態。  如EA端為高電平(接VCC端),CPU則執行內部程序存儲器中的指令。
  • 51,AVR,PIC,MSP430,STM32單片機比較
    ,eeprom大,出廠時程序引導區就已經加密,並且stc解密的市面價格在1.5w到2.5w之間,可見解密難度大,在一定程度上保護了單片機工程師的利益和產品開發商的利益。生產時就已經考慮到與傳統51的兼容問題,兼容做的很好,又增加了許多功能,軟復位功能我比較喜歡。缺點:資料就是宏晶網上的資料,資料少,不適合初學者---我指學習它自己增加的功能。
  • 暢學三合一51單片機實戰教程
    ,講解當前最熱門的51單片機的C程序設計!開發板的準備工作 2、硬體連接 3、CP2102驅動的安裝4、下載燒錄程序過程5、硬體測試6、下載常見問題及解決第3課 8位單色流水燈模塊講解1、LED燈簡介及原理 2、LED燈種類及正負極 3、硬體電路講解 4、位控制點亮LED5、字節控制點亮LED6、查表點亮LED
  • 你的單片機裸機程序框架是怎樣的?
    題目大概就是:在單片機裸機開發時,單片機要處理多個任務,此時你的程序框架是怎樣的呢?這其實是個經典面試問題,我以前面試也被問過。在沒有外部事件驅動時,可以較好使用。只答出了這種情況,印象分估計會比較低,多半涼涼。
  • S12單片機模塊應用及程序下載調試
    DG128有112-pin和80-pin兩種封裝形式,80-pin封裝的單片機沒有引出用於擴展的埠,只引出了一個8路A/D接口。 常用接口模塊及外部應用     PWM(Pulse Width Modulate)模塊:PWM脈寬調製波是一種可用程序來控制波形佔空比、周期、相位的波形。它在電機驅動、D/A變換等場合有著廣泛的應用。
  • 單片機定時器工作原理_單片機定時器工作方式_單片機定時器作用
    定時器在單片機中是一個重點,今天我們來介紹一下關於單片機定時器的工作原理、工作方式以及單片機定時器的作用。      計數的脈衝如果來源於單片機內部的晶振,由於其周期極為準確,這時稱為定時器。   計數的脈衝如果來源於單片機外部的引腳,由於其周期一般不準確,這時稱為計數器。   定時/計數器方式寄存器TMOD   (1)  M1和M0:方式選擇位。   (2) c/T :功能選擇位。
  • ADC0809與51單片機的連接方式
    模數轉換器定位為單片機的外部RAM單元,因此與單片機的連接就有很多種。大體上說ADC0809在整個單片機系統中是作為外部RAM的一個單元定位的。具體到某一個連接方式,定位又有區別。
  • 淺談8051單片機進行外部數據交換的3種方式
    單片機CPU與外部設備交換信息通常有如下幾種方式:無條件傳送方式,查詢傳送方式和中斷傳送方式。我們以單片機與微型印表機接口為例講述這三種方式。假定用戶要列印三個數據,這三個數據保存在單片機的內部數據存儲器10H,11H,和12H中,8051用並口P2與微型印表機的並行數據口DB進行數據交換。
  • 單片機視頻教程
    :http://www.eepw.com.cn/article/274018.htm一、單片機視頻教程- -銳志51單片機開發板  銳志51單片機開發板視頻教程網址為:http://v.eepw.com.cn/video/playlist/id/4269  是廣大電子愛好者自學51單片機的好去處