MSP430之點燈入門

来源:http://www.cnblogs.com/huayangblogs/archive/2016/06/20/5601723.html
-Advertisement-
Play Games

MSP430 ...


/***************************************************
程式功能:控制8個LED閃爍,控制燈的流向以及流速
---------------------------------------------------
***************************************************/
#include<msp430x14x.h>

  /*下麵關閉所有的IO口*/
#define close_IO P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF;P3DIR = 0XFF;P3OUT = 0XFF;P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF;    P6DIR = 0XFF;P6OUT = 0XFF;

typedef unsigned int  uint;

uint i = 0,j = 0,dir = 0;
uint flag = 0,speed = 0;  //flag--燈光流動方式,speed--燈光流動速度

/****************主函數****************/
void main(void)
{
    void P_setting();
    close_IO;
    P_setting();
    _EINT();                        //使能全局中斷
    LPM0;                           //CPU進入LPM0模式
}
/*將設置進行封裝*/
void P_setting(void){
 
    WDTCTL = WDTPW + WDTHOLD;       //關閉看門狗
    P6DIR |= BIT2;P6OUT |= BIT2;    //關閉電平轉換
    P5OUT &= ~BIT7;
    CCTL0 = CCIE;                   //使能CCR0中斷
    CCR0 = 50000;
    
    TACTL = TASSEL_2 + ID_3 + MC_1; //定時器A的時鐘源選擇SMCLK,增計數模式
    P2DIR = 0xff;                   //設置P2口方向為輸出
    P2OUT = 0xff;
    
    }

/*******************************************
函數名稱:Timer_A
功    能:定時器A的中斷服務函數,在這裡通過標誌
          控制流水燈的流動方向和流動速度
********************************************/

#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
    if(flag == 0)
    {
        P2OUT = ~(0x80>>(i++));    //燈的點亮順序D8 -> D1
    }
    else if(flag == 1)
    {
        P2OUT = ~(0x01<<(i++));    //燈的點亮順序D1 -> D8
    }
    else
    {
        if(dir)                   //燈的點亮順序  D8 -> D1,D1 -> D8,迴圈繞圈                        
        {
            P2OUT = ~(0x80>>(i++));
        }
        else
        {
            P2OUT = ~(0x01<<(i++));
        }
    }
 
    if(i == 8)
    {
        i = 0;
        dir = ~dir;
    }
 
    j++;
    if(j == 40)
    {
        i = 0;
        j = 0;
        flag++;
        if(flag == 4) flag = 0;
        switch(speed)
        {
        case 0:
            TACTL &=~ (ID0 + ID1);    //增計數模式
            TACTL |= ID_3;            //8分頻
            break;
        case 1:
            TACTL &=~ (ID0 + ID1);
            TACTL |= ID_2;              //4分頻
            break;
        case 2:
            TACTL &=~ (ID0 + ID1);
            TACTL |= ID_1;               //2分頻
            break;
        case 3:
            TACTL &=~ (ID0 + ID1);
            TACTL |= ID_0;              //1分頻
            break;
        default:
            break;
        }
        if(flag != 3)   speed++;
        if(speed == 4) speed = 0;
    }
}

《經過測試適用於f149系列》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、安裝nodejs的jshint安裝Node.js環境安裝nodejs的jshint[4] csshint二、sublime中的jshint安裝配置方式一、 使用Sublimelinter,支持css等多種語言驗證方式二、使用Sublime JSHint Gutter,僅支持js驗證三、jshin... ...
  • 在Linux系統中,如何找到用戶創建的時間呢? 其實是沒有標準方法查找用戶創建時間。下麵再搜索了一些資料後,自己驗證並測試了一下這些方法,僅供參考: 1:如果創建的用戶有家目錄,那麼可以ls -l /home//.bash_logout 來找到用戶的創建時間。 [root@DB-Server ~]#... ...
  • 全新的windows10系統帶來了不少新的特性和改變,其中win10的計算器位置就發生了很多的變化,導致很多網友們都以為win10計算器不見了,那麼,win10計算器在哪裡?如何打開?針對此問題,本文就為大家進行解答 http://hovertree.com/menu/windows/ 七月底,微軟 ...
  • 創建 取消 縮寫使用 insert模式下輸入縮寫,Enter鍵獲得pharse。 ...
  • 一、簡單文件系統操作 : df ( h) 查看磁碟容量; rootfs作為系統啟動時內核載入記憶體之後,在掛載真正的磁碟之前的一個臨時文件系統; /dev/sda2 對應主機硬碟的分區,後面的a表示第幾塊硬碟,2表示分區; du查看目錄的容量, h更易讀的方式展示(預設以blocks的大小展示), d ...
  • linux系統通過setup命令可以調用圖形界面來配置網路,該命令只要centos等版本才有。 ...
  • 游標控制 文件操作 :w 寫文件 :w! 寫文件,忽略警告信息:wq 寫文件之後退出編輯:q 退出編輯器:q! 強制退出編輯器ZZ 退出編輯器,如果文件有改動,則保存再退出:x 退出編輯器,如果文件有改動,則保存再退出:e! 重新從磁碟載入文件:n 編輯地下一行:n! 編輯地下一行(忽略警告) 內容 ...
  • 目前我知道的方法有四種 1.awk 'END {print}' 2.sed -n '$p' 3.sed '$!N;$!D' 4.awk '{b=a"\n"$0;a=$0}END{print b}' ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...