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