?? 數控調頻臺控制程序.txt
字號:
MOV 27H,#05H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;07號鍵功能程序(頻率預置鍵)
KEYFUN07: MOV 29H,#01H ; 預置100.0MHZ發射頻率
MOV 28H,#00H
MOV 27H,#00H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;08號鍵功能程序(頻率預置鍵)
KEYFUN08: MOV 29H,#00H ; 預置98.0MHZ發射頻率
MOV 28H,#09H
MOV 27H,#08H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;09號鍵功能程序(頻率預置鍵)
KEYFUN09: MOV 29H,#00H ; 預置96.0MHZ發射頻率
MOV 28H,#09H
MOV 27H,#06H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;10號鍵功能程序(頻率預置鍵)
KEYFUN10: MOV 29H,#00H ; 預置94.0MHZ發射頻率
MOV 28H,#09H
MOV 27H,#04H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;11號鍵功能程序(頻率預置鍵)
KEYFUN11: MOV 29H,#00H ; 預置92.0MHZ發射頻率
MOV 28H,#09H
MOV 27H,#02H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;12號鍵功能程序(頻率預置鍵)
KEYFUN12: MOV 29H,#00H ; 預置90.0MHZ發射頻率
MOV 28H,#09H
MOV 27H,#00H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;13號鍵功能程序(頻率預置鍵)
KEYFUN13: MOV 29H,#00H ; 預置88.0MHZ發射頻率
MOV 28H,#08H
MOV 27H,#08H
MOV 26H,#00H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;14號鍵功能程序(頻率預置鍵) ; 預置87.0MHZ發射頻率
KEYFUN14: MOV 29H,#00H
MOV 28H,#08H
MOV 27H,#07H
MOV 26H,#08H
LCALL DISPUPDAT ;寫入控制芯片(修改發射頻率)
RET
;
;15號鍵功能程序(立體聲/單聲道設置鍵)
KEYFUN15: CPL 03H ;立體/單聲標志取反
JNB 03H,MONO ;為0轉單聲道MONO
CLR P3.3 ;為1開立體聲指示燈
LCALL PUTBIT ;發送控制字至BH1415
RET ;返回
MONO: SETB P3.3 ;關立體聲指示燈
LCALL PUTBIT ;發控制字至BH1415
RET ;返回
;
; 將BCD碼轉為十六進制數,與5位控制碼合成操作碼,寫入控制芯片
DISPUPDAT: LCALL BCDB ; 調BCD碼轉為十六進制數程序
LCALL CONCOMMAND ; 調與5位控制碼合成操作碼程序
LCALL PUTBIT ; 發控制字至BH1415
RET ;返回
;
; 將BCD碼轉為十六進制數程序
BCDB: MOV CONBITL,#00H ; 控制字清0
MOV CONBITH,#00H ; 控制字清0
MOV CONBITL,26H ;小數位數放入控制字低8位
MOV A,27H ;個位數乘10操作
MOV B,#10 ;
LCALL MULLOOP ;調乘法子程序
MOV A,28H ;十位數乘100操作
MOV B,#100 ;
LCALL MULLOOP ; 調乘法子程序
MOV A,29H ;
JNZ ADD3E8 ;百位數為1轉ADD3E8(加1000操作)
RET ; 百位數為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 ;放回CONBITH
RET ;返回
;
;乘法及累加處理程序(將四位顯示的十進制BCD碼轉為1個二進制數)
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 ;返回
;
;頻率控制數據與5位控制碼合成BH1415控制字
CONCOMMAND: ANL CONBITH,#07H ;高四位為0
MOV A,20H ;控制字放入A
ORL A,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 ;取顯示數據
MOV DPTR,#TAB ;取段碼表首址
MOVC A,@A+DPTR ;查段碼
MOV P0,A ;從P0輸出
MOV A,R5 ;讀入掃描字
JB ACC.1,PLAY1 ; 不是十位(LED),不顯示小數點
CLR P0.7 ;是十位,顯示小數點
PLAY1: LCALL DL1MS ;點亮1毫秒
INC R1 ;指向下一顯示數據
JNB ACC.3,ENDOUT ;是第四位LED,退出
RL A ;不是,左移一位
MOV R5,A ;放回R5
SETB P0.7 ;關小數點
AJMP PLAY ;轉PLAY循環
ENDOUT: MOV P2,#0FFH ;顯示結束,關顯示輸出口
MOV P0,#0FFH ;
RET ;返回
;
;0-9共陽段碼表
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0FFH
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 發送控制字節子程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
PUTBIT: MOV A,CONBITL ;低8位控制字入A
SETB P3.2 ;BH1415使能(允許寫)
LCALL PUT ;發送8位
MOV A,CONBITH ; 高8位控制字入A
LCALL PUT ; 發送8位
CLR P3.2 ; BH1415寫禁止
CLR P3.0 ;復位
CLR P3.1 ;復位
RET ;返回
;
;字節發送子程序
PUT: MOV R3,#8 ;發送8位控制
CLR C ;清C
PUT1: RRC A ;帶進位位右移(先發低位)
MOV P3.0,C ;低位送至P3.0口
NOP ;延時4微秒
NOP ;
NOP ;
NOP ;
SETB P3.1 ;鎖存數據(上升沿時鎖存數據)
NOP ;延時4微秒
NOP ;
NOP ;
NOP ;
CLR P3.1 ;
DJNZ R3,PUT1 ;8位未發完轉PUT1再發
RET ; 8位發完結束
;
;513微秒延時子程序
DL513: MOV R3,#0FFH
DL513LOOP: DJNZ R3,DL513LOOP
RET
;
;1毫秒延時子程序(LED點亮用)
DL1MS: MOV R4,#02H
DL1MSLOOP: LCALL DL513
DJNZ R4,DL1MSLOOP
RET
;
;10毫秒延時子程序(消抖動用)
DL10MS: MOV R6,#0AH
DL10MSLOOP: LCALL DL1MS
DJNZ R6,DL10MSLOOP
RET
;
;
END ;程序結束
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -