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

正文內(nèi)容

單片機(jī)技術(shù)及應(yīng)用_第四章_mcs-51程序設(shè)計(jì)(編輯修改稿)

2024-11-15 12:55 本頁面
 

【文章內(nèi)容簡介】 TR,A ? INC DPTR 。修改地址指針 ? DJNZ R2,LOOP 。控制循環(huán) ? RET ? 使用時只要給定入口參數(shù)及被清零單元個數(shù),再調(diào)用此子程序即可: ? ORG 0000H ? MOV DPTR,3000H ? MOV R2,40 ? ACALL CLEAR ? SJMP $ ? CLEAR: CLR A ? LOOP: MOVX @DPTR,A ? INC DPTR 。修改地址指針 ? DJNZ R2,LOOP ??刂蒲h(huán) ? RET ? END 單片機(jī)技術(shù)及應(yīng)用 2. 多重循環(huán)程序 ? 如果在一個循環(huán)體中又包含了其他的循環(huán)程序,即循環(huán)中還套著循環(huán),這種程序稱為多重循環(huán)程序。 【 例 49】 10秒延時程序。 ? 延時程序與 MCS51執(zhí)行指令的時間有關(guān),如果使用 6MHz晶振,一個機(jī)器周期為 2μs,計(jì)算出執(zhí)行一條指令以至一個循環(huán)所需要的時間,給出相應(yīng)的循環(huán)次數(shù),便能達(dá)到延時的目的。 ? 程序如下: ? DEL: MOV R5,100 ? DEL0: MOV R6,100 ? DEL1: MOV R7,249 ? DEL2: DJNZ R7,DEL2 。248*2+4 ? DJNZ R6,DEL1 。( 248*2+4) *200+4 ? DJNZ R5,DEL0 。( 248*2+4) *200+4) *100+4 ? RET 單片機(jī)技術(shù)及應(yīng)用 ? 使用多重循環(huán)程序時,必須注意以下幾點(diǎn): (1) 循環(huán)嵌套,必須層次分明,不允許產(chǎn)生內(nèi)外層循環(huán)交叉。 (2) 外循環(huán)可以一層層向內(nèi)循環(huán)進(jìn)入,結(jié)束時由里往外一層層退出。 (3) 內(nèi)循環(huán)體可以直接轉(zhuǎn)入外循環(huán)體,實(shí)現(xiàn)一個循環(huán)由多個條件控制的循環(huán)結(jié)構(gòu)方式。 單片機(jī)技術(shù)及應(yīng)用 子程序和參數(shù)傳遞方法 ? 在實(shí)際程序中,常常會多次進(jìn)行一些相同的計(jì)算和操作,如數(shù)制轉(zhuǎn)換、函數(shù)式計(jì)算等。如果每次都從頭開始編制一段程序,不僅麻煩,而且浪費(fèi)存儲空間。因此對一些常用的程序段,以子程序的形式,事先存放在存儲器的某一區(qū)域。當(dāng)主程序運(yùn)行過程中需要用子程序時,只要執(zhí)行調(diào)用子程序的指令,使程序轉(zhuǎn)至子程序即可。子程序處理完畢,返回主程序,繼續(xù)進(jìn)行以后的操作。 ? 調(diào)用子程序有以下優(yōu)點(diǎn): ? (1) 避免對相同程序段的重復(fù)編制。 ? (2) 簡化程序的邏輯結(jié)構(gòu),同時也便于子程序調(diào)試。 ? (3) 節(jié)省存儲器空間。 單片機(jī)技術(shù)及應(yīng)用 工作寄存器或累加器傳遞參數(shù) ? 此方法是把入口參數(shù)或出口參數(shù)放在工作寄存器或累加器中的方法。使用這種方法可使程序最簡單,運(yùn)算速度也最高。它的缺點(diǎn)是:工作寄存器數(shù)量有限,不能傳遞太多的數(shù)據(jù);主程序必須先把數(shù)據(jù)送到工作寄存器;參數(shù)個數(shù)固定,不能由主程序任意設(shè)定。 單片機(jī)技術(shù)及應(yīng)用 【 例 410】 請編出能把 20H單元內(nèi)兩個 BCD數(shù)變換成相應(yīng) ASCII碼放在21H(高位 BCD數(shù)的 ASCII碼 )和 22H(低位 BCD數(shù)的 ASCII碼 )單元的程序。 ? 解:根據(jù) ASCII字符表, 0~ 9的 BCD數(shù)和它們的 ASCII碼之間僅相差 30H。因此,僅需把 20H單元中兩個 BCD數(shù)拆開,分別和 30H相加即可,可以編出程序如下: ? ORG 0000H ? ASC1: MOV R0, 22H ? MOV @R0, 00H ? MOV A, 20H ? XCHD A, @R0 ? ORL 22H, 30H ? SWAP A ? ORL A, 30H ? MOV 21H, A ? SJMP $ ? END 單片機(jī)技術(shù)及應(yīng)用 用指針寄存器來傳遞參數(shù) ? 由于數(shù)據(jù)一般存放在存儲器中,而不是工作寄存器中,故可用指針來指示數(shù)據(jù)的位置,這樣可以大大節(jié)省傳遞數(shù)據(jù)的工作量,并可實(shí)現(xiàn)可變長度運(yùn)算。一般如參數(shù)在內(nèi)部 RAM 中,可用 R0或 R1作指針。進(jìn)行可變長度運(yùn)算時,可用一個寄存器來指出數(shù)據(jù)長度,也可在數(shù)據(jù)中指出其長度 (如使用結(jié)束標(biāo)記符 )。 單片機(jī)技術(shù)及應(yīng)用 用堆棧來傳遞參數(shù) ? 堆??梢杂糜趥鬟f參數(shù)。調(diào)用時,主程序可用PUSH指令把參數(shù)壓入堆棧中。之后子程序可按棧指針訪問堆棧中的參數(shù),同時可把結(jié)果參數(shù)送回堆棧中。返回主程序后,可用 POP指令得到這些結(jié)果參數(shù)。這種方法的優(yōu)點(diǎn)是:簡單;能傳遞大量參數(shù);不必為特定的參數(shù)分配存儲單元。使用這種方法時,由于參數(shù)在堆棧中,故大大簡化了中斷響應(yīng)時的現(xiàn)場保護(hù)。 ? 實(shí)際使用時,不同的調(diào)用程序可使用不同的技術(shù)來決定或處理這些參數(shù)。下面以幾個簡單的例子說明用堆棧來傳遞參數(shù)的方法。 單片機(jī)技術(shù)及應(yīng)用 【 例 411】 一位十六進(jìn)制數(shù)轉(zhuǎn)換為 ASCII碼子程序。 ? 解:程序如下: ? HASC: MOV R0,SP ? DEC R0 ? DEC R0 。R0為參數(shù)指針 ? XCH A,@R0 。保護(hù) ACC,取出參數(shù) ? ANL A,0FH ? ADD A,2 。加偏移量 ? MOVC A,@A+PC ? XCH A,@R0 。將查表結(jié)果放回堆棧中 ? RET ? DB 39。012345678939。 。十六進(jìn)制數(shù)的 ASCII字符表 ? DB 39。ABCDEF39。 ? END 單片機(jī)技術(shù)及應(yīng)用 ? 【 例 412】 把內(nèi)部 RAM中 50H、 51H的雙字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換為 4位 ASCII碼,存放于 (R1)指向的 4個內(nèi)部 RAM單元。 ? 解:編寫程序時可以將例 410當(dāng)作子程
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1