在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

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

            本文引用地址:http://www.biyoush.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; //全局中斷開(kāi)
            EX0=1; //外部中斷0開(kāi)
            IT0=0; //0為低電平觸發(fā) 1為下降沿觸發(fā)

            void ISR_Key(void) interrupt 0 using 1
            {
            P1=~P1; //進(jìn)入中斷程序執(zhí)行程序,
            //此時(shí)可以通過(guò) 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開(kāi)始計(jì)數(shù)一直到65535溢出
            TL0=0x00;
            EA=1; //總中斷打開(kāi)
            ET0=1; //定時(shí)器中斷打開(kāi)
            TR0=1; //定時(shí)器開(kāi)關(guān)打開(kāi)
            }


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

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

            }


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

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

            單工:?jiǎn)畏较騻魉?,例如遙控器
            半雙工:同一時(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美國(guó)電子工業(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)換電壓,開(kāi)發(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 打開(kāi)
            EA = 1; //打開(kāi)總中斷
            //ES = 1; //打開(kāi)串口中斷
            }

            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!=