;設計乙個 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下面的彙編,值得學習。而又不敢獨享,遂與大家分享。基於以上原因呢,就沒有表明是原創的。為什麼從第四章開始?也...