<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    MSP430與DS18B20的C程序

    發布時間:2008-10-22 21:53    發布者:MSP430
    關鍵詞: MSP430 , DS18B20 , C程序
    #include //#define DELTA 256 // target DCO = DELTA*(4096) = 1048576 #define DELTA 244 // target DCO = DELTA*(4096) = 1048576 unsigned char err_flag=0; //unsigned char result=0; //unsigned char result1=0; unsigned int result=0; unsigned int result1=0; void Set_DCO (void); void delay(unsigned int dd); void delay1(unsigned char dd1); void reset(void); void write_command(unsigned char command); //unsigned char read_data(void); unsigned int read_data(void); void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT Set_DCO(); // Set DCO /*P1DIR |= 0x01; // Set P1.0 to output direction for (; { P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR delay(250000); }*/ P1OUT |= BIT4; P1DIR |= BIT4; while(1) { reset(); write_command(0xcc); write_command(0x44); delay1(6); reset(); write_command(0xcc); write_command(0xBE); result = read_data(); reset(); write_command(0xcc); write_command(0xBE); result1 = read_data(); _NOP(); result = 0; } } void reset(void) { P1OUT &= ~BIT4; delay(150); P1DIR &= ~BIT4; //************************ /*delay(3); delay(15); if(P1IN&BIT4) {err_flag = 1;} else err_flag =0;*/ //***************************** delay(9); if(P1IN&BIT4) {err_flag = 1;} else err_flag =0; delay(125); P1OUT |= BIT4; P1DIR |= BIT4; } void write_command(unsigned char command) { unsigned char i; for(i=0;i<8;i++) { P1OUT &= ~BIT4; if(command&0x01) { //delay(2); _NOP(); _NOP(); _NOP(); _NOP(); //P1OUT |= BIT4; P1DIR &= ~BIT4; } command=command>>1; //delay(15); delay(20); //P1OUT |= BIT4; P1DIR &= ~BIT4; delay(3); P1OUT |= BIT4; P1DIR |= BIT4; } } //unsigned char read_data(void) unsigned int read_data(void) { //unsigned char data=0,i; unsigned int data=0,i; //data = 0; for(i=0;i<8;i++) //for(i=0;i<16;i++) { P1OUT &= ~BIT4; _NOP(); _NOP(); _NOP(); P1DIR &= ~BIT4; _NOP(); if(P1IN&BIT4) //{data |= 0x80;} {data |= 0x0001;} data = data<<1; delay(23); P1OUT |= BIT4; P1DIR |= BIT4; } return data; } void delay(unsigned int dd) { unsigned int i; for(i=0;i } void delay1(unsigned char dd1) { unsigned char i; for(i=0;i { delay(50000); } } //------------------------------------------------------------------------------ void Set_DCO (void) // Set DCO to selected frequency //------------------------------------------------------------------------------ { //#define DELTA 900 // target DCO = DELTA*(4096) = 3686400 //#define DELTA 256 // target DCO = DELTA*(4096) = 1048576 //#define DELTA 64 // target DCO = DELTA*(4096) = 262144 unsigned int Compare, ldcapture = 0; BCSCTL1 |= DIVA_3; // ACLK= LFXT1CLK/8 CCTL2 = CM_1 + CCIS_1 + CAP; // CAP, ACLK TACTL = TASSEL_2 + MC_2 + TACLR; // SMCLK, cont-mode, clear while (1) { while (!(CCIFG & CCTL2)); // Wait until capture occured CCTL2 &= ~CCIFG; // Capture occured, clear flag Compare = CCR2; // Get current captured SMCLK Compare = Compare - Oldcapture; // SMCLK difference ldcapture = CCR2; // Save current captured SMCLK if (DELTA == Compare) break; // If equal, leave "while(1)" else if (DELTA < Compare) // DCO is too fast, slow it down { DCOCTL--; if (DCOCTL == 0xFF) BCSCTL1--; // Did DCO role under?, Sel lower RSEL } else { DCOCTL++; if (DCOCTL == 0x00) BCSCTL1++; // Did DCO role over? Sel higher RSEL } } CCTL2 = 0; // Stop CCR2 TACTL = 0; // Stop Timer_A BCSCTL1 &= ~DIVA_3; }
    本文地址:http://www.portaltwn.com/thread-2864-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • 利用模擬開發工具生態系統進行安全電路設計
    • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
    • 想要避免發生災難,就用MPLAB SiC電源仿真器!
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關在線工具

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷