<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)一鍵下載相關(guān)

          51單片機(jī)一鍵下載相關(guān)

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏

          void tm0() interrupt 1 using 1
          {
          if(RING)
          {
          if(--RCNT == 0)
          {
          RCNT = 3;//復(fù)位接收波特率計(jì)數(shù)器
          if(--RBIT == 0)
          {
          RBUF = RDAT;//保存數(shù)據(jù)到RBUF
          RING = 0;//停止接收
          REND = 1;//接收完成標(biāo)志
          }
          else
          {
          RDAT >>= 1;
          if(RXB)RDAT |= 0x80; //RX數(shù)據(jù)轉(zhuǎn)移到RX緩沖區(qū)
          }
          }
          }
          else if(!RXB)//是否檢測(cè)到低電平
          {
          RING = 1;//設(shè)置開始接收標(biāo)志
          RCNT = 4;//初始接收波特率計(jì)數(shù)器
          RBIT = 9;//初化始接收比特?cái)?shù)(8個(gè)數(shù)據(jù)位+1個(gè)停止位)
          }

          if(REND)
          {
          REND = 0;
          if(RBUF == 0x7F){ if(++cnt > 30)START=1; } //“0x7F”連續(xù) > 30次,則打開重啟標(biāo)志
          else cnt = 0;
          }
          }





          ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※



          用STC-ISP V6.03、STC-ISP V4.88默認(rèn)的最低波特率不同,
          懶得每次修改,
          重新寫了個(gè)程序,
          自動(dòng)適應(yīng)3種最低波特率:1200bps/2400bps/4800bps


          #define uint8unsigned char
          #define uint16 unsigned int
          #include "STC15F104E.H"

          sbit RXB= P3^4;
          sbit Key= P3^1;//自動(dòng)/手動(dòng)開關(guān)(根據(jù)需要使用)
          sbit Relay = P3^3;//繼電器
          sbit LED= P3^0;

          uint8 RBUF;//接收緩存
          uint8 RDAT;//接收數(shù)據(jù)暫存
          uint8 RCNT;//接收計(jì)數(shù)器
          uint8 RBIT;//接收比特?cái)?shù)
          bitRING;//開始接收標(biāo)志
          bitREND;//接收完成標(biāo)志

          uint8 cnt;//重啟計(jì)數(shù)器
          bitSTART; //重啟標(biāo)志

          uint16 cn;//波特率切換計(jì)數(shù)器
          uint8Status;//波特率狀態(tài)
          bitNEW;//波特率更新標(biāo)志

          void YS100ms(uint8 n)
          {
          uint8 a,b,c;
          while(n--)
          {
          for(c=89;c>0;c--)
          for(b=230;b>0;b--)
          for(a=12;a>0;a--);
          }
          }

          void UART_INIT()
          {
          RING = 0;
          REND = 0;
          RCNT = 0;

          cnt = 0;
          cn= 0;
          }

          void main()
          {
          P3M1 = 0x00;
          P3M0 = 0x09;//P3.0、P3.3推挽輸出
          Key= 1;
          Relay= 0;//斷開繼電器
          LED= 0;//關(guān)LED


          TMOD = 0x00;//T0處于16位自動(dòng)重裝模式
          AUXR = 0x80;//T0工作在1T模式
          TL0 = 0x00;//初始化Timer0和設(shè)定重載值
          TH0 = 0xFA;//默認(rèn) 2400bps @ 11.0592MHz
          TR0 = 1;
          ET0 = 1;
          PT0 = 1;//提高Timer0的中斷優(yōu)先級(jí)
          EA= 1;

          UART_INIT();

          while(1)
          {
          if(START)
          {
          START = 0;
          if(Key)
          {
          ET0 = 0;
          Relay = 1;//繼電器吸合
          LED = 1;
          YS100ms(50);//從『加載HEX』到『提示上電』有5秒
          Relay = 0;
          LED = 0;
          YS100ms(30);
          UART_INIT();
          ET0 = 1;
          }
          }

          if(NEW)
          {
          NEW = 0;
          TR0 = 0;
          if(++Status > 2)Status=0;
          switch(Status)
          {
          case 0:TL0=0x00; TH0=0xFA; // 2400bps @ 11.0592MHz
          //P31=0;P32=1;P35=1;//狀態(tài)指示燈(根據(jù)需要使用)
          break;
          case 1:TL0=0x00; TH0=0xFD; // 4800bps @ 11.0592MHz
          //P31=1;P32=0;P35=1;//狀態(tài)指示燈(根據(jù)需要使用)
          break;
          case 2:TL0=0x00; TH0=0xF4;// 1200bps @ 11.0592MHz
          //P31=1;P32=1;P35=0;//狀態(tài)指示燈(根據(jù)需要使用)
          break;
          }
          UART_INIT();
          TR0 = 1;
          }
          }
          }

          void tm0() interrupt 1
          {
          if(RING)
          {
          if(--RCNT == 0)
          {
          RCNT = 3;//復(fù)位接收波特率計(jì)數(shù)器
          if(--RBIT == 0)
          {
          RBUF = RDAT;//保存數(shù)據(jù)到RBUF
          RING = 0;//停止接收
          REND = 1;//接收完成標(biāo)志
          }
          else
          {
          RDAT >>= 1;
          if(RXB)RDAT |= 0x80; //RX數(shù)據(jù)轉(zhuǎn)移到RX緩沖區(qū)
          }
          }
          }
          else if(!RXB)//是否檢測(cè)到低電平
          {
          RING = 1;//設(shè)置開始接收標(biāo)志
          RCNT = 4;//初始接收波特率計(jì)數(shù)器
          RBIT = 9;//初化始接收比特?cái)?shù)(8個(gè)數(shù)據(jù)位+1個(gè)停止位)
          }

          if(REND)
          {
          REND = 0;
          if(RBUF == 0x7F)
          {
          cnt++;
          if(cnt > 1)cn=0;//“0x7F”連續(xù) > 1,則清切換計(jì)數(shù)器
          if(cnt > 100)START=1; //“0x7F”連續(xù) > 100,則打開重啟標(biāo)志
          }
          else cnt = 0;
          }

          if(++cn>600){ cn=0; NEW=1; }//切換計(jì)數(shù)器 > 600,則打開更新標(biāo)志
          }
          //有一舊時(shí)期的STC-ISP_4.88版的引導(dǎo)信號(hào)間隔時(shí)間有差異( 需要切換計(jì)數(shù)器 > 800 ),建議用最新時(shí)期的
          最新版本最新版本:

          (原文件名:STC免手動(dòng)燒寫+邏輯分析儀電路圖(初始版).jpg)


          (原文件名:STC免手動(dòng)燒寫+邏輯分析儀電路圖(改進(jìn)版).jpg)


          (原文件名:a.jpg)


          (原文件名:20111229019.jpg)

          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 51單片機(jī)一鍵下

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();