單片機程序案例:
要求把06H~09H,20個數據按順序放入內部數據存儲器RAM:10H~23H單元中。
案例要求示意圖
一:程序編程
MOV R0,#10H;將單片機內部RAM單元的首地址10H送到工作寄存器 R0中。
MOV R1,#14H;將十進位數20(20個數放入20個單元中)轉成16進位數14H送到工作寄存器R1中。
MOV A,#06H;;將第1個數06H送到單片機累加器A中。
LOOP:MOV @R0,A;把單片機累加器A中的內容送到工作寄存器R0裡面的內容所確定的地址單元中。
是間接尋址方式。LOOP:是標號,表示程序要循環的意思,指令需要重複執行時,可以使用標號LOOP循環來實現。
INC A;加1指令,數據加1,累加器A中的內容加1。例如:剛才是06H,現在加1就是07H。
INC R0;加1指令,地址加1,工作寄存器R0裡面的內容加1。例如:地址單元10H,現在加1就是11H。
DJNZ R1,LOOP;減1非零轉移指令,將工作寄存器R1裡面的內容減1,判斷為零嗎,不為零程序就跳到標號LOOP處執行。共要判斷19次,直到為零時程序才結束,此時20個數也放入要求的20個地址單元中了。
指令判斷轉移示意圖
SJMP $;讓單片機程序停在此處,也就是程序原地踏步。
二:十進位數轉十六進位數
將十進位數20數轉成16進位數,採用除16取餘法,餘數要除到小於16。
就是將十進位數20直接除以16,餘數除到小於16。從最後1個餘數倒著讀到第1個就是16進位數了。
十進位數轉十六進位數示意圖