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

正文內容

【大學】單片機課件匯編語言程序設計ppt-預覽頁

2025-08-25 16:18 上一頁面

下一頁面
 

【正文】 順序結構程序 INC R1 XCH A, R1 ;取第二個字節(jié) ANL A, 0FH ;取第二個半字節(jié) ORL A, R1 ;拼字 INC R1 MOV R1, A ;存放結果 RET 例 將 20H單元的兩個 BCD碼拆開并變成 ASCⅡ 碼,存入 21H、 22H單元。 方法二 采用先把 20H中低 4位 BCD碼交換出來加以轉換、存放,然后再把高 4位 BCD碼交換至低 4位加以轉換、存放。 關鍵: 正確選用轉移指令。 (JZ/JNZ、CJNE、 DJNZ、位控制轉移類指令 ) 在編寫有條件轉移語句時要特別注意以下兩點: (1)在使用條件轉移指令形成分支前,一定要安排可供條件轉移指令進行判別的條件。 操作: 把 16位 DPTR的內容與 “ 或 ” 運算的結果與在 A中的 8位無符號數(shù)相加,形成地址,裝入 PC,即散轉的目的地址。 例 兩個無符號數(shù)比較大小。執(zhí)行 JNC指令后形成分支,指令中 BIG1為標號地址,表示相對偏移量 rel。 編程: ORG 2022H MOV A, 5AH MOV B, A MUL AB ; A←X 2 MOV R1, A MOV A, 5AH ;重新把 X裝入 A CJNE A, 10, L1 分支結構程序 L1: JC L2 ; C=1, X< 10轉 L2 MOV R0, 41 ;先假設 X> 15 CJNE A, 10H, L3 ;與 16比較 L3: JNC L4 ; C=0, X> 15轉 L4 MOV A, R1 ADD A, 8 ; 10≤X≤15 , Y=X2+8 MOV R0, A SJMP L4 L2: MOV A, R1 CLR C SUBB A, 01 ; X< 10, Y=X21 分支結構程序 MOV R0, A L4: MOV 5BH, R0 ;存結果 SJMP $ END 由于本題的具體情況,在判別 (A)< 10和 (A)> 15時采用的是 “ CJNE”和 “ JC”以及 “ CJNE”和 “ JNC”兩條指令相結合的方法。 條件分支程序設計 的技巧,就在于正確而巧妙地使用這些命令。這是一個三分支歸一的條件轉移問題。 ORG 1000H START: MOV A, 40H 。 將 ?1(補碼 )送入 A中 SJMP COMP 。 程序執(zhí)行完 , “ 原地踏步 ” END 分支結構程序 三、散轉程序設計 散轉程序: 一種并行分支程序 (多分支程序 ),它是根據(jù)某種輸入或運算結果,分別轉向各個處理程序。 (2)A清 “ 0”,根據(jù) DPTR的值, 決定程序轉向目的地址。 例 128種分支轉移程序。 編程: JMP128: MOV A, R3 CLR C RLC A ; A←(A) 2 MOV DPTR, JMPTAB JMP A+DPTR JMPTAB: AJMP ROUT00 ; 128個子程序首址 ┆ ┆ ┆ ┆ AJMP ROUT7F 分支結構程序 此程序要求 128個轉移目的地址(ROUT00~ ROUT7F)必須駐留在與絕對轉移指令 AJMP同一個 2KB存儲區(qū)內。 例 根據(jù) R7的內容轉向 5個操作程序。 分支結構程序 采用轉向地址表 采用地址偏移量表的方法,其轉向范圍局限于一頁,使用受限制。若要使 n大于 255,可用雙字節(jié)加法運算的方法修改 DPTR。如設置循環(huán)次數(shù)計數(shù)器初值,地址指針置初值,為其他變量賦初值等。如修改計數(shù)器值;檢查循環(huán)條件是否符合,以決定繼續(xù)循環(huán)或退出循環(huán)。此結構有時不進入循環(huán)體就退出循環(huán),故稱之 “ 允許 0次循環(huán)的循環(huán)程序 ” 。實際中常用邏輯尺來控制分支和循環(huán)。 循環(huán)結構程序 循環(huán)結構程序 三、循環(huán)程序分類 單循環(huán)程序: 結構特點: 循環(huán)體為順序結構或分支結構,每循環(huán)一次,執(zhí)行一次循環(huán)體程序。 循環(huán)結構程序 四、使用多重循環(huán)程序必須注意的問題 ⑴循環(huán)嵌套必須層次分明,不允許產生內外層交叉; ⑵外循環(huán)可以一層層向內循環(huán)進入,結束時由里向外一層層退出; ⑶內循環(huán)體可以直接轉入外循環(huán)體,實現(xiàn)一個循環(huán)由多個條件控制的循環(huán)結構方式。 循環(huán)結構程序 圖 46 多個單字節(jié)數(shù)據(jù)求和程序框圖 循環(huán)結構程序 參考程序 ADD1: MOV R3, 00H MOV R4, 00H MOV R2, n ; R2為循環(huán)次數(shù)計數(shù)器 MOV R0, 50H ; R0作間址寄存器用它來尋址 Xi LOOP: MOV A, R4 ;取部分和低位 ADD A, R0 ;與 Xi相加 MOV R4, A INC R0 ;地址加 1 CLR A ADDC A, R3 ;低位字節(jié)向高位進位 MOV R3, A DJNZ R2, LOOP ;未加完繼續(xù)重復 練習題 [例題 ] 已知片內 RAM 30H~3FH單元中存放了 16個二進制無符號數(shù),編制程序求它們的累加和,并將其和數(shù)存放在 R4, R5中。 程序如下: ORG 1000H START: MOV R0, 30H MOV R2, 10H 。 和低 8位的內容送 A ADD A, R0。 將 R4的內容和 Cy相加 MOV R4, A 。 同書上 P48, P49 例 332,334 解: 每次傳送數(shù)據(jù)的的過程相同,可用循環(huán)程序實現(xiàn)。 設置循環(huán)次數(shù) LOOP: MOV A, R0 。 目的地址遞增 DJNZ R2, LOOP 。 循環(huán)結構程序 圖 47 延時程序框圖 循環(huán)結構程序 解 本例采用循環(huán)體為兩 NOP指令,則 (1+1+2) 2μs MT=1ms, MT=125=7DH ORG 2022H MOV R0, 0AH ;毫秒數(shù) → R0 DL2: MOV R1, MT ; 1ms延時的預定值 MT→R1 DL1: NOP NOP DJNZ R1, DL1 ; 1ms延時循環(huán) DJNZ R0, DL2 ;毫秒數(shù)減 1,不等于 0則繼續(xù)循環(huán),等于 0結束 END 循環(huán)結構程序 若考慮其他指令的執(zhí)行時間,則該段延時程序的精確延時時間計算如下: 2μs 1+ {(1+ 2) 2μs + (1+ 1+2) 2μs 125 } 10 =10062μs 若需要延時更長時間,可采用更多重循環(huán),如 1s延時可用 3重循環(huán),而 7重循環(huán)可延時 1年。當 fOSC=12MHz時,機器周期為1?s,執(zhí)行一條 DJNZ指令需要 2個機器周期,時間為 2?s。 設置外循環(huán)次數(shù) ( 此條指令需要 1個 機器周期 ) DLY1: MOV R6, 123 。(R7)- 1=0,則順序執(zhí)行,否則轉 回 DLY1繼續(xù)循環(huán),延時時間為 (246+ 2+ 1+ 1) 200+ 2+ 1= RET 。所以,在此必須采用 加法與十進制調整指令 重復執(zhí)行的方法。設 n=7,參與比較的數(shù)為 0,13, 3, 90, 27, 32, 11。 循環(huán)結構程序 由于在比較過程中,小數(shù)向上冒,因此這種排序程序稱為 “ 冒泡程序 ” ,比較過程如下: 循環(huán)結構程序 第一輪經(jīng)過 6次兩兩比較,得到一個最大數(shù);第二輪經(jīng)過 5次兩兩比較,得到一個次大數(shù); 依此類推。 解 ORG 0050H LIST DB 0, 13, 3, 90, 27, 32, 11 CNT EQU 07H ORG 8000H MOV R2, CNT1 ;數(shù)列個數(shù)減 1,這里(R2)=71 循環(huán)結構程序 LOOP1: MOV A, R2 ;外循環(huán)計數(shù)值 MOV R3, A ;內循環(huán)計數(shù) MOV R1, 01H ;交換標志位 LOOP2: MOV A, R0 ;取數(shù)據(jù) MOV B, A ;暫存 B INC R0 CLR C SUBB A, R0 ;兩數(shù)比較 JC LESS ; Xi< Xi+1轉 LESS 循環(huán)結構程序 MOV A, B ;取大數(shù) XCH A, R0 ;兩數(shù)交換位置 DEC R0 MOV R0, A INC R0 ;恢復數(shù)據(jù)指針 MOV R1, 02H ;置交換標志位為 2 LESS:DJNZ R3, LOOP2 ;內循環(huán)計數(shù)減 1,判一遍查完 ? DJNZ R2, LOOP3;外循環(huán)計數(shù)減 1,判排序結束 ? STOP: RET 循環(huán)結構程序 LOOP3: DJNZ R1, LOOP1 ;發(fā)生交換轉移 SJMP STOP END 練習題: 200名學生參加考試,成績放在 80C51的外部RAM的一個連續(xù)存儲單元, 95~ 100分頒發(fā) A級證書,90~ 94分頒發(fā) B級證書,低于 90分不計。 要求子程序在結構上具有通用性和獨立性。 程序的調用過程: 單片機收到 ACALL或 LCALL指令后,首先將當前的 PC值 (調用指令的下一條指令的首地址 )壓入堆棧保存 (低 8位先進棧,高 8位后進棧 ),然后將子程序的入口地址送入 PC,轉去執(zhí)行子程序。 RETI指令與 RET指令相似,區(qū)別在于 RET是從子程序返回, RETI是從中斷服務程序返回。 在主程序中設置堆棧。主程序使用的 A、 DPTR、PWS、 R0~ R7等,不應因轉入子程序而改變。(如:例 ) 三、子程序的嵌套 在實際應用中,子程序中調用子程序的情況。 子程序結構 例 求兩個無符號數(shù)據(jù)塊中的最大值。 求最大值的過程可采用子程序。這里采用堆棧來傳遞參數(shù)。 子程序結構 練習題 1: M1和 M1+1單元存有 16位二進制數(shù) ,試編程將其擴大二倍。 編程:將正數(shù)送入片內 RAM以 30H開始的正數(shù)區(qū) ,將負數(shù)放入以 40H開始的負數(shù)區(qū)。 主要用于: LED顯示器控制、智能化儀表控制、打印機的打印以及數(shù)據(jù)計算、復雜函數(shù)計算: Y=SIN(X); 數(shù)據(jù)補償:傳感器補償、復雜代碼轉換顯示等功能程序中。 ⑶將表格首地址 TABLE送入 DPTR, X送入 A,采用查表指令 MOVC A, A+DPTR完成查表,就可以得到與 X相對應的 Y值于 A中。 將這群函數(shù)值按順序存放在起始 (基 )地址為 TABLE的 ROM中 。平方表存放在首地址為 TABLE的 ROM中。 將查表的 16位基地址 TABLE送 DPTR MOVC A, A+DPTR 。 將查表的變量 X送入 A ADD A, 02H 。 查表程序有多種結構形式,下面介紹兩種常用查表程
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1