微控制器程式詳解

2022-03-30 18:36:20 字數 3060 閱讀 1993

微控制器程式詳解.txt﹃根網線''盡賺了多少人的青春い有時候感動的就是身邊微不足道的小事。﹎破碎不是最殘酷的最殘酷的是踩著這些碎片卻假裝不疼痛固執的尋找﹎將來就算我遇見再怎麼完美的人,都有乙個缺點,他不是你,_____下輩子要做男生,娶乙個像我這樣的女生。

程式詳解:

程式清單:

;共陽數碼管加減顯示

sp1 bit p3.6 ;定義加資料按鍵

sp2 bit p3.7 ;定義減資料按鍵

org 00h ;程式的開始位址

ajmp main ;跳轉到程式開始位址

org 30h ;資料開始位址

main: ;主函式

clr sp1 ;要求按鍵高電平有效,在此將電平拉低

clr sp2 ;同上

k1: ;標號

lcall disp ;lcall長呼叫指令,呼叫disp程式

jnb sp1,k2 ;jnb為判斷bit轉移指令,當bit滿足為低電平時跳轉,檢測sp1是否按下,按下繼續往下執行程式,沒有按下跳轉到k2處執行程式

;jnb bit ,rel;(bit)=0,pc←(pc)+3+rel,否則順序執行

lcall disp ;再次呼叫disp程式

jb sp1,$-3 ;再次確認按鍵是否被按下,去按鍵抖動

inc 30h ;inc增一指令,30h中的內容自增一

mov a,30h ;將30h中的資料送到累加器a中

cjne a,#10,k1 ;cjne判斷命令,判斷累加器a中的資料是否為10,也就是說按鍵的次數不能大於10次,小於10跳轉到k1處執行程式,大於10繼續往下執行程式

mov 30h,#0 ;30h清零操作

inc 31h ;31h增一

mov a,31h ;將31h中的資料送到累加器a中

cjne a,#10,k1 ;cjne判斷命令,判斷累加器a中的資料是否為10,也就是說按鍵的次數不能大於10次,小於10跳轉到k1處執行程式,大於10繼續往下執行程式

mov 31h,#0 ;31h清零操作

inc 32h ;32h增一

mov a,32h ;將32h中的資料送到累加器a中

cjne a,#10,k1 ;cjne判斷命令,判斷累加器a中的資料是否為10,也就是說按鍵的次數不能大於10次,小於10跳轉到k1處執行程式,大於10繼續往下執行程式

mov 32h,#0 ;32h清零操作

ljmp main ;返回到程式開始處

k2: acall disp ;acall短呼叫指令,呼叫disp程式

jnb sp2,k1 ;jnb為判斷bit轉移指令,當bit滿足為低電平時跳轉,檢測sp2是否按下,按下繼續往下執行程式,沒有按下跳轉到k1處執行程式

;jnb bit ,rel;(bit)=0,pc←(pc)+3+rel,否則順序執行

lcall disp ;再次呼叫disp程式

jb sp2,$-3 ;再次確認按鍵是否被按下,去按鍵抖動

dec 30h ;dec減一指令,30h中的內容自減一

mov a,30h ;將30h中的資料送到累加器a中

cjne a,#0ffh,k2;判斷30h中的數是否為255,也就是說按鍵的次數不能大於10次,小於255跳轉到k2處執行程式,大於255繼續往下執行程式

mov 30h,#9 ;30h賦初始值9

dec 31h ;31h減一

mov a,31h ;將31h中的資料送到累加器a中

cjne a,#0ffh,k2;判斷31h中的數是否為255,也就是說按鍵的次數不能大於10次,小於255跳轉到k2處執行程式,大於255繼續往下執行程式

mov 31h,#9 ;31h賦初始值9

dec 32h ;32h減一

mov a,32h ;將32h中的資料送到累加器a中

cjne a,#0ffh,k2;判斷32h中的數是否為255,也就是說按鍵的次數不能大於10次,小於255跳轉到k2處執行程式,大於255繼續往下執行程式

mov 32h,#9 ;32h賦初始值9

ljmp main ;返回到程式開始處

disp: ;顯示程式

mov dptr,#tab ;講**中的資料裝入dptr中

mov a,30h ;將30h中的數送到累加器a中

movc a,@a+dptr ;查表,將查到的數送到累加器a中

setb p2.2 ;選定數碼管第四位點亮

mov p0,a ;將累加器a中的數送到p0口,作為顯示資料

acall dly ;呼叫延時程式

clr p2.2 ;關閉數碼管第四位的顯示

mov a,31h ;將31h中的數送到累加器a中

movc a,@a+dptr ;查表,將查到的數送到累加器a中

setb p2.1 ;選定數碼管第三位點亮

mov p0,a ;將累加器a中的數送到p0口,作為顯示資料

acall dly ;呼叫延時程式

clr p2.1 ;關閉數碼管第三位的顯示

mov a,32h ;將32h中的數送到累加器a中

movc a,@a+dptr ;查表,將查到的數送到累加器a中

setb p2.0 ;選定數碼管第二位點亮

mov p0,a ;將累加器a中的數送到p0口,作為顯示資料

acall dly ;呼叫延時程式

clr p2.0 ;關閉數碼管第二位的顯示

ret ;呼叫程式返回

dly: ;延時程式

mov r6,#2

d1: mov r7,#248

djnz r7,$

djnz r6,$-4

rettab: db 0c0h;0 ;字元表

db 0f9h;1

db 0a4h;2

db 0b0h;3

db 099h;4

db 092h;5

db 082h;6

db 0f8h;7

db 080h;8

db 090h;9

end ;程式結束

微控制器C程式優化

對程式進行優化,通常是指優化程式 或程式執行速度。優化 和優化速度實際上是乙個予盾的統一。一般是優化了 的尺寸,就會帶來執行時間的增加 如果優化了程式的執行速度,通常會帶來 增加的 很難魚與熊掌兼得,只能在設計時掌握乙個平衡點。一 程式結構的優化 1 程式的書寫結構 雖然書寫格式並不會影響生成的 質...

51微控制器彙編指令詳解

mcs 51系列微控制器指令 以a開頭的指令有18條,分別為 acall addr11 add a,rn add a,direct add a,ri add a,data addc a,rn addc a,direct addc a,ri addc a,data ajmp addr11 anl a,...

典型微控制器延時程式集

摘要實際的微控制器應用系統開發過程中,由於程式功能的需要,經常編寫各種延時程式,延時時間從數微秒到數秒不等,對於許多c51開發者特別是初學者編制非常精確的延時程式有一定難度。本文從實際應用出發,討論幾種實用的編制精確延時程式和計算程式執行時間的方法,並給出各種方法使用的詳細步驟,以便讀者能夠很好地掌...