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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 微控制器AduC812的P1口的應(yīng)用

          微控制器AduC812的P1口的應(yīng)用

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

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

            2.3 定時(shí)器和計(jì)數(shù)器的數(shù)字輸入

            具有3個(gè)16位的定時(shí)器/計(jì)數(shù)器,即定時(shí)器0、定時(shí)器1和定時(shí)器2。定時(shí)器/計(jì)數(shù)器硬件已包含在片內(nèi),用以減輕用軟件實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器功能時(shí),處理期內(nèi)核固有的負(fù)擔(dān)。每一個(gè)定時(shí)器/計(jì)數(shù)器包含兩個(gè)8位寄存器THx和TLx(x=0、1、2)。所有3個(gè)定時(shí)器/計(jì)數(shù)器均可配置成定時(shí)器或事件計(jì)數(shù)器。

            在定時(shí)器功能中,每個(gè)機(jī)器周期TLx寄存器增量。因此可以把它看作對(duì)機(jī)器周期計(jì)數(shù)。在計(jì)數(shù)器功能中,TLx寄存器根據(jù)其對(duì)應(yīng)的外部輸入引腳T0、T1或T0上的1至0的跳變?cè)隽俊?/p>

            在口中,T2是定時(shí)器2數(shù)字輸入,輸入至定時(shí)器/計(jì)數(shù)器2。當(dāng)被使能時(shí),對(duì)應(yīng)于T2輸入的1至0的跳變,計(jì)數(shù)器2增量。T2EX是數(shù)字輸入,計(jì)數(shù)器2 Capture/reload捕獲/重載(觸發(fā)并用作計(jì)數(shù)器2 Up/Down上/下)控制輸入。在ADCCON1.1中,T2C設(shè)置定時(shí)器2轉(zhuǎn)換位,可把定時(shí)器2的溢出位用作ADC轉(zhuǎn)換起始觸發(fā)脈沖輸入。

            由于與8051有兼容的內(nèi)核,因而定時(shí)器2的原理與功能可簡(jiǎn)單地概括如下:

            AduC812中的定時(shí)器/計(jì)數(shù)器2是一個(gè)具有16位自動(dòng)重裝載或捕獲能力的定時(shí)器/計(jì)數(shù)器,T2CON是它的專用控制寄存器,如圖3所示。

            

          AduC812中的定時(shí)器/計(jì)數(shù)器

            在定時(shí)器和計(jì)數(shù)器工作方式下,都可以通過T2CON中的控制位CP/2來選擇捕獲能力或重載能力。TH2和TL2內(nèi)容的捕獲或自動(dòng)重載是通過一對(duì)捕獲/重載寄存器RCAP2H和RCAP2L實(shí)現(xiàn)的。當(dāng)CP/RL2=0時(shí),選擇自動(dòng)重裝載功能,即把RCAP2H和RCAP2L的數(shù)據(jù)自動(dòng)轉(zhuǎn)入TH2和TL2;當(dāng)C/RL2=1時(shí),選擇捕獲功能,數(shù)據(jù)傳送方向恰與上述方向相反。

            捕獲或重載發(fā)生于下面兩種情況:

            (1)定時(shí)器2的寄存器TH2和TL2溢出時(shí),若

            CP/RL2=0,則打開重裝載的三態(tài)緩沖器,把RCAP2H和RCAP2L的數(shù)據(jù)自動(dòng)轉(zhuǎn)入TH2和TL2中,同時(shí)溢出標(biāo)志位置1,申請(qǐng)中斷。

            (2)當(dāng)EXEN2=1且T2EX端的信號(hào)有負(fù)跳變時(shí),CP/RL2是0還是1,將發(fā)生捕獲操作或重載操作,同時(shí)標(biāo)志位EXF2置1,申請(qǐng)中斷。例如,利用定時(shí)器2測(cè)量周期如圖4所示。

            

          利用定時(shí)器2測(cè)量周期

            通過下面程序的運(yùn)行,定時(shí)器2的TL2、TH2定時(shí)值就是周期T的值。

            

          程序

            2.4 SPI串口選擇輸入

            AduC812提供了三種串行I/O端口:UART接口、I2C兼容的串行接口和串行外設(shè)接口(SPI)。其中,SPI接口是工業(yè)標(biāo)準(zhǔn)的同步串行接口,是一種全雙工、三線通訊的接口,它允許MCU與各種外圍設(shè)備以串行方式(8位數(shù)據(jù)同時(shí)同步地被發(fā)送和接收)進(jìn)行通信。主時(shí)鐘可以編程為不同的狀態(tài),既可編程為四種不同主波特率中的任一種,又可對(duì)時(shí)鐘的極性和相位進(jìn)行編程。SPI也可用于那些需要比微上的并行I/O端口更多輸入端或輸出端的場(chǎng)合,因而提供了一種只需使用最少的微引腳的擴(kuò)展I/O功能的最簡(jiǎn)單辦法。

            SPI系統(tǒng)通過使用4條線與多種標(biāo)準(zhǔn)外圍器件直接接口:串行時(shí)鐘線SCLOCK、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線SS(其中SS在PI口中)。

            由于AduC812中的SPI串口有主模式和從模式兩種工作模式,因此系統(tǒng)可配置為主(Master)操作或從(Slave)操作。在用戶系統(tǒng)中,AduC812既可作為主MCU,也可作為從MCU。在主模式下,伴隨每一位數(shù)據(jù)的發(fā)送/接收發(fā)送一次時(shí)鐘,此時(shí)AduC812作為主機(jī)控制數(shù)據(jù)向從外圍器件傳送。而在從模式下,每一位數(shù)據(jù)都是在接收到時(shí)鐘信號(hào)之后才發(fā)送/接收,SPI總線可在軟件的控制下構(gòu)成各種簡(jiǎn)單或復(fù)雜的系統(tǒng)。例如:1個(gè)主MCU和幾個(gè)從MCU;幾個(gè)從MCU相互連接構(gòu)成多主機(jī)系統(tǒng)(分布式系統(tǒng));1個(gè)主MCU和1個(gè)或幾個(gè)從I/O設(shè)備。在大多數(shù)場(chǎng)合中,使用1個(gè)MCU作為主機(jī),控制數(shù)據(jù)向1個(gè)或多個(gè)從外圍器件傳送。從器件只能在主機(jī)發(fā)命令下才能接收或向主機(jī)傳送數(shù)據(jù)。其數(shù)據(jù)的傳輸格式是高位(MSB)在前,低位(LSB)在后。

            SS作為從單片機(jī)的SPI輸入端,是AduC812特有的功能,通過SS將主單片機(jī)中的數(shù)據(jù)傳送到從單片機(jī),從而實(shí)現(xiàn)主單片機(jī)對(duì)從單片機(jī)的信息傳送。

            AduC812的口兼容了MCS51系列單片機(jī)的功能,而且又有著自己獨(dú)特的多種其它可實(shí)現(xiàn)的功能。這樣,在一片單片機(jī)上利用口可以實(shí)現(xiàn)盡可能多的功能。


          上一頁(yè) 1 2 3 4 下一頁(yè)

          關(guān)鍵詞: 應(yīng)用 P1 AduC812 控制器

          評(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); })();