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

正文內(nèi)容

delphi串口通信編程(參考版)

2024-07-26 22:36本頁面
  

【正文】 參數(shù)設(shè)置: COM2,波特率 1200,奇校 驗,停止位 1位,字長 8位 操作:收 10個字符 。 4. 串口通信程序調(diào)試時,接收端沒有任何東西,可能的出錯原因有哪些? 請寫一段通過 COM1發(fā)送 90H數(shù)據(jù)的程序。 測試: 1. 如果使用 9600bps、偶校驗位檢查、 8個位的數(shù)據(jù)、兩個位的停止位來傳輸數(shù)據(jù),那么傳輸一個含有 800字節(jié)的字符串需要多長的時間? 2. 說明串口通信的建立步驟。register。Value:Word):Word。 asm xchg ax,dx out dx,ax end。assembler。 //高速寫端口過程 //注釋:工作時,可能有些卡和計算機不能訪問全部的 word procedure PortWriteWord(Addr:Word。register。Value:Byte):Word。 //依靠 CPU的速度和卡的速度 asm mov dx,ax in al,dx mov ecx,delay 1: loop 1 //在兩次讀之間延時 xchg ah,al inc dx //port+1 in al,dx xchg ah,al end。register。 //低速讀串口數(shù)據(jù) //參數(shù): port address //返回:給 port的 word值 //注釋:工作時,要調(diào)整 delay function PortReadWordLS(Addr:Word):Word。register。 //高速讀端口函數(shù): PortReadWord 函數(shù) //參數(shù): port address //返回:給 port的 word值 //注釋:可能有些卡和計算機不能訪問全部的 word function PortReadWord(Addr:Word):Word。register。 3)直接操作端口的 Delphi單元 輸出: Out dx,al Out dx,ax 輸入: In al,dx In ax,dx // PortReadByte 函數(shù) //參數(shù): port address //返回:給 port的 byte值 function PortReadByte(Addr:Word):Byte。 //將 $20端口的數(shù)據(jù)讀入 byte變量 PortData end。 //將 $20端口的數(shù)據(jù)讀入 byte變量PortData 直接嵌入式匯編語言 Var PortData:byte。 例: Port[$20]:=$20。 類型轉(zhuǎn)換: MOV DL, BYTE PTR OutBuf MOV DL, BYTE (OutBuf) MOV DL, 嵌入式匯編的通信編程例子 1) 在 Delphi中對端口的直接操作 2) 行間匯編接收下位機傳來的數(shù)據(jù)的簡單例子 3) 直接操作端口的 Delphi單元 1)在 Delphi中對端口的直接操作 ?預(yù)定義數(shù)組 ?采用直接嵌入式匯編語言 預(yù)定義數(shù)組 Delphi保留了 Turbo Pascal的兩個預(yù)定義數(shù)組 Port和 PortW。 //一個字節(jié) OutBuf:Word。 4)表達式類型 每個內(nèi)嵌匯編表達式都有一個類型,更確切的是都具有 長度,因為匯編器僅僅是簡單地將表達式類型視作內(nèi)存 位置的長度。 Var count:integer。 End。stdcall。 End。 Function Sum(X,Y:integer):Integer。 asm MOV EAX,X ADD EAX,Y MOV Z, EAX end。 asm MOV Z,X+Y end。 Y=20。Ch,1 {將 1賦給 CH變量 } End。 asm MOV AL,ByteVar MOV BX,WordVar MOV ECX,IntVar end。 WordVar:Word。 ?DD(定義雙字):該指令產(chǎn)生一序列字,每個操作數(shù)可以是常量表達式( 32位),或者地址表達式 例: asm DB 0FFH {一個字節(jié) } DB 0,99 {兩個字節(jié) } DB ?A? DB ?Hello world…?,0DH,0AH DB 12,“Delphi” DW 0FFFFH {一個字 } DW 0,9999 {兩個字 } DW ?A? {與 DB ?A?、 0相同 } DW ?BA? {與 DB ?A?、’ B?相同 } DD 0FFFFFFFFH {一個雙字 } DD 0,99999999 {兩個雙字 } DD ?A? {與 DB ?A?、 0、 0、 0相同 } DD ?DCBA? {與 DB ?A?、’ B?、’ C?、’ D?相同 } end。 局部標(biāo)簽必須有 符號開頭 例: MOV ECX,Delay 1: LOOP 1 4)匯編指令 Delphi內(nèi)嵌匯編器支持 3種匯編指令: ?DB(定義字節(jié)):該指令產(chǎn)生單字節(jié)的數(shù)據(jù),每個操作數(shù)可以是常量表達式( 8位),或者是任意長度的字符串。 ( 1)匯編語言的基礎(chǔ)知識 1) 匯編語言的語法 2) 寄存器的使用 3) 標(biāo)簽 4) 匯編指令 5) 操作數(shù) 1)匯編語言的語法 Label:Prefix Opcode Operand1,Operand2 Label:標(biāo)簽(可選) Prefix:匯編程序的前綴操作操作碼(可選) Opcode:匯編程序指令操作碼或指令 Operand:匯編表達式 2)寄存器的使用 ?asm語句必須保持 EDI、 ESI、 ESP、 EBP和 EBX寄存器的內(nèi)容,但可以自由修改EAX、 ECX和 EDX寄存器的內(nèi)容 ?在 asm主語句的入口, BP指向當(dāng)前的堆棧, SP指向堆棧頂端, SS包含了堆棧的段地址,而 DS包含了數(shù)據(jù)段的段地址。 //將 $20端口的數(shù)據(jù)讀入 Byte變量 PortData end。 I/O尋址 向 CPU送出 IN或 OUT指令來訪問 I/O地址 OUT 3F8H,AL //將 AL寄存器中的內(nèi)容送到 3F8H端口 IN AL,DX //從 DX寄存器讀出數(shù)據(jù),并將結(jié)果放入 AL 寄存器中 Delphi中可以使用嵌入式匯編語言,語法如下: asm statementList end statementList是匯編程序語句,其分隔符可以是分號、換行符或者是 Object Pascal注釋 Delphi中可以使用嵌入式匯編語言 Var PortData:byte。相關(guān)的 內(nèi)存器件識別這個地址并將該地址放在數(shù)據(jù)總線 上返回給處理器。 總線結(jié)構(gòu) 總線( BUS)是計算機內(nèi)一組連接設(shè)備的電路集合。 段地址和編移量 段地址寄存器可以是 CS(代碼段)、 SS(堆棧段)、 DS(數(shù)據(jù)段)和 ES(附加段)寄存器。每個寄存器可認為是兩個 8 位寄存器,即總共有 8個 8位寄存器: AH、 AL、 BH、 BL、 CH、 CL、 DH和 DL。 end。 showmessage(inttostr(count))。 count:=0。 SetLength(ByteSend,)。COM139。 FHandle: THandle。 ByteReceive:array of byte。 動態(tài)數(shù)組 動態(tài)數(shù)組:聲明時不指定數(shù)組的大小,而在需要使用數(shù)組之前再指定該數(shù)組的大小 Delphi中對于動態(tài)數(shù)組的聲明方式如下: ByteReceive:array of Byte。 ByteSend[0]:=123。 End。 for i:=1 to len do temp:=temp+inttostr(ord(instrW[i]))。 len:=length(instrW)。 for i:=1 to len do temp:=temp+inttostr(ord(instr[i]))。 len:=length(instr)。 Begin instr:=。 i,len:integer。 Var instr:string。 End。 :=inttostr(length(InstrW))。 InstrA:=。 Begin Instr:=。 InstrA:ANSIString。 Delphi中的字符串種類及處理函數(shù) Chr(x):返回 X參數(shù)的字符, Chr(97)=?a? ord(?a?)=97 Ord(x):返回 x參數(shù)所列的序數(shù),一般用來解讀字符在 ASCII碼中的序數(shù) Pos(substr,str):返回 str中, substr出現(xiàn)的位置,若找不到則返回 0 StrPos(str1,str2):返回 str2在 str1出現(xiàn)的第一位置的指針,無則返回 nil Copy(str,index,count):返回 str參數(shù)中,索引 index開始的 count數(shù)目的字串 Delete(str,index,count):刪除 str字串中,由 index所指定的開始位置的count數(shù)目的字串 Length(str):返回字串 str的長度 SetLength(str,newlen):設(shè)置 str的長度 Value(str,value,code):將 str轉(zhuǎn)成數(shù)值 value, code表示發(fā)生錯誤的位置 Str(value,str): Trim(str),TrimRig
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1