51 組合語言程式設計 0 00 99 9 秒錶

2021-07-09 15:03:00 字數 2030 閱讀 3360

;設計乙個 00.0 ~ 99.9 的秒錶。

; p1.0 接乙個按鍵,按一下開始,按第二下暫停,按第三下就清零。

電路圖如下:

做而論道為此編寫的程式如下:

org   0000h

ljmp  main

org   000bh

ljmp  t0_int

;--------------------------------

main:                  ;初始化

mov   dptr, #tab

mov   tmod, #01h

mov   ie, #82h

mov   r2, #1

lp1:mov   th0, #(65536 - 50000) / 256

mov   tl0, #(65536 - 50000) mod 256

mov   r3, #2

mov   r4, #10

mov   r5, #10

mov   r6, #10

lp2:clr   tr0

m_loop:   call  disp

jnb   p1.0, kk     ;檢測到按鍵則轉移

sjmp  m_loop       ;迴圈

;--------------------------------

kk: call  disp         ;延時

jb    p1.0, m_loop ;消抖

k1: call  disp

jnb   p1.0, k1     ;等待釋放

djnz  r2, k2       ;按鍵次數

mov   r2, #3

setb  tr0          ;啟動

sjmp  m_loop

k2: cjne  r2, #1, lp2  ;暫停

sjmp  lp1          ;清零

;--------------------------------

disp:                  ;顯示

mov   p3, #07h

mov   a, r4

movc  a, @a + dptr

mov   p2, a

call  delay

mov   p3, #0bh

mov   a, r5

movc  a, @a + dptr

setb  acc.7        ;小數點

mov   p2, a

call  delay

mov   p3, #0dh

mov   a, r6

movc  a, @a + dptr

mov   p2, a

call  delay

rettab:

db  0, 6fh, 7fh, 07h, 7dh, 6dh, 66h, 4fh, 5bh, 06h, 3fh

delay:

djnz  r7, $

djnz  r7, $

ret;--------------------------------

t0_int:                ;50ms中斷一次

mov   th0, #(65536 - 50000) / 256

mov   tl0, #(65536 - 50000) mod 256

djnz  r3, ee

mov   r3, #2

djnz  r4, ee       ;修改各個時間變數

mov   r4, #10

djnz  r5, ee

mov   r5, #10

djnz  r6, ee

mov   r6, #10

ee:reti               ;盡快退出中斷程式

;--------------------------------

end提問者評價:謝謝!

組合語言程式設計

1.彙編語句的三種基本型別 2.標號相關 3.變數相關 4.運算元定址方式 buffer dw 500 x 17 rept 500 這是乙個重複巨集,以下重複彙編500遍 x x 979 mod 65535 這句話我也不懂 dw x endm 巨集在這裡結束transto10 proc near 函...

組合語言程式設計

乙個完整的源程式通常由若干邏輯段組成,包括資料段 附加段 堆疊段和 段。它們分別對映到儲存器中的物理段上。每個邏輯段以segment語句開始,以ends結束,整個源程式用end語句結尾。段中存放源程式的所有指令碼 資料 變數等則放在資料段和附加段中。程式中可以定義堆疊段,也可以直接利用系統中的堆疊段...

《組合語言程式設計》說明

組合語言程式設計說明 我只是對其中的大部分東西作簡要的摘錄。一方面害怕自己忘記而沒有書籍查證 這本書是向圖書館借的 另一方面是現在大部分組合語言是基於win32平台的,而這本書是基於linux下面的彙編,值得學習。而又不敢獨享,遂與大家分享。基於以上原因呢,就沒有表明是原創的。為什麼從第四章開始?也...