求微控制器組合語言編寫的計算器的程式,最好有註釋

2022-03-16 21:50:42 字數 3456 閱讀 6389

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,指令...