單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)(匯編語(yǔ)言)_第1頁(yè)
單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)(匯編語(yǔ)言)_第2頁(yè)
單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)(匯編語(yǔ)言)_第3頁(yè)
單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)(匯編語(yǔ)言)_第4頁(yè)
單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)(匯編語(yǔ)言)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、KEYBUF EQU 40H ; 鍵號(hào)存放單元ORG 0000HLJMP MAINORG 0030HMAIN: MOV KEYBUF,#0 ; 初始鍵號(hào)設(shè)位0,也可以為任意值MOV R0,#30H ; 顯示首地址MOV R2,#0CH ; 計(jì)算數(shù)據(jù)存放單元個(gè)數(shù)CLR AQING: MOV R0,A ; 將數(shù)據(jù)存放單元清零INC R0DJNZ R2,QINGMOV P0,#8FH ; 關(guān)閉顯示MOV R1,#30H ; 將顯示首地址存放R1里;=; 五位無(wú)符號(hào)顯示子程序DIS1: MOV R0,#30H ; 把顯示數(shù)據(jù)第一位放在R0里MOV R2,#04H ; 把顯示的位碼放在R2里MOV R3

2、,#05H ; 把顯示的長(zhǎng)度放在R3里DIS2: MOV A,R0ANL A,#0FH ; 屏蔽顯示數(shù)據(jù)的高四位MOV B,AMOV A,R2ANL A,#0FH ; 屏蔽位碼的高四位SW AP AORL A,BMOV P0,A ; 送總顯示數(shù)據(jù)到P0顯示 LCALL DELY4ms ; 調(diào)用延時(shí)4msINC R0 ; 取下一個(gè)顯示數(shù)據(jù)DEC R2DJNZ R3,DIS2 ; 四位顯示晚后重新開(kāi)始顯示;=; 鍵盤(pán)掃描子程序WAIT: MOV P1,#0FFH ;P1口送高電平CLR P1.0 ; 第一行清零MOV A,P1 ; 讀P1口ANL A,#0F0H ; 低位屏蔽XRL A,#0F0H

3、 ; 判斷低位是否有低電平 , 即判斷是否有按鍵按下 JZ NOKEY1 ; 地位有低電平繼續(xù)掃描, 否者跳到第而行去掃描 LCALL DELY10ms ; 延時(shí)10ms 去抖在進(jìn)行判斷是否有按鍵按下 MOV A,P1 ; 繼續(xù)讀P1口ANL A,#0F0H ; 判斷低位是否有低電平CJNE A,#0E0H,NK1 ; 如果掃描數(shù)據(jù)不為0E0H 就轉(zhuǎn)到NK1MOV KEYBUF,#0 ; 否者判斷為0號(hào)鍵AJMP DK ; 轉(zhuǎn)DK1查表程序NK1: CJNE A,#0D0H,NK2 ; 如果掃描數(shù)據(jù)不為0D0H 就轉(zhuǎn)到NK2MOV KEYBUF,#1 ; 否者判斷為1號(hào)鍵AJMP DK ; 轉(zhuǎn)

4、DK2查表程序NK2: CJNE A,#0B0H,NK3 ; 如果掃描數(shù)據(jù)不為0B0H 就轉(zhuǎn)到NK3MOV KEYBUF,#2 ; 否者判斷為2號(hào)鍵AJMP DK ; 轉(zhuǎn)DK3查表程序NK3: CJNE A,#70H,NK4 ; 如果掃描數(shù)據(jù)不為70H 就轉(zhuǎn)到NK4LJMP SAN_CHUNK4: NOPNOKEY1: MOV P1,#0FFH; 和上面相同 CLR P1.1MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY2LCALL DELY10MSMOV A,p1ANL A,#0F0HXRL A,#0F0HJZ NOKEY2MOV A,P1ANL A,#0F0H

5、CJNE A,#0E0H,NK5MOV KEYBUF,#3AJMP DKNK5: CJNE A,#0D0H,NK6MOV KEYBUF,#4AJMP DKNK6: CJNE A,#0B0H,NK7MOV KEYBUF,#5AJMP DKNK7: CJNE A,#70H,NK8MOV KEYBUF,#10; 否者判斷為3號(hào)鍵 AJMP DK; 轉(zhuǎn)DK4查表程序 NK8: NOPNOKEY2: MOV P1,#0FFHCLR P1.2MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY3LCALL DELY10MSANL A,#0F0HXRL A,#0F0HJZ NOKEY

6、3MOV A,P1ANL A,#0F0HCJNE A,#0E0H,NK9MOV KEYBUF,#6AJMP DKNK9: CJNE A,#0D0H,NK10MOV KEYBUF,#7AJMP DKNK10: CJNE A,#0B0H,NK11MOV KEYBUF,#8AJMP DKNK11: CJNE A,#70H,NK12LJMP DENG_HAONK12: NOPNOKEY3: MOV P1,#0FFHCLR P1.3MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY4LCALL DELY10MSMOV A,P1ANL A,#0F0HXRL A,#0F0HJZ N

7、OKEY4MOV A,P1ANL A,#0F0HCJNE A,#0E0H,NK13LJMP CHUNK13: CJNE A,#0D0H,NK14LJMP CHENGNK14: CJNE A,#0B0H,NK15LJMP JIANNK15: CJNE A,#70H,NK16LJMP JIANK16: NOP;=; 查表求鍵值程序MOV A,KEYBUF ; 查表程序 查對(duì)應(yīng)的鍵號(hào)數(shù)據(jù)MOV DPTR,#TABLE ; 把表頭地址放入DPTRMOVC A,A+DPTR ;A 里面存放的為鍵號(hào), 利用A 和表頭地址找到對(duì)應(yīng)的鍵號(hào)數(shù)據(jù)MOV B,A ; 把查到的數(shù)據(jù)送往顯示單元INC R1 ; 取下一

8、個(gè)顯示單元MOV A,R1CJNE A,#36H,DKA1 ; 判斷顯示單元是否已滿MOV R1,#35H ;35H,36H 單元用于更好的控制五位顯示AJMP DKADKA1: MOV 34H,33H ; 按鍵代碼按左移顯示,先按先顯示MOV 33H,32HMOV 32H,31HMOV 31H,30HMOV 30H,BDKA: MOV A,P1 ; 讀P1口ANL A,#0F0H ; 屏蔽高四位XRL A,#0F0H ; 地位是有低電平JNZ DKA ; 如果有低電平繼續(xù)讀P1口, 否者向下執(zhí)行, 查找第二行 NOKEY4: LJMP DIS1;=; 功能按鍵功能設(shè)定DENG_HAO:MOV

9、 DPTR,#JI_SUAN ; 等號(hào)鍵功能通過(guò)加、減、乘、除設(shè)定的偏移量來(lái)調(diào)用子程序MOV A,3CH ;3CH 存放的為功能程序入口地址偏移量JMP A+DPTR ; 轉(zhuǎn)移到按鍵功能程序JI_SUAN: AJMP JIA1 ; 加計(jì)算子程序AJMP JIAN1 ; 減計(jì)算子程序AJMP CHENG1 ; 乘計(jì)算子程序AJMP CHU ; 除計(jì)算子程序;=刪除鍵功能SAN_CHU: ACALL QING_DISAJMP DKA;=加鍵功能JIA: MOV 3CH,#00HACALL CUN_SHUACALL QING_DISAJMP DKA;=減鍵功能JIAN: MOV 3CH,#02HAC

10、ALL CUN_SHUACALL QING_DISAJMP DKA;=乘鍵功能CHENG: MOV 3CH,#04HACALL CUN_SHUACALL QING_DISAJMP DKA;=除鍵功能CHU: MOV 3DH,#06HACALL CUN_SHUACALL QING_DISAJMP DKA;=; 存被加(減、乘、除)數(shù),存放在37H3BH里 CUN_SHU: MOV 37H,30H ;36H 存放的為最低位 MOV 38H,31HMOV 39H,32HMOV 3AH,33HMOV 3BH,34H ;3AH 存放的為最高位 RET;=; 清除顯示單元QING_DIS: MOV R1,

11、#30HQING1: MOV R1,#00HINC R1MOV A,R1CJNE A,#36H,QING1MOV R1,#30HLOP1: RET;=; 十進(jìn)制加法子程序JIA1:MOV A,37H ; 個(gè)位被加數(shù)ADD A,30H ; 個(gè)位被加數(shù)+加數(shù)MOV B,#10 ; 十六進(jìn)制除10轉(zhuǎn)換成BCD 碼 DIV ABMOV 30H,B ; 余數(shù)即個(gè)位存放在30H MOV 37H,A ; 商存放在37HMOV A,38H ; 十位被加數(shù)ADD A,31H ; 十位被加數(shù)+加數(shù)ADD A,37H ; 加上個(gè)位之和的進(jìn)位MOV 37H,#00H MOV B,#10 DIV AB MOV 31H,

12、B MOV 38H,A MOV A,39H ADD A,32H ADD A,38H MOV 38H,#00H MOV B,#10 DIV AB MOV 32H,B MOV 39H,A MOV A,3AH ADD A,33H ADD A,39H MOV 39H,#00H MOV B,#10 DIV AB MOV 33H,B MOV 3AH,A ;清除 37H ;十六進(jìn)制除 10 轉(zhuǎn)換成 BCD 碼 ;余數(shù)即十位存放在 31H ;商存放在 38H ;百位計(jì)算同十位 ;千位計(jì)算同十位 MOV A,3BH ;萬(wàn)位計(jì)算同十位 ADD A,34H ADD A,3AH MOV 3AH,#00H MOV B,#10 DIV AB MOV 34H,B MOV 3BH,#00H AJMP DKA ;= JIAN1: AJMP DKA CHENG1: AJMP DKA CHU1: AJMP DKA ;= ;延時(shí)程序和查表表格 DELY4ms: MOV R6,#8 ;延時(shí) 4 毫秒 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET DEL

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論