標(biāo)題: 關(guān)于單片機(jī)匯編語(yǔ)言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換 [打印本頁(yè)]

作者: WBSY    時(shí)間: 2021-4-29 21:21
標(biāo)題: 關(guān)于單片機(jī)匯編語(yǔ)言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換
今天學(xué)習(xí)了中斷,任務(wù)是利用中斷進(jìn)行數(shù)制轉(zhuǎn)換,并利用數(shù)碼管顯示轉(zhuǎn)換前后數(shù)字、原理圖放下面

PS:本次進(jìn)制轉(zhuǎn)換為16進(jìn)制轉(zhuǎn)換為10進(jìn)制,只是例子
照例先說(shuō)我的思路:
1. 我在主程序先對(duì)P1置零(為了讓十六進(jìn)制數(shù)從0開(kāi)始)
2. 然后對(duì)P1進(jìn)行加1的操作,并循環(huán)以及延時(shí)(為了容易看清是否轉(zhuǎn)換)
3. 配置中斷,開(kāi)啟外部中斷0,設(shè)置觸發(fā)方式為電平觸發(fā),開(kāi)啟中斷總控制(這里的配置務(wù)必跟著自己的電路圖來(lái),這里是我電路圖對(duì)對(duì)應(yīng)的配置)
4. 編寫(xiě)中斷子程序,里面對(duì)P1做除法,除以0x64H0x100D配(由于是兩位十六進(jìn)制最多百位數(shù),所以除以100)為了得到百位數(shù),并將移到P2(這里剛 好高位為0,不影響)作百位數(shù),并對(duì)剩下來(lái)的余數(shù)進(jìn)行除10得到新的商,字節(jié)內(nèi)交換后,將交換后新商加上新的余數(shù)移入P0,得到十位數(shù)和個(gè)位數(shù)。
5. 退出中斷返回

DIV AB   結(jié)果:A/B的商放入A,余數(shù)放入B

原理圖:


代碼如下:
  1.                 ORG 00H
  2.                 LJMP 30H                ;turn to main
  3.                 ORG 03H
  4.                 LJMP 0200H
  5.                
  6.         
  7.                 ORG 30H
  8. MAIN:        MOV P1, #00H        ;hex
  9.                 MOV P0, #00H        ;low2_dec
  10.                 MOV P2, #00H        ;high1_dec
  11.                 SETB EX0                ;open it
  12.                 SETB IT0
  13.                 SETB EA                        ;open total switch
  14. HERE:        INC P1
  15.                 MOV R7, #0FFH
  16.                 DJNZ R7, $
  17.                 SJMP HERE
  18.                 ORG 0200H
  19. EXCHANGE:        
  20.                 MOV B, #64H                ;div with 100 for P2-high1_dec
  21.                 MOV A, P1
  22.                 DIV AB
  23.                 MOV P2, A
  24.                 MOV A, B                ;save remainder;
  25.                 MOV B, #0AH                ;div with 10 for P0-low2_dec
  26.                 DIV AB
  27.                 SWAP A
  28.                 ADD A, B
  29.                 MOV P0, A
  30.                 RETI
  31. END
復(fù)制代碼






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1