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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2040|回復: 0
打印 上一主題 下一主題
收起左側

MSP430F149程序模板

[復制鏈接]
跳轉到指定樓層
樓主
可以用,電賽就是用這個東西寫了好多程序

單片機源程序如下:
  1. /*****************************************************************************\
  2. 文件名:main.c
  3. 描述:MSP430框架程序。適用于MSP430F149,其他型號需要適當改變。
  4.       不使用的中斷函數保留或者刪除都可以,但保留時應確保不要打開不需要的中斷。
  5.       保留中斷函數,編譯器將會為BSL密碼填充所有的字節。
  6. 版本:1.0        2005-1-13
  7. \*****************************************************************************/

  8. //頭文件
  9. #include <MSP430x14x.h>

  10. //函數聲明
  11. void InitSys();


  12. int main( void )
  13. {

  14.   WDTCTL = WDTPW + WDTHOLD;                     //關閉看門狗

  15.   InitSys();                                        //初始化

  16. start:
  17.   //以下填充用戶代碼


  18.         LPM3;                        //進入低功耗模式n,n:0~4。若不希望進入低功耗模式,屏蔽本句
  19.         goto start;

  20. }

  21. /*****************************************************************************
  22. 系統初始化
  23. ******************************************************************************/
  24. void InitSys()
  25. {
  26.    unsigned int iq0;

  27.         //使用XT2振蕩器
  28.    BCSCTL1&=~XT2OFF;                                             //打開XT2振蕩器
  29.    do
  30.    {
  31.                  IFG1 &= ~OFIFG;                                        // 清除振蕩器失效標志
  32.                  for (iq0 = 0xFF; iq0 > 0; iq0--);                // 延時,等待XT2起振
  33.          }
  34.          while ((IFG1 & OFIFG) != 0);                                // 判斷XT2是否起振

  35.          BCSCTL2 =SELM_2+SELS;                                        //選擇MCLK、SMCLK為XT2

  36.         //以下填充用戶代碼,對各種模塊、中斷、外圍設備等進行初始化

  37.    _EINT();        //打開全局中斷控制,若不需要打開,可以屏蔽本句
  38. }

  39. /*****************************************************************************
  40. 端口2中斷函數
  41. ******************************************************************************/
  42. #pragma vector=PORT2_VECTOR
  43. __interrupt void Port2()
  44. {
  45.         //以下為參考處理程序,不使用的端口應當刪除其對于中斷源的判斷。
  46.         if((P2IFG&BIT0) == BIT0)
  47.         {
  48.                 //處理P2IN.0中斷
  49.                 P2IFG &= ~BIT0; //清除中斷標志
  50.                 //以下填充用戶代碼

  51.         }
  52.         else if((P2IFG&BIT1) ==BIT1)
  53.         {
  54.                 //處理P2IN.1中斷
  55.                 P2IFG &= ~BIT1;        //清除中斷標志
  56.                 //以下填充用戶代碼

  57.         }
  58.         else if((P2IFG&BIT2) ==BIT2)
  59.         {
  60.                 //處理P2IN.2中斷
  61.                 P2IFG &= ~BIT2;        //清除中斷標志
  62.                 //以下填充用戶代碼

  63.         }
  64.         else if((P2IFG&BIT3) ==BIT3)
  65.         {
  66.                 //處理P2IN.3中斷
  67.                 P2IFG &= ~BIT3;        //清除中斷標志
  68.                 //以下填充用戶代碼

  69.         }
  70.         else if((P2IFG&BIT4) ==BIT4)
  71.         {
  72.                 //處理P2IN.4中斷
  73.                 P2IFG &= ~BIT4;        //清除中斷標志
  74.                 //以下填充用戶代碼

  75.         }
  76.         else if((P2IFG&BIT5) ==BIT5)
  77.         {
  78.                 //處理P2IN.5中斷
  79.                 P2IFG &= ~BIT5;        //清除中斷標志
  80.                 //以下填充用戶代碼

  81.         }
  82.         else if((P2IFG&BIT6) ==BIT6)
  83.         {
  84.                 //處理P2IN.6中斷
  85.                 P2IFG &= ~BIT6;        //清除中斷標志
  86.                 //以下填充用戶代碼

  87.         }
  88.         else
  89.         {
  90.                 //處理P2IN.7中斷
  91.                 P2IFG &= ~BIT7;        //清除中斷標志
  92.                 //以下填充用戶代碼

  93.         }

  94.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  95. }

  96. /*****************************************************************************
  97. USART1發送中斷函數
  98. ******************************************************************************/
  99. #pragma vector=USART1TX_VECTOR
  100. __interrupt void Usart1Tx()
  101. {
  102.         //以下填充用戶代碼


  103.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  104. }

  105. /*****************************************************************************
  106. USART1接收中斷函數
  107. ******************************************************************************/
  108. #pragma vector=USART1RX_VECTOR
  109. __interrupt void Ustra1Rx()
  110. {
  111.         //以下填充用戶代碼


  112.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  113. }

  114. /*****************************************************************************
  115. 端口1中斷函數
  116. 多中斷中斷源:P1IFG.0~P1IFG7
  117. 進入中斷后應首先判斷中斷源,退出中斷前應清除中斷標志,否則將再次引發中斷
  118. ******************************************************************************/
  119. #pragma vector=PORT1_VECTOR
  120. __interrupt void Port1()
  121. {
  122.         //以下為參考處理程序,不使用的端口應當刪除其對于中斷源的判斷。
  123.         if((P1IFG&BIT0) == BIT0)
  124.         {
  125.                 //處理P1IN.0中斷
  126.                 P1IFG &= ~BIT0;        //清除中斷標志
  127.                 //以下填充用戶代碼

  128.         }
  129.         else if((P1IFG&BIT1) ==BIT1)
  130.         {
  131.                 //處理P1IN.1中斷
  132.                 P1IFG &= ~BIT1;        //清除中斷標志
  133.                 //以下填充用戶代碼

  134.         }
  135.         else if((P1IFG&BIT2) ==BIT2)
  136.         {
  137.                 //處理P1IN.2中斷
  138.                 P1IFG &= ~BIT2;        //清除中斷標志
  139.                 //以下填充用戶代碼

  140.         }
  141.         else if((P1IFG&BIT3) ==BIT3)
  142.         {
  143.                 //處理P1IN.3中斷
  144.                 P1IFG &= ~BIT3;        //清除中斷標志
  145.                 //以下填充用戶代碼

  146.         }
  147.         else if((P1IFG&BIT4) ==BIT4)
  148.         {
  149.                 //處理P1IN.4中斷
  150.                 P1IFG &= ~BIT4;        //清除中斷標志
  151.                 //以下填充用戶代碼

  152.         }
  153.         else if((P1IFG&BIT5) ==BIT5)
  154.         {
  155.                 //處理P1IN.5中斷
  156.                 P1IFG &= ~BIT5;        //清除中斷標志
  157.                 //以下填充用戶代碼

  158.         }
  159.         else if((P1IFG&BIT6) ==BIT6)
  160.         {
  161.                 //處理P1IN.6中斷
  162.                 P1IFG &= ~BIT6;        //清除中斷標志
  163.                 //以下填充用戶代碼

  164.         }
  165.         else
  166.         {
  167.                 //處理P1IN.7中斷
  168.                 P1IFG &= ~BIT7;        //清除中斷標志
  169.                 //以下填充用戶代碼

  170.         }

  171.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  172. }

  173. /*****************************************************************************
  174. 定時器A中斷函數
  175. 多中斷中斷源:CC1~2 TA
  176. ******************************************************************************/
  177. #pragma vector=TIMERA1_VECTOR
  178. __interrupt void TimerA1()
  179. {
  180.         //以下為參考處理程序,不使用的中斷源應當刪除
  181.         switch (__even_in_range(TAIV, 10))
  182.         {
  183.                 case 2:
  184.                         //捕獲/比較1中斷
  185.                         //以下填充用戶代碼

  186.                 break;
  187.                 case 4:
  188.                         //捕獲/比較2中斷
  189.                         //以下填充用戶代碼

  190.                 break;
  191.                 case 10:
  192.                         //TAIFG定時器溢出中斷
  193.                         //以下填充用戶代碼

  194.                 break;
  195.         }


  196.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  197. }

  198. /*****************************************************************************
  199. 定時器A中斷函數
  200. 中斷源:CC0
  201. ******************************************************************************/
  202. #pragma vector=TIMERA0_VECTOR
  203. __interrupt void TimerA0()
  204. {
  205.         //以下填充用戶代碼


  206.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  207. }

  208. /*****************************************************************************
  209. AD轉換器中斷函數
  210. 多中斷源:摸擬0~7、VeREF+、VREF-/VeREF-、(AVcc-AVss)/2
  211. 沒有處理ADC12TOV和ADC12OV中斷標志
  212. ******************************************************************************/
  213. #pragma vector=ADC_VECTOR
  214. __interrupt void Adc()
  215. {
  216.         //以下為參考處理程序,不使用的中斷源應當刪除
  217.         if((ADC12IFG&BIT0)==BIT0)
  218.         {
  219.                 //通道0
  220.                 //以下填充用戶代碼

  221.         }
  222.         else if((ADC12IFG&BIT1)==BIT1)
  223.         {
  224.                 //通道1
  225.                 //以下填充用戶代碼

  226.         }
  227.         else if((ADC12IFG&BIT2)==BIT2)
  228.         {
  229.                 //通道2
  230.                 //以下填充用戶代碼

  231.         }
  232.         else if((ADC12IFG&BIT3)==BIT3)
  233.         {
  234.                 //通道3
  235.                 //以下填充用戶代碼

  236.         }
  237.         else if((ADC12IFG&BIT4)==BIT4)
  238.         {
  239.                 //通道4
  240.                 //以下填充用戶代碼

  241.         }
  242.         else if((ADC12IFG&BIT5)==BIT5)
  243.         {
  244.                 //通道5
  245.                 //以下填充用戶代碼

  246.         }
  247.         else if((ADC12IFG&BIT6)==BIT6)
  248.         {
  249.                 //通道6
  250.                 //以下填充用戶代碼

  251.         }
  252.         else if((ADC12IFG&BIT7)==BIT7)
  253.         {
  254.                 //通道7
  255.                 //以下填充用戶代碼

  256.         }
  257.         else if((ADC12IFG&BIT8)==BIT8)
  258.         {
  259.                 //VeREF+
  260.                 //以下填充用戶代碼

  261.         }
  262.         else if((ADC12IFG&BIT9)==BIT9)
  263.         {
  264.                 //VREF-/VeREF-
  265.                 //以下填充用戶代碼

  266.         }
  267.         else if((ADC12IFG&BITA)==BITA)
  268.         {
  269.                 //溫度
  270.                 //以下填充用戶代碼

  271.         }
  272.         else if((ADC12IFG&BITB)==BITB)
  273.         {
  274.                 //(AVcc-AVss)/2
  275.                 //以下填充用戶代碼

  276.         }

  277.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  278. }

  279. /*****************************************************************************
  280. USART0發送中斷函數
  281. ******************************************************************************/
  282. #pragma vector=USART0TX_VECTOR
  283. __interrupt void Usart0Tx()
  284. {
  285.         //以下填充用戶代碼


  286.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  287. }

  288. /*****************************************************************************
  289. USART0接收中斷函數
  290. ******************************************************************************/
  291. #pragma vector=USART0RX_VECTOR
  292. __interrupt void Usart0Rx()
  293. {
  294.         //以下填充用戶代碼


  295.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  296. }

  297. /*****************************************************************************
  298. 看門狗定時器中斷函數
  299. ******************************************************************************/
  300. #pragma vector=WDT_VECTOR
  301. __interrupt void WatchDog()
  302. {
  303.         //以下填充用戶代碼


  304.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  305. }

  306. /*****************************************************************************
  307. 比較器A中斷函數
  308. ******************************************************************************/
  309. #pragma vector=COMPARATORA_VECTOR
  310. __interrupt void ComparatorA()
  311. {
  312.         //以下填充用戶代碼


  313.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  314. }

  315. /*****************************************************************************
  316. 定時器B中斷函數
  317. 多中斷源:CC1~6 TB
  318. ******************************************************************************/
  319. #pragma vector=TIMERB1_VECTOR
  320. __interrupt void TimerB1()
  321. {
  322.         //以下為參考處理程序,不使用的中斷源應當刪除
  323.         switch (__even_in_range(TBIV, 14))
  324.         {
  325.                 case 2:
  326.                         //捕獲/比較1中斷
  327.                         //以下填充用戶代碼

  328.                 break;
  329.                 case 4:
  330.                         //捕獲/比較2中斷
  331.                         //以下填充用戶代碼

  332.                 break;
  333.                 case 6:
  334.                         //捕獲/比較3中斷
  335.                         //以下填充用戶代碼

  336.                 break;
  337.                 case 8:
  338.                         //捕獲/比較4中斷
  339.                         //以下填充用戶代碼

  340.                 break;
  341.                 case 10:
  342.                         //捕獲/比較5中斷
  343.                         //以下填充用戶代碼

  344.                 break;
  345.                 case 12:
  346.                         //捕獲/比較6中斷
  347.                         //以下填充用戶代碼

  348.                 break;
  349.                 case 14:
  350.                         //TBIFG定時器溢出中斷
  351.                         //以下填充用戶代碼

  352.                 break;
  353.         }

  354.         LPM3_EXIT;        //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
  355. }

  356. /*****************************************************************************
  357. 定時器B中斷函數
  358. ……………………

  359. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei附件下載:
MSP430框架程序.zip (130.77 KB, 下載次數: 22)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女福利网站 | 久久久久久久久久性 | 国产性网| 欧美一区二区三区高清视频 | 欧美久久久网站 | 免费黄色成人 | av二区三区 | 久久国产婷婷国产香蕉 | 精品国产乱码久久久久久a丨 | 国产一二区视频 | 嫩草影院黄| 在线三级电影 | 99精品视频免费观看 | 午夜精品一区二区三区免费视频 | 视频一区二区中文字幕日韩 | 欧美一区二区三区在线看 | 国产传媒 | 中文字幕成人在线 | 国产一区二 | 免费成人高清 | 九色网址 | 欧美色欧美亚洲另类七区 | 国产精品久久久久久福利一牛影视 | 亚洲在线观看视频 | 久久精品中文字幕 | 91看片网址 | 91不卡| 国产一区二区三区视频在线观看 | www国产成人免费观看视频,深夜成人网 | 免费一级毛片 | 亚洲第一天堂 | 九九导航 | 欧美激情精品久久久久久变态 | 久久一区二区三区免费 | 天天看天天操 | 青青艹在线视频 | 成人啊啊啊 | 国产乱码精品一区二区三区五月婷 | 久久久青草 | 国产精品久久久久久亚洲调教 | av影音在线 |