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

正文內(nèi)容

【大學(xué)課件】80c51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)ppt-預(yù)覽頁(yè)

 

【正文】 環(huán)控制部分 CLR A; 循環(huán)結(jié)束處理部分 ADDC A, 00H; MOV R0, 23H; MOV R0, A; RET; END 程序清單 80C51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)舉例 定時(shí)程序 在單片機(jī)的控制應(yīng)用中,常有定時(shí)的需要,如定時(shí)中斷、定時(shí)檢測(cè)和定時(shí)掃描等。 定時(shí)程序的總延遲時(shí)間是循環(huán)程序段延時(shí)時(shí)間的整數(shù)倍 ,由于 R5是 8位寄存器,因此,這個(gè)定時(shí)程序的最長(zhǎng)定時(shí)時(shí)間為: 256( 28) 8=2048( μ s) ( 2)較長(zhǎng)時(shí)間的定時(shí)程序 (多重循環(huán)定時(shí)子程序) TIME: MOV R5, TTME1; LOOP2: MOV R4, TEME2; LOOP1: NOP; NOP; DJNZ R4, LOOP1; DJNZ R5, LOOP2; RET; 這個(gè)定時(shí)子程序的最長(zhǎng)定時(shí)時(shí)間為: [256( 28) 4+2+1] 256( 28) 2+4=525828( μ s) 開(kāi)始外循環(huán)初始化結(jié)束內(nèi)循環(huán)控制NY內(nèi)循環(huán)初始化外循環(huán)控制內(nèi)循環(huán)體NY( 3)調(diào)整定時(shí)時(shí)間 在定時(shí)程序中可通過(guò) 在循環(huán)程序段中增減指令 的方法對(duì)定時(shí)時(shí)間進(jìn)行微調(diào)。 MOV R0, TIME; LOOP: ADD A, R1; INC DPTR; NOP; DJNZ R0, LOOP; 只須 TIME取 2, 即可得到精確的 24μ s定時(shí) 。 查表操作對(duì)單片機(jī)的控制應(yīng)用十分重要,查表程序 常用于實(shí)現(xiàn) 非線性修正,非線性函數(shù)轉(zhuǎn)換以及代碼轉(zhuǎn)換 等 場(chǎng)合。 編寫查表程序時(shí),首先把表的首地址送入 DPTR中,再將要查表的數(shù)據(jù)序號(hào)(或下標(biāo)值)送入 A中,然后就可以使用該指令進(jìn)行查表操作,并把結(jié)果送 A中。假設(shè) x的內(nèi)容已存放在內(nèi)部 RAM 30H單元中,求出 y的內(nèi)容存放在內(nèi)部 RAM 40H單元中。這個(gè)“翻譯”過(guò)程稱為匯編 。 機(jī)器編輯與交叉匯編 機(jī)器編輯: 是指借助于微型機(jī)或開(kāi)發(fā)系統(tǒng)進(jìn)行單片機(jī)的程序設(shè)計(jì),通常都是使用編輯軟件進(jìn)行源程序的編輯。 單片機(jī)只能采用機(jī)器交叉匯編的方法對(duì)匯編語(yǔ)言程序進(jìn)行匯編 在微型機(jī)或開(kāi)發(fā)系統(tǒng)上采用交叉匯編方法對(duì)源程序進(jìn)行 匯編。 偽指令 是程序 設(shè)計(jì)人 員 發(fā)給匯編程序 的指令,也稱匯編命令或匯編程序控制指令。 在對(duì)匯編語(yǔ)言程序進(jìn)行機(jī)器交叉匯編前,偽指令存在于匯編語(yǔ)言程序中,但 匯編后得到的機(jī)器代碼程序中不存在偽指令相對(duì)應(yīng)的二進(jìn)制機(jī)器代碼 ,這一點(diǎn)請(qǐng)?zhí)貏e注意。 2. 匯編終止命令 END( END of assembly) ? 該命令用于終止源程序的匯編工作。賦值后,其值在整個(gè)程序中有效。 例: HOUR EQU 30H ORG 1000H START: MOV HOUR, 40H; 等同于 START: MOV 30H, 40H; ( Define Byte)定義數(shù)據(jù)字節(jié)命令 本命令用于從指定的地址單元開(kāi)始,在程序存儲(chǔ)器的連續(xù)單元中定義字節(jié)數(shù)據(jù)。把該地址加上它的字節(jié)數(shù)就是 DB的定義的數(shù)據(jù)字節(jié)的起始地址。 DW( Define Word) 本命令用于從指定地址開(kāi)始,在程序存儲(chǔ)器單元中定義 16位的數(shù)據(jù)字。存入 00H,41H DW“ABC” 。 在 MCS51程序設(shè)計(jì)應(yīng)用中,常以 DB來(lái)定義數(shù)據(jù),以DW來(lái)定義地址。從標(biāo)號(hào) ADDRTABL代表的地址開(kāi)始,預(yù)留 20個(gè)連續(xù)的地址單元 ORG 8100H DS 08H。 在一個(gè)程序中經(jīng)常遇到反復(fù)多次使用某程序段的情況,如果重復(fù)書寫這個(gè)程序段,會(huì)使程序變得冗長(zhǎng)而雜亂。為了實(shí)現(xiàn)這一過(guò)程,必須有子程序調(diào)用指令和返回指令。 子程序作為一個(gè)具有獨(dú)立功能的程序段 , 編程時(shí)需遵循以下原則: a) 子程序的第一條指令必須有標(biāo)號(hào) , 明確子程序入口地址; b) 以返回指令 RET結(jié)束子程序; c) 子程序說(shuō)明部分; 子程序名稱 :提供給主程序調(diào)用的名字,通常用符號(hào)或子程序第一條語(yǔ)句的標(biāo)號(hào)來(lái)表示。 子程序占用資源 :子程序中使用了哪些存儲(chǔ)單元、寄存器等 子程序堆棧深度 :子程序占用堆棧區(qū)的最大字節(jié)數(shù)。 這些說(shuō)明是寫給程序員看的,供以后使用子程序時(shí)參考。而這些工作單元在調(diào)用它的主程序中也會(huì)用到,為此, 需要將子程序用到的這些通用編程資源加以保護(hù),稱為保護(hù)現(xiàn)場(chǎng) 。在調(diào)用子程序前保護(hù)現(xiàn)場(chǎng),子程序返回后恢復(fù)現(xiàn)場(chǎng),這種方式比較靈活,可以根據(jù)當(dāng)時(shí)的需要確定要保護(hù)的內(nèi)容。 SQR:y=x2子程序 ORG 0000H; 主程序 MAIN: MOV SP, 3FH; 設(shè)置棧底 MOV A, 31H; 取數(shù) a存放到 A中作為入口參數(shù) LCALL SQR; MOV R1, A; 出口參數(shù): a的平方值存放在 A中 MOV A, 32H; 取數(shù) b存放到 A中作為入口參數(shù) LCALL SQR; ADD A, R1; MOV 33H, A; SJMP $; 子程序名稱: SQR 功能:通過(guò)查表求出平方值 y=x2 入口參數(shù): x存放在累加器 A中 出口參數(shù):求得的平方值 y存放在 A中 占用資源:累加器 A, 數(shù)據(jù)指針 DPTR SQR: PUSH DPH;保護(hù)現(xiàn)場(chǎng) , 將主程序中 DPTR的高 8位入棧 PUSH DPL;保護(hù)現(xiàn)場(chǎng) , 將主程序中 DPTR的低 8位入棧 MOV DPTR, TABLE; DPTR← 表首地址 MOVC A, A+DPTR; 查表 POP DPL; 恢復(fù)現(xiàn)場(chǎng) , 將主程序中 DPTR 的低 8位從堆棧中彈出 POP DPH; 恢復(fù)現(xiàn)場(chǎng) , 將主程序中 DPTR 的高 8位從堆棧中彈出 RET TABLE: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 END 2) 利用堆棧傳遞參數(shù) * ORG 0000H; 主程序 MAIN: MOV SP, 3FH;設(shè)置棧底 PUSH 31H; 將數(shù) a存放到堆棧中 , 作為入口參數(shù) LCALL SQR; POP ACC; MOV R1, A ;出口參數(shù): a的平方值存放在 A中 PUSH 32H; LCALL SQR; POP ACC; ADD A, R1; MOV 33H, A; SJMP $; 子程序名稱: SQR 功能:通過(guò)查表求出平方值 y=x2 入口參數(shù): x存放在堆棧中 出口參數(shù):求得的平方值 y存放在堆棧中 占用資源:累加器 A,數(shù)據(jù)指針 DPTR SQR: MOV R0, SP; R0作為參數(shù)指針 DEC R0 ; 堆棧指針退回子程序調(diào)用前的地址 DEC R0; XCH A, R0; 保護(hù) ACC, 取出參數(shù) MOV DPTR, TABLE; DPTR← 表首地址 MOVC A, A+DPTR; 查表 XCH A, R0; 查表結(jié)果放回堆棧中 RET TABLE: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ( 3)子程序調(diào)用中應(yīng)注意的問(wèn)題 由于子程序調(diào)用過(guò)程中 , CPU自動(dòng)使用了堆棧 , 因此 , 容易出現(xiàn)以下幾種錯(cuò)誤: a) 忘記給堆棧指針 SP賦棧底初值 , 堆棧初始化位置與第 1組工作寄存器重合 , 如果以不同的方式使用了同一個(gè)內(nèi)存區(qū)域 , 會(huì)導(dǎo)致程序亂套 。 (一) 2. 5. (二) 1. 2.
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1