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

正文內(nèi)容

單片機第四章定時器串行口及中斷系統(tǒng)-資料下載頁

2025-01-06 01:45本頁面
  

【正文】 即:地址)裝入 SBUF,并置 RI=1,產(chǎn)生中斷。在中斷服務(wù)子程序中便可以與本機的地址比較。對于地址相符的從機,使自己的 SM2位置 0(這時,該從機就可以接收主機隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)回主機作為應(yīng)答;對于地址不符的從機,仍保持 SM2=1(這時,這些從機對主機隨后發(fā)來的數(shù)據(jù)幀將不予理睬)。 (4)主機收到從機應(yīng)答地址后,確認(rèn)地址是否相符,如果地址不符,發(fā)復(fù)位信號(數(shù)據(jù)幀中 TB8=1);如果地址相符,則清 TB8,開始發(fā)送數(shù)據(jù)。 (5)從機收到復(fù)位命令后回到監(jiān)聽地址狀態(tài)( SM2=1)。否則開始接收數(shù)據(jù)和命令。 (6)主機發(fā)送數(shù)據(jù)結(jié)束后,要發(fā)送一幀校驗和,并置第 9位( TB8)為 1,作為從機數(shù)據(jù)傳送結(jié)束的標(biāo)志。 (7)從機接收數(shù)據(jù)時先判斷數(shù)據(jù)接收標(biāo)志( RB8),若RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗和,若正確則回送正確信號 00H,并使該從機復(fù)位(即重新等待地址幀);若校驗和出錯,則發(fā)送 0FFH,請求主機重發(fā)數(shù)據(jù)。若接收幀的 RB8=0,則存數(shù)據(jù)到緩沖區(qū),并準(zhǔn)備接收下幀信息。 串行口的編程實例 【 例 】 用 8031 串行口外接 74LS165 移位寄存器擴展 8位輸入口 , 輸入數(shù)據(jù)由 8 個開關(guān)提供 , 另有一個開關(guān) K提供聯(lián)絡(luò)信號。電路示意如圖 所示。當(dāng)開關(guān) K合上時 , 表示要求輸入數(shù)據(jù)。 根據(jù)輸入的 8位開關(guān)量 , 處理不同的程序。 根據(jù)題意編寫的程序如下: START: JB , $ ;開關(guān) K SETB ; 165 CLR MOV SCON, 10H;串行口模式 0并啟動接收 JNB RI, $ ;查詢 RI CLR RI ;查詢結(jié)束,清 RI MOV A, SBUF …… SJMP START ; 準(zhǔn)備下一次接收。 【 例 】 利用串行口進行雙機通信。設(shè) 1號機是發(fā)送方, 2號機是接收方,如下圖所示: 二者之間的通信約定(協(xié)議)如下所述: ( 1)當(dāng) 1號機發(fā)送時,先發(fā)送一個“ E1”聯(lián)絡(luò)信號, 2號機收到后回答一個“ E2”應(yīng)答信號,表示同意接收。 ( 2)當(dāng) 1號機收到應(yīng)答信號“ E2”后,開始發(fā)送數(shù)據(jù),每發(fā)送一個數(shù)據(jù)字節(jié)都要計算“校驗和”,假定數(shù)據(jù)塊長度為 16個字節(jié),起始地址為 40H,一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗和”。 ( 3) 2號機接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為 40H,每接收到一個數(shù)據(jù)字節(jié)便計算一次“校驗和”,當(dāng)收到一個數(shù)據(jù)塊后,再接收 1號機發(fā)來的“校驗和”,并將它與 2號機求出的校驗和進行比較。若兩者相等,說明接收正確, 2號機回答00H;若兩者不相等,說明接收不正確, 2號機回答 0FFH,請求重發(fā)。 ( 4) 1號機接到 00H后結(jié)束發(fā)送。若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。 ( 5)雙方約定采用串行口方式 1進行通信,一幀信息為 10位,其中有 1個起始位、 8個數(shù)據(jù)位和一個停止位;波特率為 2400波特,T1工作在定時器方式 2,振蕩頻率選用 。 解:根據(jù)題意計算可得 TH1=TL1=0F4H, PCON寄存器的SMOD位為 0。 1號機處理流程如下圖所示: 2號機處理流程如下圖所示: 發(fā)送程序清單如下: ASTART: CLR EA MOV TMOD, 20H ;定時器 1置為方式 2 MOV TH1, 0F4H ;裝載定時器初值,波特率 2400 MOV TL1, 0F4H MOV PCON, 00H SETB TR1 ;啟動定時器 MOV SCON, 50H ;設(shè)定串口方式 1,且準(zhǔn)備接收應(yīng)答信號 ALOOP1: MOV SBUF, 0E1H ;發(fā)聯(lián)絡(luò)信號 JNB TI, $ ;等待一幀發(fā)送完畢 CLR TI ;允許再發(fā)送 JNB RI, $ ;等待 2號機的應(yīng)答信號 CLR RI ;允許再接收 MOV A, SBUF ; 2號機應(yīng)答后,讀至 A XRL A, 0E2H ;判斷 2號機是否準(zhǔn)備完畢 JNZ ALOOP ; 2號機未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò) ALOOP2: MOV R0, 40H ; 2號機準(zhǔn)備好,設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7, 10H ;設(shè)定數(shù)據(jù)塊長度初值 MOV R6, 00H ;清校驗和單元 ALOOP3: MOV SBUF, @R0 ;發(fā)送一個數(shù)據(jù)字節(jié) MOV A, R6 ADD A, @R0 ;求校驗和 MOV R6, A ;保存校驗和 INC R0 JNB TI, $ CLR TI DJNZ R7, ALOOP3 ;整個數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF, R6 ;發(fā)送校驗和 JNB TI, $ CLR TI JNB RI, $ ;等待 2號機的應(yīng)答信號 CLR RI MOV A, SBUF ; 2號機應(yīng)答,讀至 A JNZ ALOOP2 ; 2號機應(yīng)答“錯誤”,轉(zhuǎn)重新發(fā)送 RET ; 2號機應(yīng)答“正確”,返回 接收程序清單如下: BSTART: CLR EA MOV TMOD, 20H MOV TH1, 0F4H MOV TL1, 0F4H MOV PCON, 00H SETB TR1 MOV SCON, 50H ;設(shè)定串口方式 1,且準(zhǔn)備接收 BLOOP1: JNB RI, $ ;等待 1號機的聯(lián)絡(luò)信號 CLR RI MOV A, SBUF ;收到 1號機信號 XRL A, 0E1H ;判是否為 1號機聯(lián)絡(luò)信號 JNZ BLOOP1 ;不是 1號機聯(lián)絡(luò)信號,再等待 MOV SBUF, 0E2H ;是 1號機聯(lián)絡(luò)信號,發(fā)應(yīng)答信號 JNB TI, $ CLR TI MOV R0, 40H ;設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7, 10H ;設(shè)定數(shù)據(jù)塊長度初值 MOV R6, 00H ;清校驗和單元 BLOOP2: JNB RI, $ CLR RI MOV A, SBUF MOV @R0, A ;接收數(shù)據(jù)轉(zhuǎn)儲 INC R0 ADD A, R6 ;求校驗和 MOV R6, A DJNZ R7, BLOOP2 ;判數(shù)據(jù)塊是否接收完畢 JNB RI, $ ;完畢,接收 1號機發(fā)來的校驗和 CLR RI MOV A, SBUF XRL A, R6 ;比較校驗和 JZ END1 ;校驗和相等,跳至發(fā)正確標(biāo)志 MOV SBUF, 0FFH ;校驗和不相等,發(fā)錯誤標(biāo)志 JNB TI, $ ;轉(zhuǎn)重新接收 CLR TI END1: MOV SBUF, 00H RET 【 例 】 如圖所示的多機通信系統(tǒng)中有如下約定 : ( 1)系統(tǒng)中最多允許接有 255臺從機,它們的地址分別為 00H—FEH。 ( 2)地址 FFH是對所有從機都起作用的一條控制命令:命令各從機恢復(fù) SM2=1的狀態(tài)。 ( 3)主機發(fā)送的控制命令代碼為: 00H–要求從機接收數(shù)據(jù)塊 01H–要求從機發(fā)送數(shù)據(jù)塊 其它 –非法命令 ( 4)數(shù)據(jù)塊長度、 16個字節(jié) ( 5)從機狀態(tài)字格式為: 其中:若 ERR=1,從機接收到非法命令 若 TRDY=1,從機發(fā)送準(zhǔn)備就緒 若 RRDY=1,從機接收準(zhǔn)備就緒 主機在接收或發(fā)送完一個數(shù)據(jù)塊后可返回主程序,完成其它任務(wù)。從機部分以串行口中斷服務(wù)程序的方式給出。若從機未作好接收或發(fā)送數(shù)據(jù)的準(zhǔn)備,就從中斷程序中返回,在主程序中作好準(zhǔn)備。系統(tǒng)采用 T1作為波特率發(fā)生器,主機和從機中對定時器初始化的程序從略。主機和從機的程序流程見后。 主機的程序流程 從機的程序流程 ⑴ 主機串行通信子程序 入口參數(shù): (R0)——主機發(fā)送的數(shù)據(jù)塊首址 (R1)——主機接收的數(shù)據(jù)塊首址 (R2)——被尋址從機地址 (R3)——主機命令 (R4)——數(shù)據(jù)塊長度 程序代碼為: MSIO: MOV SCON, 0D8H ;設(shè)串行口模式 3,允許接收, TB8置 1 MSIO1: MOV A, R2 ;發(fā)送地址幀 MOV SBUF, A JNB RI, $ ;等待從機應(yīng)答 CLR RI MOV A, SBUF XRL A, R2 ;判應(yīng)答地址是否相符 JZ MSIO3 MSIO2: MOV SBUF, 0FFH ;重新聯(lián)絡(luò) SETB TB8 SJMP MSIO1 MSIO3: CLR TB8 ;地址符合,準(zhǔn)備送命令 MOV SBUF, R3 ;送命令 JNB RI, $ ;等待從機應(yīng)答 CLR RI MOV A, SBUF JNB ACC. 7, MSI04 ;判命令是否出錯 SJMP MSIO2 ;若從機接收命令出錯,重新聯(lián)絡(luò) MSIO4: CJNE R3, 00, MSIO5;不是要求從機接收數(shù)據(jù),則跳轉(zhuǎn) JNB ACC. 0, MSIO2 ;從機接收數(shù)據(jù)準(zhǔn)備就緒否? LP–TX: MOV SBUF, @R0 ;主機發(fā)送數(shù)據(jù)塊 JNB TI,$ ;等待發(fā)送完一幀 CLR TI INC R0 DJNZ R4, LP–TX RET MSIO5: JNB , MSIO2 ;從機發(fā)送數(shù)據(jù)準(zhǔn)備就緒否 ? LP–RX: JNB RI, $ ;主機接收數(shù)據(jù)塊 CLR RI MOV A, SBUF MOV @R1, A INC R1 DJNZ R4, LP–RX RET 若主機向 10號從機發(fā)送數(shù)據(jù)塊,數(shù)據(jù)塊放置在內(nèi)部 RAM區(qū)的 40H~ 4FH單元中,則調(diào)用上述子程序 MSIO的方法是: MOV R2, 0AH MOV R3, 0 MOV R4, 10H MOV R0, 40H LCALL MSIO ⑵ 從機串行通信子程序 從機的串行通信采用中斷控制起動方式。 在串行通信起動后,仍采用查詢方式來接收或發(fā)送數(shù)據(jù)塊。從機的程序中還包括定時器 1和串行口的初始化以及開中斷程序。 程序中用 F0作發(fā)送準(zhǔn)備就緒標(biāo)志, 標(biāo)志。背景程序的其它有關(guān)部分見后 MOV SP, 1FH ;設(shè)置堆棧指針 MOV SCON, 0F0H ;置串行口方式 3, SM2=1,允許接收 MOV 08H, 40H ;接收緩沖區(qū)起址送 1區(qū) R0 MOV 09H, 50H ;發(fā)送緩沖區(qū)起址送 1區(qū) R1 MOV 0AH, 10H ;發(fā)送或接收字節(jié)數(shù)送 1區(qū) R2 ORG 0023H AJMP SSIO ;串行口中斷服務(wù)程序入口 SSIO: CLR RI PUSH A ;保護現(xiàn)場 PUSH PSW SETB RS0 ;選 1區(qū)工作寄存器 ClR RS1 MOV A, SBUF XRL A, SLAVE ; SLAVE為本從機地址 JZ SSIO1 RETURN: POP PSW ;不是呼叫本從機,恢復(fù)現(xiàn)場后返回 POP A RETI SSIO1: CLR SM2 ;地址符合 ,與主機繼續(xù)通信 MOV SBUF, SLAVE ;從機地址送回主機 JNB RI, $ ;等待接收 1幀完 CLR RI JNB RB8,SSIO2 ;是命令幀,跳 SSIO2 SETB SM2 ;是復(fù)位,置 SM2=1后返回 SJMP RE
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1