1樓:匿名使用者
這是個ad轉換控制程式,並將結果在lcd上顯示的程式。不過程式比較羅嗦,個人覺得有些程式沒用。
說明的部分用「////」標註了,應該比較清楚了。你自己看吧。
led_0 equ 30h ;
led_1 equ 31h
led_2 equ 32h ;存放段碼
adc equ 35h ;/////////ad轉換結果儲存單元
clock bit p2.4 ;定義adc0808時鐘位
st bit p2.5
eoc bit p2.6
oe bit p2.7
org 00h
sjmp start
org 0bh
ljmp int_t0
start: mov led_0,#00h
mov led_1,#00h
mov led_2,#00h
mov dptr,#table ;段碼錶首地址
mov tmod,#02h
mov th0,#245
mov tl0,#00h
mov ie,#82h
setb tr0
////////////啟動ad轉換//////////////////
wait: clr st
setb st
clr st ;啟動ad轉換
jnb eoc,$ ;等待轉換結束
setb oe
mov adc,p1 ;讀取ad轉換結果
clr oe
mov a,adc
mov b,#100 ;ad轉換結果轉換成bcd碼
div ab
mov led_2,a
mov a,b
mov b,#10
div ab
mov led_1,a
mov led_0,b
/////////////lcd顯示///////////////////////
lcall disp
sjmp wait
int_t0: cpl clock ;提供adc0808時鐘訊號
reti
///////送lcd顯控制的子程式//////////////
disp: mov dptr,#table
mov a,led_0 ;數碼顯示子程式
movc a,@a+dptr
clr p2.3
mov p0,a
lcall delay
setb p2.3
mov dptr,#table
mov a,led_1
movc a,@a+dptr
clr p2.2
mov p0,a
lcall delay
setb p2.2
mov dptr,#table
mov a,led_2
movc a,@a+dptr
setb acc.7
clr p2.1
mov p0,a
lcall delay
setb p2.1
ret/////////這段程式,比較怪,因為你沒說具體功能,我沒看明白//////////
/////////只知道是對ad結果按tab表進行處理,也是取個/十/百/位/////////
delay: mov r6,#10 ;延時5毫秒
d1: mov r7,#250
djnz r7,$
djnz r6,d1
ntov:
mov dptr,#tab
mov a,adc
movc a,@a+dptr
mov b,#2
div ab
mov r1,b
mov r1,b
mov b,#10
div ab
mov led_2,a
mov led_1,b
cjne r1,#01,kk1
mov led_0,#05
back: ret
kk1: mov led_0,#00
ajmp back
rettable: db 3fh,06h,5bh,4fh,66h
db 6dh,7dh,07h,7fh,6fh
tab:
db 0, 0 , 0 , 1, 0, 2, 0, 0, 3, 0
db 4, 0, 0, 5, 0, 6, 0, 0, 7, 0
db 8, 0, 0, 9, 0, 0, 10, 0, 11, 0
db 0, 12, 0, 13, 0, 0, 14, 0, 15, 0
db 0, 16, 0, 17, 0, 0, 18, 0, 19, 0
db 0, 20, 0, 0, 21, 0, 22, 0, 0, 23
db 0, 24, 0, 0, 25, 0, 26, 0, 0, 27
db 0, 28, 0, 0, 29, 0, 0, 30, 0, 31
db 0, 0, 32, 0, 33, 0, 0, 34, 0, 35
db 0, 0, 36, 0, 37, 0, 0, 38, 0, 39
db 0, 0, 40, 0, 0, 41, 0, 42, 0, 0
db 43, 0, 44, 0, 0, 45, 0, 46, 0, 0
db 47, 0, 48, 0, 0, 49, 0, 50, 0, 0
db 51, 0, 0, 52, 0, 53, 0, 0, 54, 0
db 55, 0, 0, 56, 0, 57, 0, 0, 58, 0
db 59, 0, 0, 60, 0, 0, 61, 0, 62, 0
db 0, 63, 0, 64, 0, 0, 65, 0, 66, 0
db 0, 67, 0, 68, 0, 0, 69, 0, 70, 0
db 0, 71, 0, 0, 72, 0, 73, 0, 0, 74
db 0, 75, 0, 0, 76, 0, 77, 0, 0, 78
db 0, 79, 0, 0, 80, 0, 0, 81, 0, 82
db 0, 0, 83, 0, 84, 0, 0, 85, 0, 86
db 0, 0, 87, 0, 88, 0, 0, 89, 0, 90
db 0, 0, 91, 0, 0, 92, 0, 93, 0, 0
db 94, 0, 95, 0, 0, 96, 0, 97, 0, 0
db 98, 0, 99, 0, 0, 100, 0, 0, 0end
2樓:匿名使用者
微控制器組合語言填空,微控制器組合語言作業
delay mov r3,20 設定50ms計數迴圈初值 mov tmod,10h 設定時器1方式1mov th1,03ch 置定時器初值mov tl1,0b0h setb tr1 啟動t1lp1 jbc tf1 lp2 查詢計數溢位sjmp lp1 lp2 mov th1,03ch 重新制定時器初...
微控制器彙編程式,微控制器(組合語言)程式
這個是外部擴充套件的ram,fef0h是存資料的地址,mov dptr 0fef0h是給資料指標賦值,movx dptr,a是間接定址,將a中資料送到外部ram的fef0h中,中斷服務程式後面應該有reti,挺容易的,看看書,這例題允許了中斷,給出了中斷處理程式,自己看書學得較為深刻。ofefoh指...
微控制器組合語言和計算機組合語言有區別嗎區別在哪區別有多大
現在的微控制器基本都支援c語言了 而且微控制器的速度也很快的 我個人認為沒有必要非得學組合語言了 把c語言學的紮實些,足可以應付絕大多數微控制器程式設計了反而建議你看看電路和vhdl語言方面的知識,因為一般情況下微控制器你程式設計可能需要你懂一些這方面的東西請參考 區別大著呢,不同系列的cpu,指令...