下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)控調頻臺匯編程序 日期:2011-05-21 來源:本站原創(chuàng) 作者:佚名 字體:大 中 小 (投遞新聞) ;26H-29H放顯示小數(shù)位、個位、十位、百位BCD碼數(shù),24H-25H放頻率控制數(shù)據(jù)(十六進制) ; CONBITL EQU 21H ;頻率控制字節(jié)低8位 CONBITH EQU 22H ;頻率控制字節(jié)高8位 KEYWORD EQU 23H ;存放鍵掃描時P1口值 ; ; ORG 0000H ;程序開始地址 LJMP START ;轉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 ;調查鍵子程序 LCALL DISPLAY ;LED顯示一次 AJMP MAIN ;轉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(有鍵按下)轉KEYCOON SETB P1.0 ; 掃描第二行(第二行為0) CLR P1.1 ; MO V A,P1 ; 讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCON ; 高四位不為全1(
5、有鍵按下)轉KEYCOON SETB P1.1 ; 掃描第三行(第三行為0) CLR P1.2 ; MOV A,P1 ; 讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCON ; 高四位不為全1(有鍵按下)轉KEYCOON SETB P1.2 ; 掃描第四行(第四行為0) CLR P1.3 ; MOV A,P1 ; 讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCON ; 高四位不為全1(有鍵按下)轉KEYCOON SETB P1.3 ;結束行掃描 RET ;子程序返回 KEYCON: LCALL DL10MS ;
6、消抖處理 MOV A,P1 ;再讀入P1口值 ANL A,#0F0H ; 低四位為0 CJNE A,#0F0H,KEYCHE ; 高四位不為全1,確有鍵按下,轉KEYCHE KEYOUT: RET ;干擾,子程序返回 KEYCHE: MOV A,P1 ;讀P1口值 MOV KEYWORD,A ;放入23H暫存 CJLOOP: LCALL DISPLAY ;調顯示子程序 MOV A,P1 ;讀P1口值 ANL A,#0F0H ;低四位為0 CJNE A,#0F0H,CJLOOP ;高四位為全1(鍵還按著),轉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(相等)轉KEYOK INC R7 ;不等,查表次數(shù)加1 CJNE R7,#10H,CHEKEYLOOP ;查表次數(shù)不超過16次轉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 ;取鍵功能散轉表首址 JMP A+DPTR ;查表 KEYFUNTAB: LJMP KEYFUN00 ; 鍵功能散轉表。跳至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 ;散轉出錯返回 ; ;鍵號對應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 ;清進位標志 CJNE A,#02H,FUN00 ; FUN00: JC FUN00OUT ;百位小于2轉FUNOO0UT MOV 29H,#00H ;大于等
10、于2清為0(百位只能是0或1) FUN00OUT: MOV A,29H ; 判斷百位是0還是1 XRL A,#01H ; JNZ F00OUT1 ;若百位為0轉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 ;清進位標志 CJNE A,#0AH,FUN01 ;判斷是否小于
11、10 FUN01: JC FUN01OUT ;十位數(shù)小于10轉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轉F001OUT MOV A,28H ; XRL A,#09H ;判斷是不是9 JZ F001OUT ;十位數(shù)是9轉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轉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轉FUN03OUT MOV 26H,#00H ;大于或等于10清為0 FUN03OUT: LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ;返回 ; ;04號鍵功能程序(頻率預置鍵) KEYFUN04: MOV 29H,#01H ; 預置109.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#09H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率)
14、RET ; ;05號鍵功能程序(頻率預置鍵) KEYFUN05: MOV 29H,#01H ; 預置108.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#08H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;06號鍵功能程序(頻率預置鍵) KEYFUN06: MOV 29H,#01H ; 預置105.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#05H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;07號鍵功能程序(頻率預置鍵) KEYFUN07:
15、 MOV 29H,#01H ; 預置100.0MHZ發(fā)射頻率 MOV 28H,#00H MOV 27H,#00H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;08號鍵功能程序(頻率預置鍵) KEYFUN08: MOV 29H,#00H ; 預置98.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#08H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;09號鍵功能程序(頻率預置鍵) KEYFUN09: MOV 29H,#00H ; 預置96.0MHZ發(fā)射頻率 MOV
16、 28H,#09H MOV 27H,#06H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;10號鍵功能程序(頻率預置鍵) KEYFUN10: MOV 29H,#00H ; 預置94.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#04H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;11號鍵功能程序(頻率預置鍵) KEYFUN11: MOV 29H,#00H ; 預置92.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#02H MOV 26H,#00
17、H LCALL DISPUPDAT ;寫入控制芯 片(修改發(fā)射頻率) RET ; ;12號鍵功能程序(頻率預置鍵) KEYFUN12: MOV 29H,#00H ; 預置90.0MHZ發(fā)射頻率 MOV 28H,#09H MOV 27H,#00H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;13號鍵功能程序(頻率預置鍵) KEYFUN13: MOV 29H,#00H ; 預置88.0MHZ發(fā)射頻率 MOV 28H,#08H MOV 27H,#08H MOV 26H,#00H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率)
18、 RET ; ;14號鍵功能程序(頻率預置鍵) ; 預置87.0MHZ發(fā)射頻率 KEYFUN14: MOV 29H,#00H MOV 28H,#08H MOV 27H,#07H MOV 26H,#08H LCALL DISPUPDAT ;寫入控制芯片(修改發(fā)射頻率) RET ; ;15號鍵功能程序(立體聲/單聲道設置鍵) KEYFUN15: CPL 03H ;立體/單聲標志取反 JNB 03H,MONO ;為0轉單聲道MONO CLR P3.3 ;為1開立體聲指示燈 LCALL PUTBIT ;發(fā)送控制字至BH1415 RET ;返回 MONO: SETB P3.3 ;關立體聲指示燈 LCAL
19、L PUTBIT ;發(fā)控制字至BH1415 RET ;返回 ; ; 將BCD碼轉為十六進制數(shù),與5位控制碼合成操作碼,寫入控制芯片 DISPUPDAT: LCALL BCDB ; 調BCD碼轉為十六進制數(shù)程序 LCALL CONCOMMAND ; 調與5位控制碼合成操作碼程序 LCALL PUTBIT ; 發(fā)控制字至BH1415 RET ;返回 ; ; 將BCD碼轉為十六進制數(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 ;調乘法子程序 MOV A,28H ;十位數(shù)乘100操作 MOV B,#100 ; LCALL MULLOOP ; 調乘法子程序 MOV A,29H ; JNZ ADD3E8 ;百位數(shù)為1轉ADD3E8(加1000操作) RET ; 百位數(shù)為0退出 ADD3E8: CLR C ;清進位檔標志 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 ;返回 ; ;乘法及累加處理程序(將四位顯示的十進制BCD碼轉為1個二進制數(shù)) MULLOOP: MUL AB ;乘法 CLR C ;清進位標志 ADD A,CONBITL ;積低8位與CONBITL相加 MOV CONBITL,A ;放回CONBITL MOV A,CONBITH ; ADDC A,B ;積高8位與CONBITH帶進位累加 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 ;設掃描字 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 ;關小數(shù)點 AJMP PLAY ;轉PLAY循環(huán) ENDOUT: MOV P2,#0FFH ;顯示結束,關顯示輸出口 MOV P0,#0FFH ; RET
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠級安全培訓試題【黃金題型】
- 新進廠員工安全培訓試題【網(wǎng)校專用】
- 各個班組安全培訓試題(綜合題)
- 第四單元 萬以內的加減法(二)(單元測試)-2024-2025學年三年級上冊數(shù)學人教版
- 第一單元達標測試卷-2024-2025學年統(tǒng)編版語文三年級上冊
- 2023-2024學年河北省衡水市景縣中學高三4月教學質量檢測試題(二模)(文+理)數(shù)學試題
- 第四單元 萬以內的加法和減法(二)(單元測試)-2024-2025學年三年級上冊數(shù)學人教版
- 高++中語文《憐憫是人的天性》課件+統(tǒng)編版高中語文選擇性必修中冊
- 2024屆衡水中學高中畢業(yè)班綜合測試(一)數(shù)學試題
- 7.1自由平等的真諦隨堂作業(yè)-八年級道德與法治下冊(統(tǒng)編版)(解析版)
- 2024年四年級英語上冊 Unit 4 When Do You Have Classes教案 陜旅版(三起)
- 防溺水、校園欺凌、交通安全教育主題班會
- 2024年遼寧撫順市事業(yè)單位面向駐撫部隊隨軍家屬招聘人員6人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- 2024年秋季新統(tǒng)編版七年級上冊道德與法治全冊教案
- 小學生主題班會奧運精神開學第一課(課件)
- 2024年九年級上冊道法月考試卷及答案
- 新解讀《JTGT 3392-2022高速公路改擴建交通組織設計規(guī)范》
- 2025年日歷A4紙打印
- 2023年國家管網(wǎng)集團高校畢業(yè)生招聘考試真題及答案
- 原發(fā)性中樞神經(jīng)系統(tǒng)淋巴瘤診斷及治療專家共識2024年版解讀
- DB65-T 4820-2024 公路工程施工安全風險辨識與管控實施指南
評論
0/150
提交評論