STC12C5A60S2單片機(jī)內(nèi)部ADC只有一個(gè),雖然外部可以用P1口的8個(gè)腳,作8個(gè)通道的輸入,但在采集數(shù)據(jù)時(shí),只能開通一個(gè)通道,不允許8個(gè)通道都開的,所以,會(huì)互相影響的。
如果是單獨(dú)使用的話都可以正常工作,就應(yīng)該是每個(gè)都要單獨(dú)用的。所以,兩個(gè)通道都用,也要按單獨(dú)使用那樣來轉(zhuǎn)換。
就算是8個(gè)通道都用,也不可能是同時(shí)轉(zhuǎn)換的,也要切換每一個(gè)通道分時(shí)轉(zhuǎn)換的。
1.串行口1的控制寄存器SCON和PCON
STC12C5A60S2系列單片機(jī)的串行口1設(shè)有兩個(gè)控制寄存器: 串行控制寄存器SCON和波特率選擇特殊功能寄存器PCON。
串行控制寄存器SCON用于選擇串行通信的工作方式和某些控制功能。其格式如下:SCON: 串行控制寄存器(可位尋址)
SMO/FE: 當(dāng)PCON寄存器中的SMODO/PCON.6位為1時(shí),該位用于幀錯(cuò)誤檢測(cè)。當(dāng)檢測(cè)到一個(gè)無效停止位時(shí),通過UART接收器設(shè)置該位。它必須由軟件清零。
當(dāng)PCON寄存器中的SMODO/PCON.6位為0時(shí),該位和SM1一起指定串行通信的工作方式,如下表所示。
2.其中SMO、SM1按下列組合確定串行口1的工作方式:
SM2: 允許方式2或方式3 多機(jī)通信控制位。在方式2或方式3時(shí),如果SM2位為1且REN位為1,則接收機(jī)處于地址幀篩選狀態(tài)。此時(shí)可以利用接收到的第9位(即RB8)來篩選地址幀: 若RB8=1,說明該幀是地址幀,地址信息可以進(jìn)入SBUF,并使RI為1,進(jìn)而在中斷服務(wù)程序中再進(jìn)行地址號(hào)比較; 若RB8=0,說明該幀不是地址幀,應(yīng)丟掉且保持RI=0。在方式2或方式3中,如果SM2位為0且REN位為1,接收收機(jī)處于地址幀篩選被禁止?fàn)顟B(tài)。不論收到的RB8為0或1,均可使接收到的信息進(jìn)入SBUF,并使RI=1,此時(shí)RB8通常為校驗(yàn)位。方式1和方式0是非多機(jī)通信方式,在這兩種方式時(shí),要設(shè)置SM2 應(yīng)為O.
REN; 允許禁止串行接收控制位。由軟件置位REN,即REN=1為允許串行接收狀態(tài),可啟動(dòng)串行接收器RxD,開始接收信息。軟件復(fù)位REN,即REN=0,則禁止接收。
TB8: 在方式2或方式3,它為要發(fā)送的第9位數(shù)據(jù),按需要由軟件置位或清0。例如,可用作數(shù)據(jù)的校驗(yàn)位或多機(jī)通信中表示地址幀數(shù)據(jù)幀的標(biāo)志位。在方式0和方式1中,該位不用。
RB8:; 在方式2或方式3,是接收到的第9位數(shù)據(jù),作為奇偶校驗(yàn)位或地址幀‘?dāng)?shù)據(jù)幀的標(biāo)志位。方式0中不用RB8(置SM2=0)。方式1中也不用RB8(置SM2=0,RB8是接收到的停止位)。
TI:發(fā)送中斷請(qǐng)求中斷標(biāo)志位。在方式0,當(dāng)串行發(fā)送數(shù)據(jù)第8位結(jié)束時(shí),由內(nèi)部硬件自動(dòng)置位,即TI=1,向主機(jī)請(qǐng)求中斷,響應(yīng)中斷后TI必須用軟件清零,即TI=0。在其他方式中,則在停止位開始發(fā)送時(shí)由內(nèi)部硬件置位,即TI=1,響應(yīng)中斷后TI必須用軟件清零。
RI:接收中斷請(qǐng)求標(biāo)志位。在方式0,當(dāng)串行接收到第8位結(jié)束時(shí)由內(nèi)部硬件自動(dòng)置位RI=1,向主機(jī)請(qǐng)求中斷,響應(yīng)中斷后RI必須用軟件清零,即RI=0。在其他方式中,串行接收到停止位的中間時(shí)刻由內(nèi)部硬件置位,即RI=1,向CPU發(fā)中斷申請(qǐng),響應(yīng)中斷后RI必須由軟件清零。
SCON的所有位可通過整機(jī)復(fù)位信號(hào)復(fù)位為全“0”。SCON的字節(jié)地址為98H,可位尋址,各位地址為98H~~9FH,可用軟件實(shí)現(xiàn)位設(shè)置。
串行通信的中斷請(qǐng)求: 當(dāng)一幀發(fā)送完成,內(nèi)部硬件自動(dòng)置位TI,即TI=1,請(qǐng)求中斷處理;當(dāng)接收完一幀信息時(shí),內(nèi)音硬件自動(dòng)置位RI,即RI=1,請(qǐng)求中斷處理。由于TI和RI以“或邏輯”關(guān)系向主機(jī)請(qǐng)求中斷,所以主機(jī)響應(yīng)中斷時(shí)事先并不知道是TI還是RI請(qǐng)求的中斷,必須在中斷服務(wù)程序中查詢TI和RI進(jìn)行判別,然后分別處理。因此,兩個(gè)中斷請(qǐng)求標(biāo)志位均不能由硬件自動(dòng)置位,必須通過軟件清0,否則將出現(xiàn)一次請(qǐng)求多次響應(yīng)的錯(cuò)誤。
電源控制寄存器PCON中的SMOD/PCON.7用于設(shè)置方式1、方式2、方式3的波特率是否加倍。
電源控制寄存器PCON格式如下:
PCON: 電源控制寄存器(不可位尋址)
SMOD: 波特率選擇位。當(dāng)用軟件置位SMOD,即SMOD=1,則使串行通信方式1.2、3的波特率加倍; SMOD=0,則各工作方式的波特率加倍。復(fù)位時(shí)SMOD=0。
SMODO: 幀錯(cuò)誤檢測(cè)有效控制位。當(dāng)SMOD0=1,SCON寄存器中的SMO/FE位用于FE(幀錯(cuò)誤檢測(cè)) 功能;當(dāng)SMOD0=0,SCON寄存器中的SMO/FE位用于SMO功能,和SM1一起指定串行口的工作方式。復(fù)位時(shí)SMOD0=01]山
3.輔助寄存器AUXR
輔助寄存器AUXR的格式及各位含義如下:
AUXR: 輔助寄存器(不可位尋址)
TOx12; 定時(shí)器0速度設(shè)置位
0,定時(shí)器0是傳統(tǒng)8051速度,12 分頻;
1,定時(shí)器0 的速度是傳統(tǒng)8051的12 倍,不分頻
T1X12: 定時(shí)器1速度設(shè)置位
0,定時(shí)器1是傳統(tǒng)8051速度,12 分頻;
1,定時(shí)器1的速度是傳統(tǒng)8051的12 倍,不分頻
如果UART串口用定時(shí)器1做波特率發(fā)生器,T1x12位就可以控制UART串口是12T還是1T 了。
UART_MOX6: 串行口模式0的通信速度設(shè)置位
0,UART串口的模式0是傳統(tǒng)12T的8051速度,12分頻;
l,UART串口的模式0的速度是傳統(tǒng)12T的8051的6倍,2分頻
BRTR: 獨(dú)立波特率發(fā)生器運(yùn)行控制位
0,不允許獨(dú)立波特率發(fā)生器運(yùn)行;
1,允許獨(dú)立波特率發(fā)生器運(yùn)行
S2SMOD: 串口2的波特率加倍控制位。
0,串口2的波特率不加倍;
l,串口2的波特率加倍
對(duì)于STC12C5A60S2系列單片機(jī),串口2只能使用獨(dú)立波特率發(fā)生器作為波特率發(fā)生器,不能夠選擇定時(shí)器1作為波特率發(fā)生器; 而串口1既可以選擇定時(shí)器1作為波特率發(fā)生器,也可以選擇獨(dú)立波特率發(fā)生器作為波特率發(fā)生器。
BRTX12: 獨(dú)立波特率發(fā)生器計(jì)數(shù)控制位。
0,獨(dú)立波特率發(fā)生器每12個(gè)時(shí)鐘計(jì)數(shù)一次;
1,獨(dú)立波特率發(fā)生器每1個(gè)時(shí)鐘計(jì)數(shù)一次
EXTRAM:
0,允許使用內(nèi)部擴(kuò)展的1024字節(jié)擴(kuò)展RAM
1,禁止使用內(nèi)部擴(kuò)展的1024字節(jié)擴(kuò)展RAM
S1BRS: 串行口波特率發(fā)生器選擇位。
0,缺省,串行口波特率發(fā)生器選擇定時(shí)器1,S1BRS是串口1波特率發(fā)生器選擇位;
I,獨(dú)立波特率發(fā)生器作為串行口的波特率發(fā)生器,此時(shí)定時(shí)器1得到釋放,可以作為獨(dú)
立定時(shí)器使用
串口1可以選擇定時(shí)器1做波特率發(fā)生器,也可以選擇獨(dú)立波特率發(fā)生器作為波特率發(fā)生器。當(dāng)設(shè)置AUXR寄存器中的S1BRS位(串行口波特率選擇位)為1時(shí),串行口選擇獨(dú)立波特率發(fā)生器作為波特率發(fā)生器,此時(shí)定時(shí)器1可以釋放出來作為定時(shí)器/計(jì)數(shù)器/時(shí)鐘輸出使用.
評(píng)論
查看更多