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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)學(xué)習(xí)筆記外部中斷,定時(shí)器,串口中斷

          單片機(jī)學(xué)習(xí)筆記外部中斷,定時(shí)器,串口中斷

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          CPU收到中斷請(qǐng)求,停下正在處理的工作A,去處理事件B,處理完后繼續(xù)回到中斷的地方繼續(xù)執(zhí)行事件A的過程,稱為中斷

          51有5個(gè)中斷源外部中斷0定時(shí)計(jì)數(shù)中斷0外部中斷1定時(shí)繼續(xù)中斷1串口中斷

          MCS-51單片機(jī)中斷系統(tǒng)的結(jié)構(gòu):

          本文引用地址:http://www.ex-cimer.com/article/201611/318702.htm

          5個(gè)中斷源的符號(hào)、名稱及產(chǎn)生的條件如下。

          INT0:外部中斷0,由P3.2端口線引入,低電平或下跳沿引起。

          INT1:外部中斷1,由P3.3端口線引入,低電平或下跳沿引起。

          T0:定時(shí)器/計(jì)數(shù)器0中斷,由T0計(jì)滿回零引起。

          T1:定時(shí)器/計(jì)數(shù)器l中斷,由T1計(jì)滿回零引起。

          TI/RI:串行I/O中斷,串行端口完成一幀字符發(fā)送/接收后引起。





          外部中斷 引腳P3.2 P3.3

          EA=1; //全局中斷開
          EX0=1; //外部中斷0開
          IT0=0; //0為低電平觸發(fā) 1為下降沿觸發(fā)

          void ISR_Key(void) interrupt 0 using 1
          {
          P1=~P1; //進(jìn)入中斷程序執(zhí)行程序,
          //此時(shí)可以通過 EA=0指令暫時(shí)關(guān)掉中斷
          }



          定時(shí)計(jì)數(shù)器 引腳P3.4 P3.5 引腳做計(jì)數(shù)功能

          void Init_Timer0(void)
          {
          TMOD |= 0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響
          TH0=0x00; //給定初值,這里使用定時(shí)器最大值從0開始計(jì)數(shù)一直到65535溢出
          TL0=0x00;
          EA=1; //總中斷打開
          ET0=1; //定時(shí)器中斷打開
          TR0=1; //定時(shí)器開關(guān)打開
          }


          void Timer0_isr(void) interrupt 1
          {
          TH0=0x00; //重新賦值
          TL0=0x00;

          LED=~LED; //指示燈反相,可以看到閃爍

          }


          串口通訊
          并行通訊 控制簡單 8位數(shù)據(jù)線一個(gè)詢問線 一個(gè)應(yīng)答線
          線多用于短距離速度快的通訊 對(duì)硬件要求高
          串口通訊線少用于長距離傳送成本低數(shù)據(jù)一位一位的發(fā)送

          異步通訊指發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收的過程起始位0 + 8位數(shù)據(jù)位 + 結(jié)束位1
          數(shù)據(jù)以幀為單位,不要求雙方時(shí)鐘嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷小,傳輸效率不高

          單工:單方向傳送,例如遙控器
          半雙工:同一時(shí)間只能一方發(fā)一方收,例如對(duì)講機(jī)
          全雙工:可以同時(shí)數(shù)據(jù)雙向傳送。手發(fā)不影響。

          奇偶效驗(yàn):奇校驗(yàn):0000 0001 0偶校驗(yàn):0000 00011
          代碼和校驗(yàn):發(fā)送一塊數(shù)據(jù),多產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符,在代碼末尾,
          比特率:美妙傳送的二進(jìn)制代碼的位數(shù),單位是位/秒(bps)
          例如:每秒傳送240個(gè)字符, 0 1111 1111 1 10*240=2400bps

          RS232是EIA美國電子工業(yè)協(xié)會(huì)1969年修訂的標(biāo)準(zhǔn),定義了數(shù)據(jù)終端設(shè)備DTE與數(shù)據(jù)通信設(shè)備DCE之間的物理結(jié)接口標(biāo)準(zhǔn)
          RS232 規(guī)定用25針連接器,
          一般有作用的是3跟線TXDRXDSGND


          串口通訊要轉(zhuǎn)換電壓,開發(fā)板用的是MAX232把TTL電平轉(zhuǎn)換成RS232電平















          方式1,3的波特率=1/32或1/16*計(jì)時(shí)器2的溢出率
          此處有一個(gè)公式:
          波特率=1/16或1/32*(晶振的頻率/12*(256-TH1))
          代入:
          9600=11059200/32*12*(256-TH1)
          TH1=TH0=FDH

          定時(shí)器為工作方式2可自動(dòng)再裝載的8位波特率發(fā)生器

          void InitUART (void)
          {
          SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
          TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重裝
          TH1 = 0xFD; // TH1: 重裝值 9600 波特率 晶振 11.0592MHz
          TR1 = 1; // TR1: timer 1 打開
          EA = 1; //打開總中斷
          //ES = 1; //打開串口中斷
          }

          void main (void)
          {
          InitUART();
          while (1)
          {
          SendStr("UART test,技術(shù)論壇: thank you!");
          DelayMs(240);//延時(shí)循環(huán)發(fā)送
          DelayMs(240);
          }
          }
          /*------------------------------------------------
          發(fā)送一個(gè)字節(jié)
          ------------------------------------------------*/
          void SendByte(unsigned char dat)
          {
          SBUF = dat;
          while(!TI);
          TI = 0;
          }
          /*------------------------------------------------
          發(fā)送一個(gè)字符串
          ------------------------------------------------*/
          void SendStr(unsigned char *s)
          {
          while(*s!=看屁屁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); })();