任務(wù)是利用中斷進(jìn)行數(shù)制轉(zhuǎn)換,并利用數(shù)碼管顯示轉(zhuǎn)換前后數(shù)字、原理圖放下面
PS:本次進(jìn)制轉(zhuǎn)換為16進(jìn)制轉(zhuǎn)換為10進(jìn)制,只是例子
照例先說我的思路:
1. 我在主程序先對P1置零(為了讓十六進(jìn)制數(shù)從0開始)
2. 然后對P1進(jìn)行加1的操作,并循環(huán)以及延時(為了容易看清是否轉(zhuǎn)換)
3. 配置中斷,開啟外部中斷0,設(shè)置觸發(fā)方式為電平觸發(fā),開啟中斷總控制(這里的配置務(wù)必跟著自己的電路圖來,這里是我電路圖對對應(yīng)的配置)
4. 編寫中斷子程序,里面對P1做除法,除以0x64H即0x100D配(由于是兩位十六進(jìn)制最多百位數(shù),所以除以100)為了得到百位數(shù),并將商移到P2(這里剛 好高位為0,不影響)作百位數(shù),并對剩下來的余數(shù)進(jìn)行除10得到新的商,字節(jié)內(nèi)交換后,將交換后新商加上新的余數(shù)移入P0,得到十位數(shù)和個位數(shù)。
5. 退出中斷返回
DIV AB 結(jié)果:A/B的商放入A,余數(shù)放入B
原理圖:
1.png (36.93 KB)
下載附件
2021-5-6 01:28 上傳
匯編代碼:
- ORG 00H
- LJMP 30H ;turn to main
- ORG 03H
- LJMP 0200H
-
-
- ORG 30H
- MAIN: MOV P1, #00H ;hex
- MOV P0, #00H ;low2_dec
- MOV P2, #00H ;high1_dec
- SETB EX0 ;open it
- SETB IT0
- SETB EA ;open total switch
- HERE: INC P1
- MOV R7, #0FFH
- DJNZ R7, $
- SJMP HERE
- ORG 0200H
- EXCHANGE:
- MOV B, #64H ;div with 100 for P2-high1_dec
- MOV A, P1
- DIV AB
- MOV P2, A
- MOV A, B ;save remainder;
- MOV B, #0AH ;div with 10 for P0-low2_dec
- DIV AB
- SWAP A
- ADD A, B
- MOV P0, A
- RETI
- END
復(fù)制代碼
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會員個人意見,與本論壇立場無關(guān)。2、本站對所發(fā)內(nèi)容真實性、客觀性、可用性不做任何保證也不負(fù)任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進(jìn)行交流。3、對提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請勿將該數(shù)字內(nèi)容進(jìn)行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問題與本站無關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來,僅供學(xué)習(xí)用途使用,請務(wù)必下載后兩小時內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請及時聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|