freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的履帶式移動(dòng)機(jī)器人-資料下載頁(yè)

2025-06-27 19:29本頁(yè)面
  

【正文】 兩位。用于向接收端表示一幀字符信息已發(fā)送完畢,也為發(fā)送下一幀字符作準(zhǔn)備。在異步傳送中,字符間隔不固定,在停止位后可以加空閑位??臻e位用高電位表示,用于等待傳送。這樣,接收和發(fā)送可以隨時(shí)或間斷的進(jìn)行,而不受時(shí)間的限制。2)主單片機(jī)SPCE061A的串行接口P_UART_Data (702H3)(讀/寫(xiě))單元可以用于接收和發(fā)送數(shù)據(jù)的緩存,UART模塊的接收管腳Rx和發(fā)送管腳Tx分別與IOB7和IOBI0共用。使用UART模塊進(jìn)行通訊時(shí),必須事先分別將管腳Rx(IOB7)、Tx(IOB10)設(shè)置為輸入狀態(tài)、輸出狀態(tài)。然后通過(guò)設(shè)置P_UART_BaudScalarLow(7024H)和P_UART_BaudScalarHigh(7025H)單元指定所需波特率。同時(shí),設(shè)置P_UART_Command1 (702lH)和P_UART_Command2(7022H)單元以激活UART通訊功能。以上設(shè)置完成后,UART將處于激活狀態(tài)。[4] 通訊程序的設(shè)計(jì)主單片機(jī)SPCE061A與無(wú)線數(shù)傳模塊PTR2000的通信程序主要包括:主單片機(jī)SPCE061A的主程序和收發(fā)中斷子程序。1)主單片機(jī)SPCE061A串口參數(shù)的初始化在具體操作中,首先對(duì)B口狀態(tài)進(jìn)行設(shè)置,使用其特殊功能,將第7位設(shè)置為輸入口,作為接收引腳Tx。第10位設(shè)置為輸出口,作為發(fā)送引腳Rx。其次是設(shè)定波特率,通過(guò)P_UART_BaudScalarLow和P_UART_BaudScalarHigh寄存器來(lái)設(shè)置串行通信波特率。,要設(shè)定的波特率為9600bit/s,根據(jù)波特率計(jì)算式: 波特率=(/2)/Scale。可得初值Scale為0500H。所以,為P_UART_BaudScalarHigh單元賦值05H,P_UART_BaudScalarLow單元賦值00H,即可得到想要的波特率[18]。再次是設(shè)置數(shù)據(jù)格式并允許中斷。這項(xiàng)工作通過(guò)設(shè)置寄存器P_UART_Command1的值實(shí)現(xiàn)。這是一個(gè)寫(xiě)寄存器,作為UATR控制端口。各位的定義如表41所示。程序中數(shù)據(jù)格式為無(wú)奇偶校驗(yàn),允發(fā)送、接收中斷,此時(shí),該寄存器值設(shè)置為C0H。最后是允通數(shù)據(jù)發(fā)送、接收的設(shè)置。這項(xiàng)工作通過(guò)設(shè)置寄存器P_UART_Command2的值實(shí)現(xiàn)。該寄存器的高2位用來(lái)控制是否允許數(shù)據(jù)的發(fā)送和接收,如表42所示。P_UART_Command2 (寫(xiě))(7022H)單元的缺省值為00H。將寄存器值設(shè)為C0H,允許數(shù)據(jù)收/發(fā)。表41 P_UART_Command1單元各位功能Table 41 The function of P_UART_Command1 unit’s bitsb7b6b5b4b3b2b1b0功能RxIntEnTxIntEnI_ResetParityP_Check1允許UART IRQ中斷(由RxRDY觸發(fā))0禁止UART IRQ中斷1允許UART IRQ中斷(由TxRDY觸發(fā))0禁止UART IRQ中斷1內(nèi)部復(fù)位信號(hào)復(fù)位0內(nèi)部復(fù)位信號(hào)置位1激活偶校驗(yàn)0激活奇校驗(yàn)1激活奇偶校驗(yàn)0屏蔽奇偶校驗(yàn)表42 P_UART_Command2單元(寫(xiě))各位功能Table 42 The function of the P_UART_Command2 unit(write)’s bitsb7b6b5b4b3b2b1b0RxPinEnTxPinEn1:允通接收引腳0:禁止接收引腳1:允通發(fā)送引腳0:禁止發(fā)送引腳示意性代碼如下:*P_IOB_Dir=0x0400;*P_IOB_Attrib=0x0480;*P_IOB_Data=0x0000;*P_UART_BaudScalarHigh=0x05;//波特率設(shè)置為9600bps*P_UART_BaudScalarLow=0x00;*P P_UART_Command1=0x00C0。//允許接收* P_UART_Command2=0x00C0;2)發(fā)送、接收子程序流程圖由于發(fā)送/接收完一組串行數(shù)據(jù)時(shí),串行口電路自動(dòng)使串行口控制寄存器 P_UART_Command2中的TxReady和RxReady中斷標(biāo)志位置1。并自動(dòng)向CPU發(fā)出串行口中斷請(qǐng)求,CPU響應(yīng)串行口中斷后便立即轉(zhuǎn)入串行口中斷服務(wù)程序執(zhí)行。因此,只要在串行口中斷服務(wù)程序中安排一段P_UART_Command2對(duì)TxReady和RxReady中斷標(biāo)志位狀態(tài)的判斷程序,便可區(qū)分串行口是接收中斷還是發(fā)送中斷。特別需要注意的是在任意時(shí)刻讀出P_UART_Command2(7022)單元將清除UART IRQ中斷標(biāo)志。SPCE061A單片機(jī)的主程序和中斷程序的流程圖如圖42和43所示。開(kāi)中斷開(kāi)始初始化設(shè)定主單片機(jī)串行通信參數(shù)設(shè)定PTR2000為發(fā)射狀態(tài)圖42主程序流程圖Fig42 The flow chart of main 機(jī)器人串行通訊收發(fā)編程PTR2000模塊與單片機(jī)的連接中,PTR2000模塊的D0和DI分別與單片機(jī)RxD (IOB1)和TxD (IOB0)連接。 (PWR)與SPCE061A的IOB6相連,PTR2000的Pin7(TXEN)與SPCE061A的IOB8相連,CS直接接地,利用工作頻道1。通過(guò)匯編語(yǔ)言對(duì)其編程[4]。圖43 中斷子程序流程圖Fig43 The flow chart of intrupt主程序:.DEFINE P_UART_Command1 0x7021.DEFINE P_UART_Command2 0x7022.DEFINE P_UART_Data 0x7023.DEFINE P_UART_BaudScalarLow 0x7024.DEFINE P_UART_BaudScalarHigh 0x7025.CODE.PUBLIC_main_main:R1=0x0480。 //將IOB7/IOB10設(shè)定為輸入輸出狀態(tài)[P_IOB_Attrib]=R1。R1=0x0000。[P_UART_BaudScalarLow]=R1。 //設(shè)置波特率為9600bps;R1=0x0005。[P_UART_BaudScalarLow]=R1;R1=0xc0。 [P_UART_Command1]=R1; //允通發(fā)射和接收中斷[P_UART_Command2]=R1。 //允許發(fā)送接收R1=0x120; //設(shè)定PTR2000的工作基本參數(shù)[P_IOB_Attrib]=R1。[P_IOB_Data]=R1。 //TXEN=1,PWR=1[P_IOB_Dir]=R1。IRQ ON //開(kāi)中斷WAIT: JMP WAIT中斷程序:.TEXT.Public_IRQ7 _IRQ7:IRQ OFF。 //關(guān)中斷;PUSH R1,R4 FROM [SP]。 //保護(hù)現(xiàn)場(chǎng);R1=0x01FF。 //制定存儲(chǔ)單元R3=0x06FF。 R4=0x0080。 //檢查RxRDY是否為1TEST R4 [P_UART_Command2]。JZ Receive。Send://發(fā)送R4=LEN1。 //大臂轉(zhuǎn)動(dòng)角度;TXXD:R3=0x06FF。L_loop1:R2=0x0000。 //清移位寄存器;R2=R2 LSL 4。R1=[R3] LSL 4。 //取存儲(chǔ)單元數(shù)據(jù)的低8位R1=[R3] LSL 4。R1=R1 and 0xFF00。R5=R1。JMP A。 //將低8位發(fā)送到串行口R1=[R3] LSR 4。 //取存儲(chǔ)單元數(shù)據(jù)的高8位R1=[R3] LSR 4。R1=R1 and 0x00FF。R5=R1。JMP A。 //將高8位發(fā)送到串行口R2=R3++。 //指向下一存儲(chǔ)單元R2=0x0040。 //判斷是否仍有發(fā)送請(qǐng)求CMP R4 [P_UART_Command2]。JNE STOP。CMP R3 0x0800; //判斷是否已經(jīng)到達(dá)最大存儲(chǔ)單元JNE L_loop1;A: PUSH R3,R5 TO [SP] [P_UART_Data]=R5。 POP R3, R5 FROM [SP]。 RETFRceive:R3=0x0020。 //清TXEN為0,PTR2000為接收狀態(tài)[P_IOB_Data]=R3。R5=0x01FF。L_loop2:R2=0x0000。 //清移位寄存器R2=R2 LSL 4。JMP B。 //取串行口的數(shù)據(jù)R1=R1 LSL 4。 //左移8位R1=R1 LSL 4。R3=R1。 R3=R3 and 0xFF00;//將接收的數(shù)據(jù)放在高8位R2=0x0000。 //清移位寄存器R2=R2 LSL 4。JMP B。 //取串行口的數(shù)據(jù)R1=R1 and 0x00FF。 //將接收的數(shù)據(jù)放在低8位R1=R1 and 0X00FF。R1=R1 or R3。 //兩個(gè)8位數(shù)據(jù)拼成一個(gè)16位 [R5]=R1。 //將接收的數(shù)據(jù)存入存儲(chǔ)單元R2=R5++;CMP R4 [P_UART_Command2]。JNE STOP。CMP R5 0x0500。 //判斷是否到達(dá)最大存儲(chǔ)單元JNE L_loop2;B: PUSH R2,R3 TO [SP] R1=[P_UART_Data]。 POP R2,R3 FROM [SP]。RETFSTOP:POP R1,R4 FROM [SP]。 //恢復(fù)現(xiàn)場(chǎng)IRQ ON。 // 開(kāi)中斷RETI 主單片機(jī)與從單片機(jī)之間的多機(jī)通訊主單片機(jī)SPCE061A的串行通信模塊UART已經(jīng)在前面介紹了。與SPCEO61A的通信方式不同,89C2051單片機(jī)中有一個(gè)用于多機(jī)通信的控制位SM2,該控制位位于串口控制寄存器SCON中。多機(jī)通信一般使用串口通信方式2或方式3。在串口通信方式2和方式3中,發(fā)送和接收的數(shù)據(jù)格式與SPCE061A的數(shù)據(jù)格式完全相同。在89C2051多單片機(jī)系統(tǒng)中,是以如下方式進(jìn)行多機(jī)通信:當(dāng)主處理機(jī)欲發(fā)送某一個(gè)數(shù)據(jù)塊至若干從機(jī)中某個(gè)目標(biāo)從機(jī)時(shí),它先送出一地址字節(jié),以辨認(rèn)目標(biāo)從機(jī)。地址字節(jié)與數(shù)據(jù)字節(jié)可用第9位來(lái)區(qū)別,前者的第9位為1,后者的第9位為0。若接收數(shù)據(jù)的從機(jī)SM2=1時(shí),只接收地址信息。當(dāng)SM2=0時(shí),不管是地址還是數(shù)據(jù)信息,從機(jī)均接收。在多機(jī)通信中,需要建立完整的通信協(xié)議,因此,開(kāi)始編制通信程序時(shí),首先必須仔細(xì)考慮好發(fā)送幀和接收幀的地址、數(shù)據(jù)、命令、出錯(cuò)處理等一系列問(wèn)題。下面將制定一個(gè)簡(jiǎn)單的通信協(xié)議并給出主、從機(jī)的通信程序。 多機(jī)串行通訊協(xié)議定制根據(jù)主從單片機(jī)串行口的多機(jī)通信能力,多機(jī)通信可以按照以下協(xié)議進(jìn)行[16]:。,其中8位地址,第9位為地址/數(shù)據(jù)信息的標(biāo)志位。該位置1表示該幀為地址信息。,將各自接收到的地址與本從單片機(jī)的地址比較。對(duì)于地址相符的那個(gè)從單片機(jī),使SM2位清0,以接收主機(jī)隨后發(fā)來(lái)的所有信息。對(duì)于地址不符的從機(jī),仍保持SM2=1,對(duì)主單片機(jī)隨后發(fā)來(lái)的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀。,發(fā)送一幀校驗(yàn)和,并置第9位(TB8)為1,作為從機(jī)數(shù)據(jù)傳送結(jié)束的標(biāo)志。(RB8),若RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗(yàn)和,若正確,則回送正確信號(hào)00H,此信號(hào)令該從單片機(jī)復(fù)位(即重新等待地址幀)。若校驗(yàn)和出錯(cuò),則發(fā)送0FFH,令該從單片機(jī)重發(fā)數(shù)據(jù)。若接收幀的RB8=0,則原數(shù)據(jù)到緩沖區(qū),并準(zhǔn)備接收下幀信息。,從單片機(jī)在第3步中比較地相符后,從單片機(jī)令SM2=0,同時(shí)把本站地址發(fā)回主單片機(jī)。作為應(yīng)答信號(hào)之后刁‘收到主單片機(jī)發(fā)送來(lái)的數(shù)據(jù)。其它從單片機(jī)繼續(xù)監(jiān)聽(tīng)地址(SM2=1),無(wú)法收到數(shù)據(jù)。,確認(rèn)地址是否相符。如果地址不符,發(fā)復(fù)位信號(hào)(數(shù)據(jù)幀中TB8=1)。如果地址相符,則清TB8,開(kāi)始發(fā)送數(shù)據(jù)。(SM2=1)。否則開(kāi)始接收數(shù)據(jù)和命令。圖45主單片機(jī)的多機(jī)通訊流程圖Fig45 The multimunication flow chart of main 多機(jī)通訊流程設(shè)計(jì)設(shè)主單片機(jī)發(fā)送的地址聯(lián)絡(luò)信號(hào)00H, 01H, 02H, 03H, 04H, 05H,06H為從單片機(jī)設(shè)備地址,地址FFH是命令各從單片機(jī)恢復(fù)SM2為1的狀態(tài)即復(fù)位。主機(jī)的命令編碼為:01H請(qǐng)求從單片機(jī)接收主單片機(jī)的數(shù)據(jù)命令。02H請(qǐng)求從單片機(jī)向主單片機(jī)發(fā)送數(shù)據(jù)命令。其它都按從單片機(jī)向主單片機(jī)發(fā)送數(shù)據(jù)命令02H對(duì)待。從機(jī)的狀態(tài)字節(jié)格式如圖44所示。RRDY=1:從機(jī)準(zhǔn)備好接收主機(jī)的數(shù)據(jù)。TRDY=l:從機(jī)準(zhǔn)備好向主機(jī)發(fā)送數(shù)據(jù)。ERR=1:從機(jī)接收到的命令是非法的。ERR00000TRDYRRDYD7D6D5D4D3D2D1D0圖44從單片機(jī)狀態(tài)字格式Fig 44 The character frame format of subsidiary SCM’s status word主單片機(jī)SPCE061A與從單片機(jī)AT89C2051的多機(jī)通序程序框
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1