下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)控調(diào)頻臺匯編程序 日期:2011-05-21 來源:本站原創(chuàng) 作者:佚名 字體:大 中 小 (投遞新聞) ;26H-29H放顯示小數(shù)位、個位、十位、百位BCD碼數(shù),24H-25H放頻率控制數(shù)據(jù)(十六進(jìn)制) ; CONBITL EQU 21H ;頻率控制字節(jié)低8位 CONBITH EQU 22H ;頻率控制字節(jié)高8位 KEYWORD EQU 23H ;存放鍵掃描時P1口值 ; ; ORG 0000H ;程序開始地址 LJMP START ;轉(zhuǎn)START執(zhí)行 ORG 0003H ; RETI ;不用中斷程序 ORG 000BH ; RETI ; 不用中斷程序 ORG 0013H ; RETI ;
2、 不用中斷程序 ORG 001BH ; RETI ; 不用中斷程序 ORG 0023H ; RETI ; 不用中斷程序 ORG 002BH ; RETI ; 不用中斷程序 ; ;初始化程序 CLEARMEN: MOV R0,#20H ;20H-29H循環(huán)清0 MOV R1,#0AH ; CLEARLOOP: MOV R0,#00H ; INC R0 ; DJNZ R1,CLEARLOOP ; MOV P0,#0FFH ;四端口置1 MOV P1,#0FFH ; MOV P2,#0FFH ; MOV P3,#0FFH ; CLR P3.0 ;BH1415禁止操作 CLR P3.1 ; CLR P
3、3.2 ; LCALL KEYFUN15 ;置立體聲發(fā)射方式,開立體聲發(fā)射指示燈 CLEAR1: MOV PCON,#00H ;控制寄存器清0 MOV 29H,#00H ; 置初始值為88MHZ(顯示為088.0) MOV 28H,#08H ; MOV 27H,#08H ; MOV 26H,#00H ; LCALL DISPUPDAT ;寫入BH1415芯片(修改發(fā)送頻率) RET ;子程序返回 ; ;主程序 START: LCALL CLEARMEN ;上電初始化 MAIN: LCALL KEYWORK ;調(diào)查鍵子程序 LCALL DISPLAY ;LED顯示一次 AJMP MAIN ;轉(zhuǎn)M
4、AIN循環(huán) NOP ;PC出錯處理 NOP ; AJMP START ;重新初始化 ; ; 4*4行列掃描查鍵子程序 KEYWORK: MOV P1,#0FFH ; 置P1口為輸入狀態(tài) CLR P1.0 ;掃描第一行(第一行為0) MOV A,P1 ;讀入P1口值 ANL A,#0F0H ;低四位為0 CJNE A,#0F0H,KEYCON ;高四位不為全1(有鍵按下)轉(zhuǎn)KEYCOON SETB P1.0 ; 掃描第二行(第二行為0) CLR P1.1 ; MO V A,P1 ; 讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCON ; 高四位不為全1(
5、有鍵按下)轉(zhuǎn)KEYCOON SETB P1.1 ; 掃描第三行(第三行為0) CLR P1.2 ; MOV A,P1 ; 讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCON ; 高四位不為全1(有鍵按下)轉(zhuǎn)KEYCOON SETB P1.2 ; 掃描第四行(第四行為0) CLR P1.3 ; MOV A,P1 ; 讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCON ; 高四位不為全1(有鍵按下)轉(zhuǎn)KEYCOON SETB P1.3 ;結(jié)束行掃描 RET ;子程序返回 KEYCON: LCALL DL10MS ;
6、消抖處理 MOV A,P1 ;再讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCHE ; 高四位不為全1,確有鍵按下,轉(zhuǎn)KEYCHE KEYOUT: RET ;干擾,子程序返回 KEYCHE: MOV A,P1 ;讀P1口值 MOV KEYWORD,A ;放入23H暫存 CJLOOP: LCALL DISPLAY ;調(diào)顯示子程序 MOV A,P1 ;讀P1口值 ANL A,#0F0H ;低四位為0 CJNE A,#0F0H,CJLOOP ;高四位為全1(鍵還按著),轉(zhuǎn)CJLOOP等待釋放 MOV R7,#00H ;鍵釋放,置R7初值為#00H(查表次數(shù))
7、 MOV DPTR,#KEYTAB ;取鍵值表首址 CHEKEYLOOP: MOV A,R7 ;查表次數(shù)入A MOVC A,A+DPTR ;查表 XRL A,KEYWORD ;查表值與P1口讀入值比較 JZ KEYOK ;為0(相等)轉(zhuǎn)KEYOK INC R7 ;不等,查表次數(shù)加1 CJNE R7,#10H,CHEKEYLOOP ;查表次數(shù)不超過16次轉(zhuǎn)CHEKEYLOOP再查 RET ;16次到,退出 ; KEYOK: MOV A,R7 ;查表次數(shù)入A(即鍵號值) MOV B,A ;放入B RL A ;左移 ADD A,B ;相加(鍵號乘3處理JMP 3字節(jié)指令) MOV DPTR,#KEY
8、FUNTAB ;取鍵功能散轉(zhuǎn)表首址 JMP A+DPTR ;查表 KEYFUNTAB: LJMP KEYFUN00 ; 鍵功能散轉(zhuǎn)表。跳至0號鍵功能程序 LJMP KEYFUN01 ; 跳至01號鍵功能程序 LJMP KEYFUN02 ; 跳至02號鍵功能程序 LJMP KEYFUN03 LJMP KEYFUN04 LJMP KEYFUN05 LJMP KEYFUN06 LJMP KEYFUN07 LJMP KEYFUN08 LJMP KEYFUN09 LJMP KEYFUN10 LJMP KEYFUN11 LJMP KEYFUN12 LJMP KEYFUN13 LJMP KEYFUN14 L
9、JMP KEYFUN15 ; 跳至15號鍵功能程序 RET ;散轉(zhuǎn)出錯返回 ; ;鍵號對應(yīng)P1口數(shù)值表(同時按下兩鍵為無效操作) KEYTAB: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH DB 0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,0FFH,0FFH ; ;0號鍵功能程序 KEYFUN00: INC 29H ;百位數(shù)加1 MOV A,29H ;入A CLR C ;清進(jìn)位標(biāo)志 CJNE A,#02H,FUN00 ; FUN00: JC FUN00OUT ;百位小于2轉(zhuǎn)FUNOO0UT MOV 29H,#00H ;大于等
10、于2清為0(百位只能是0或1) FUN00OUT: MOV A,29H ; 判斷百位是0還是1 XRL A,#01H ; JNZ F00OUT1 ;若百位為0轉(zhuǎn)FOOOUT1 MOV 28H,#00H ;若百位為1,十位為0 AJMP F00OUT ; F00OUT1: MOV 28H,#08H ;若百位為0,十位數(shù)改為8 F00OUT: LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ;返回 ; ;01號鍵功能程序 KEYFUN01: INC 28H ;十位數(shù)加1 MOV A,28H ;入A CLR C ;清進(jìn)位標(biāo)志 CJNE A,#0AH,FUN01 ;判斷是否小于
11、10 FUN01: JC FUN01OUT ;十位數(shù)小于10轉(zhuǎn)FUN01OUT MOV 28H,#00H ;十位數(shù)大于或等于10清為0 FUN01OUT: MOV A,29H ;判斷百位數(shù)是0不是1 XRL A,#01H ; JNZ F01OUT ; MOV 28H,#00H ;百位數(shù)為1時,十位數(shù)為0 AJMP F001OUT ; F01OUT: MOV A,28H ;百 位為0時,十位數(shù)只能是8或9 XRL A,#08H ;判斷是不是8 JZ F001OUT ;十位數(shù)是8轉(zhuǎn)F001OUT MOV A,28H ; XRL A,#09H ;判斷是不是9 JZ F001OUT ;十位數(shù)是9轉(zhuǎn)F0
12、01OUT MOV 28H,#08H ;不是8也不是9,十位賦值為8 F001OUT: LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ;返回 ; ;02號鍵功能程序 KEYFUN02: INC 27H ;個位數(shù)加1 MOV A,27H ; CLR C ; CJNE A,#0AH,FUN02 ;判斷是否小于10 FUN02: JC FUN02OUT ;小于10轉(zhuǎn)FUN02OUT MOV 27H,#00H ;大于或等于10清為0 FUN02OUT: LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ; ;03號鍵功能程序 KEYFUN03: IN
13、C 26H ;個位數(shù)加1 MOV A,26H ; CLR C ; CJNE A,#0AH,FUN03 ;判斷是不小于10 FUN03: JC FUN03OUT ;小于10轉(zhuǎn)FUN03OUT MOV 26H,#00H ;大于或等于10清為0 FUN03OUT: LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ;返回 ; ;04號鍵功能程序(頻率預(yù)置鍵) KEYFUN04: MOV 29H,#01H ; 預(yù)置109.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#09H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率)
14、RET ; ;05號鍵功能程序(頻率預(yù)置鍵) KEYFUN05: MOV 29H,#01H ; 預(yù)置108.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#08H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;06號鍵功能程序(頻率預(yù)置鍵) KEYFUN06: MOV 29H,#01H ; 預(yù)置105.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#05H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;07號鍵功能程序(頻率預(yù)置鍵) KEYFUN07:
15、 MOV 29H,#01H ; 預(yù)置100.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#00H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;08號鍵功能程序(頻率預(yù)置鍵) KEYFUN08: MOV 29H,#00H ; 預(yù)置98.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#08H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;09號鍵功能程序(頻率預(yù)置鍵) KEYFUN09: MOV 29H,#00H ; 預(yù)置96.0MHZ發(fā)射頻率 MOV
16、 28H,#09H MOV 27H,#06H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;10號鍵功能程序(頻率預(yù)置鍵) KEYFUN10: MOV 29H,#00H ; 預(yù)置94.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#04H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;11號鍵功能程序(頻率預(yù)置鍵) KEYFUN11: MOV 29H,#00H ; 預(yù)置92.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#02H MOV 26H,#00
17、H LCALL DISPUPDAT ;寫入控制芯 片(修改發(fā)射頻率) RET ; ;12號鍵功能程序(頻率預(yù)置鍵) KEYFUN12: MOV 29H,#00H ; 預(yù)置90.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#00H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;13號鍵功能程序(頻率預(yù)置鍵) KEYFUN13: MOV 29H,#00H ; 預(yù)置88.0MHZ發(fā)射頻率 MOV 28H,#08H MOV 27H,#08H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率)
18、 RET ; ;14號鍵功能程序(頻率預(yù)置鍵) ; 預(yù)置87.0MHZ發(fā)射頻率 KEYFUN14: MOV 29H,#00H MOV 28H,#08H MOV 27H,#07H MOV 26H,#08H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;15號鍵功能程序(立體聲/單聲道設(shè)置鍵) KEYFUN15: CPL 03H ;立體/單聲標(biāo)志取反 JNB 03H,MONO ;為0轉(zhuǎn)單聲道MONO CLR P3.3 ;為1開立體聲指示燈 LCALL PUTBIT ;發(fā)送控制字至BH1415 RET ;返回 MONO: SETB P3.3 ;關(guān)立體聲指示燈 LCAL
19、L PUTBIT ;發(fā)控制字至BH1415 RET ;返回 ; ; 將BCD碼轉(zhuǎn)為十六進(jìn)制數(shù),與5位控制碼合成操作碼,寫入控制芯片 DISPUPDAT: LCALL BCDB ; 調(diào)BCD碼轉(zhuǎn)為十六進(jìn)制數(shù)程序 LCALL CONCOMMAND ; 調(diào)與5位控制碼合成操作碼程序 LCALL PUTBIT ; 發(fā)控制字至BH1415 RET ;返回 ; ; 將BCD碼轉(zhuǎn)為十六進(jìn)制數(shù)程序 BCDB: MOV CONBITL,#00H ; 控制字清0 MOV CONBITH,#00H ; 控制字清0 MOV CONBITL,26H ;小數(shù)位數(shù)放入控制字低8位 MOV A,27H ;個位數(shù)乘10操作 M
20、OV B,#10 ; LCALL MULLOOP ;調(diào)乘法子程序 MOV A,28H ;十位數(shù)乘100操作 MOV B,#100 ; LCALL MULLOOP ; 調(diào)乘法子程序 MOV A,29H ; JNZ ADD3E8 ;百位數(shù)為1轉(zhuǎn)ADD3E8(加1000操作) RET ; 百位數(shù)為0退出 ADD3E8: CLR C ;清進(jìn)位檔標(biāo)志 MOV A,#0E8H ;低8位加法 ADD A,CONBITL ;累加 MOV CONBITL,A ;放回CONBITL MOV A,#03H ; 高8位加法 ADDC A,CONBITH ;控制字高8 位處理 MOV CONBITH,A ;放回CONB
21、ITH RET ;返回 ; ;乘法及累加處理程序(將四位顯示的十進(jìn)制BCD碼轉(zhuǎn)為1個二進(jìn)制數(shù)) MULLOOP: MUL AB ;乘法 CLR C ;清進(jìn)位標(biāo)志 ADD A,CONBITL ;積低8位與CONBITL相加 MOV CONBITL,A ;放回CONBITL MOV A,CONBITH ; ADDC A,B ;積高8位與CONBITH帶進(jìn)位累加 MOV CONBITH,A ;放回CONBITH RET ;返回 ; ;頻率控制數(shù)據(jù)與5位控制碼合成BH1415控制字 CONCOMMAND: ANL CONBITH,#07H ;高四位為0 MOV A,20H ;控制字放入A ORL A,
22、CONBITH ;合成控制字 MOV CONBITH,A ;放回CONBITH RET ;返回 ; ; ; 顯示程序 ; ; ;共陽LED顯示,P0口輸出段碼,P2口輸出掃描字 DISPLAY: MOV R1,#26H ;顯示首址 MOV R5,#0FEH ;設(shè)掃描字 PLAY: MOV A,R5 ;放入A MOV P2,A ;P2口輸出 MOV A,R1 ;取顯示數(shù)據(jù) MOV DPTR,#TAB ;取段碼表首址 MOVC A,A+DPTR ;查段碼 MOV P0,A ;從P0輸出 MOV A,R5 ;讀入掃描字 JB ACC.1,PLAY1 ; 不是十位(LED),不顯示小數(shù)點 CLR P0.7 ;是十位,顯示小數(shù)點 PLAY1: LCALL DL1MS ;點亮1毫秒 INC R1 ;指向下一顯示數(shù)據(jù) JNB ACC.3,ENDOUT ;是第四位LED,退出 RL A ;不是,左移一位 MOV R5,A ;放回R5 SETB P0.7 ;關(guān)小數(shù)點 AJMP PLAY ;轉(zhuǎn)PLAY循環(huán) ENDOUT: MOV P2,#0FFH ;顯示結(jié)束,關(guān)顯示輸出口 MOV P0,#0FFH ; RET
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度會展中心場地租賃及配套服務(wù)補充協(xié)議3篇
- 2025年個人承包文化創(chuàng)意產(chǎn)業(yè)合同(創(chuàng)意設(shè)計)2篇
- 2024版支付擔(dān)保合同范本
- 2024生物質(zhì)鍋爐燃料供應(yīng)及銷售合同3篇
- 2024石膏板供應(yīng)商戰(zhàn)略合作采購合同模板3篇
- 2025年度專業(yè)廚師團隊廚房服務(wù)承包協(xié)議3篇
- 2024綠化土地租賃與生態(tài)補償及綠化管理合同3篇
- 2024鐵路貨運車輛安全檢測及維護(hù)服務(wù)合同實施細(xì)則3篇
- 多媒體應(yīng)用基礎(chǔ)知到智慧樹章節(jié)測試課后答案2024年秋安徽大學(xué)
- 2025年充電樁充電站運營維護(hù)及升級改造合同3篇
- 汽車租賃流程圖
- 兒童糖尿病的飲食
- “以案促改”心得體會
- 干細(xì)胞項目商業(yè)計劃書
- 安全事故現(xiàn)場處置方案(3篇)
- 中國通 用技術(shù)集團招聘筆試題庫
- 【MOOC】工程材料學(xué)-華中科技大學(xué) 中國大學(xué)慕課MOOC答案
- 就業(yè)招聘服務(wù)行業(yè)市場前瞻與未來投資戰(zhàn)略分析報告
- 收購居間服務(wù)合同
- 無人機航拍技術(shù)教案(完整版)
- 手繪pop教學(xué)課件
評論
0/150
提交評論