⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.asm

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 ASM
📖 第 1 页 / 共 2 页
字号:
             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 + -