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

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 這個(gè)程序主要部分是我改寫(xiě)的,程序把看門狗當(dāng)做普通定時(shí)器使用,在看門狗中斷中進(jìn)行數(shù)碼管掃描,另外我加入了顯示的緩沖區(qū),想在數(shù)碼管上顯示什么數(shù)字只需要對(duì)緩沖數(shù)組中的值進(jìn)行操作即可。最后加入了小

這個(gè)程序主要部分是我改寫(xiě)的,程序把看門狗當(dāng)做普通定時(shí)器使用,在看門狗中斷中進(jìn)行數(shù)碼管掃描,另外我加入了顯示的緩沖區(qū),想在數(shù)碼管上顯示什么數(shù)字只需要對(duì)緩沖數(shù)組中的值進(jìn)行操作即可。最后加入了小數(shù)點(diǎn)的操作,可以很方便的加入小數(shù)點(diǎn),程序如下:


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

  2. 程序功能:在八位數(shù)碼管上顯示任意數(shù)字

  3. -----------------------------------------------

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

  5. 測(cè)試說(shuō)明:觀察數(shù)碼管顯示

  6. ***********************************************/

  7. #include

  8. typedefunsignedcharuchar;

  9. //數(shù)碼管7位段碼:0--f

  10. ucharscandata[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

  11. 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//段碼

  12. uchardispbitcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//將端口的片選信號(hào)編碼

  13. uchardisbuf[8]={8,8,1,3,1,9,4,2};//存放要顯示的數(shù)據(jù)

  14. //記錄顯示位數(shù)的全局變量

  15. ucharcnt=0;//用來(lái)掃描計(jì)數(shù)

  16. uchardotn=2;//用來(lái)選擇第幾位后面顯示小數(shù)點(diǎn)

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

  18. voidmain(void)

  19. {

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

  21. P1DIR=0XFF;P1OUT=0XFF;

  22. P2DIR=0XFF;P2OUT=0XFF;

  23. P3DIR=0XFF;P3OUT=0XFF;

  24. P4DIR=0XFF;P4OUT=0XFF;

  25. P5DIR=0XFF;P5OUT=0XFF;

  26. P6DIR=0XFF;P6OUT=0XFF;

  27. //這里面看門狗用作普通的定時(shí)器,要來(lái)對(duì)數(shù)碼管進(jìn)行動(dòng)態(tài)掃描,如果看門狗有其他作用

  28. //可以用定時(shí)器代替

  29. WDTCTL=WDT_ADLY_1_9;//設(shè)置內(nèi)部看門狗工作在定時(shí)器模式,1.9ms中斷一次

  30. //可以去看頭文件中具體的配置,這里使用的手表晶振64分頻計(jì)算可得是1.9ms

  31. IE1|=WDTIE;//使能看門狗中斷

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

  33. P5DIR=0xff;//設(shè)置P4,P5的IO方向?yàn)檩敵?/p>

  34. P4DIR=0xff;

  35. P5OUT=0x00;//設(shè)置P4,P5的輸出初值

  36. P4OUT=0xff;

  37. _BIS_SR(LPM3_bits+GIE);//CPU進(jìn)入LPM3低功耗模式,同時(shí)打開(kāi)全局中斷

  38. //這個(gè)地方要注意LPM3低功耗模式下其他時(shí)鐘源是關(guān)閉的,只能使用ACLK時(shí)鐘源

  39. }

  40. /*******************************************

  41. 函數(shù)名稱:watchdog_timer

  42. 功能:看門狗中斷服務(wù)函數(shù),在這里輸出數(shù)碼管的

  43. 段選和位選信號(hào)

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

  45. 返回值:無(wú)

  46. ********************************************/

  47. #pragmavector=WDT_VECTOR

  48. __interruptvoidwatchdog_timer(void)

  49. {

  50. P4OUT=0xff;

  51. uchartemp;

  52. if(cnt==(dotn-1))//判斷要不要顯示小數(shù)點(diǎn)

  53. {

  54. temp=scandata[disbuf[cnt]]&0x7F;//如果要顯示的就將要顯示的段碼先進(jìn)行一步運(yùn)算

  55. P5OUT=temp;

  56. }

  57. else

  58. P5OUT=scandata[disbuf[cnt]];//輸出段選信號(hào)

  59. P4OUT^=dispbitcode[7-cnt];//輸出位選信號(hào)由于用了三極管驅(qū)動(dòng),實(shí)際是低電平選通因此翻一下。

  60. //發(fā)現(xiàn)顯示的順序是倒著的,減一下把順序正過(guò)來(lái)

  61. cnt++;//位計(jì)數(shù)變量在0~8之間循環(huán)

  62. if(cnt==8)cnt=0;

  63. }



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