日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 這個(gè)例子主要還是熟悉有關(guān)定時(shí)器A的寄存器配置以及IAR的配置方式。/***********************************************程序功能:實(shí)現(xiàn)流水燈以三種流動(dòng)方式和四種流動(dòng)速度的不同組合而進(jìn)行點(diǎn)亮"流動(dòng)"---

這個(gè)例子主要還是熟悉有關(guān)定時(shí)器A的寄存器配置以及IAR的配置方式。

  1. /***********************************************

  2. 程序功能:實(shí)現(xiàn)流水燈以三種流動(dòng)方式和四種流動(dòng)速度

  3. 的不同組合而進(jìn)行點(diǎn)亮"流動(dòng)"

  4. ------------------------------------------------

  5. 撥碼開(kāi)關(guān)設(shè)置:將LED位撥至ON,其余撥至OFF

  6. 測(cè)試說(shuō)明:觀察流水燈流動(dòng)順序和速度的變化

  7. ************************************************/

  8. #include

  9. typedefunsignedintuint;

  10. uinti=0,j=0,dir=0;

  11. uintflag=0,speed=0;//flag--燈光流動(dòng)方式,speed--燈光流動(dòng)速度

  12. /****************主函數(shù)****************/

  13. voidmain(void)

  14. {

  15. /*下面六行程序關(guān)閉所有的IO口*/

  16. P1DIR=0XFF;P1OUT=0XFF;

  17. P2DIR=0XFF;P2OUT=0XFF;

  18. P3DIR=0XFF;P3OUT=0XFF;

  19. P4DIR=0XFF;P4OUT=0XFF;

  20. P5DIR=0XFF;P5OUT=0XFF;

  21. P6DIR=0XFF;P6OUT=0XFF;

  22. WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門(mén)狗

  23. P6DIR|=BIT2;P6OUT|=BIT2;//關(guān)閉電平轉(zhuǎn)換

  24. P5OUT&=~BIT7;

  25. CCTL0=CCIE;//使能CCR0中斷

  26. CCR0=50000;

  27. TACTL=TASSEL_2+ID_3+MC_1;//定時(shí)器A的時(shí)鐘源選擇SMCLK,8分頻增計(jì)數(shù)模式

  28. P2DIR=0xff;//設(shè)置P2口方向?yàn)檩敵?/p>

  29. P2OUT=0xff;

  30. _EINT();//使能全局中斷

  31. LPM0;//CPU進(jìn)入LPM0模式各時(shí)鐘全部工作

  32. }

  33. /*******************************************

  34. 函數(shù)名稱(chēng):Timer_A

  35. 功能:定時(shí)器A的中斷服務(wù)函數(shù),在這里通過(guò)標(biāo)志

  36. 控制流水燈的流動(dòng)方向和流動(dòng)速度

  37. 參數(shù):無(wú)

  38. 返回值:無(wú)

  39. ********************************************/

  40. #pragmavector=TIMERA0_VECTOR

  41. __interruptvoidTimer_A(void)

  42. {

  43. if(flag==0)

  44. {

  45. P2OUT=~(0x80>>(i++));//燈的點(diǎn)亮順序D8->D1

  46. }

  47. elseif(flag==1)

  48. {

  49. P2OUT=~(0x01<<(i++));//燈的點(diǎn)亮順序D1->D8

  50. }

  51. else

  52. {

  53. if(dir)//燈的點(diǎn)亮順序D8->D1,D1->D8,循環(huán)繞圈

  54. {

  55. P2OUT=~(0x80>>(i++));

  56. }

  57. else

  58. {

  59. P2OUT=~(0x01<<(i++));

  60. }

  61. }

  62. if(i==8)

  63. {

  64. i=0;

  65. dir=~dir;

  66. }

  67. j++;

  68. if(j==10)

  69. {

  70. i=0;

  71. j=0;

  72. flag++;

  73. if(flag==4)flag=0;

  74. switch(speed)//根據(jù)speed的值來(lái)選擇相應(yīng)的速度,速度的選擇主要通過(guò)改變分頻來(lái)實(shí)現(xiàn)

  75. {

  76. case0:

  77. TACTL&=~(ID0+ID1);//這個(gè)地方其實(shí)沒(méi)必要,意思是清零TACTL的78兩位

  78. //ID1的值是0x0080ID2的值是0x0040通過(guò)計(jì)算就可以得出

  79. TACTL|=ID_3;//改為八分頻

  80. break;

  81. case1:

  82. TACTL&=~(ID0+ID1);

  83. TACTL|=ID_2;

  84. break;

  85. case2:

  86. TACTL&=~(ID0+ID1);

  87. TACTL|=ID_1;

  88. break;

  89. case3:

  90. TACTL&=~(ID0+ID1);

  91. TACTL|=ID_0;

  92. break;

  93. default:

  94. break;

  95. }

  96. if(flag!=3)speed++;

  97. if(speed==4)speed=0;

  98. }

  99. }



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉