📄 lengnuanfengji.asm
字号:
LD SET_FF,A
LDIA D'20'
LD SET_CC,A
LDIA 20H
LD TMP_SET,A
CALL INIT_1_SEC
;********************************************************************
;****************主程序循环一次250US*********************************
MAIN:
LDIA D'125'
SUBA TMR
SNZB FLAGS,C
JP MAIN
;********************************************************************
;********************************************************************
LD TMR,A
LDIA 04H
ADDR TMR
CLRWDT
LDIA B'00000000'
WRSR PRESCAL
LDIA B'00000010'
LD COMPCON,A
LDIA B'01000000'
WRSR P0CON
LDIA B'00000000'
WRSR P1CON
LDIA B'01000000'
WRSR P2CON
CALL BEEP ;调用蜂鸣器驱动程序
CALL DELAY_500MS ;调用计时程序
;****************分支跳转程序*************************************
INCR TCOUNT
LD A,TCOUNT
ANDIA 0FH
ADDR PCL
JP TRET
JP KSCAN
JP MAINK
JP OUT_CTRL
JP DISP_H8
JP DISP_L8
JP DISP_LED
JP TMP_CHK
JP CC_TO_FF
CLR TCOUNT
JP TIMING
;********************************************************************
;***************显示数码管高字节**************************************
DISP_H8:
LDIA 0FFH
LD TEMP,A
SNZB WORK,ON_OFF
JP DISP_H8_COM2
SWAPA RAM_DSP
CALL BCD_TABLE
SNZB FLAG,SET_MODE
JP DISP_H8_COM1
SZB WORK,FLASH
DISP_H8_COM1:
LD TEMP,A
DISP_H8_COM2:
LD A,TEMP
LD P1,A
CLRB P2,COM1
JP TRET
;********************************************************************
;***************显示数码管低字节**************************************
DISP_L8:
LDIA 0FFH
LD TEMP,A
SNZB WORK,ON_OFF
JP DISP_L8_COM2
LD A,RAM_DSP
CALL BCD_TABLE
SNZB FLAG,SET_MODE
JP DISP_L8_COM1
SZB WORK,FLASH
DISP_L8_COM1:
LD TEMP,A
SZB WORK,CC_FF
CLRB TEMP,5
DISP_L8_COM2:
LD A,TEMP
LD P1,A
CLRB P2,COM2
JP TRET
;********************************************************************
;*************显示LED灯程序******************************************
DISP_LED:
LDIA 0FFH
LD TEMP,A
SNZB WORK,ON_OFF
JP DISP_LED_COM
SNZB WORK,CC_FF
CLRB TEMP,5 ;CC
SZB FLAG,OUT_EN
JP LED_PTC_ON
SZB WORK,FLASH
JP LED_PTC_OFF
LED_PTC_ON:
SZB PWR_CNT,0
CLRB TEMP,0
SZB PWR_CNT,1
CLRB TEMP,7
LED_PTC_OFF:
SZB WORK,FAN_EN1
CLRB TEMP,6
SZB WORK,FAN_EN2
CLRB TEMP,6
SNZB WORK,TIM_EN
JP DISP_LED_COM
SZB TIMER,0
CLRB TEMP,4 ;05H
SZB TIMER,1
CLRB TEMP,1 ;1H
SZB TIMER,2
CLRB TEMP,2 ;2H
SZB TIMER,3
CLRB TEMP,3 ;4H
DISP_LED_COM:
LD A,TEMP
LD P1,A
CLRB P0,0
JP TRET
;********************************************************************
;***************遥控键值**********************************************
TAB_RKEY:
LDIA 07H
ANDA KCOUNT
ADDR PCL
RET 00H
RET 81H
RET 84H
RET 90H
RET 82H
RET 0B8H
RET 0C3H
RET 88H
;********************************************************************
;**************计时程序**********************************************
DELAY_500MS:
SZDECR TIMEL_1S
RET 00H
SZDECR TIMEH_1S
RET 00H
CALL INIT_1_SEC
LDIA B'00010000' ;闪烁标志位
XORR WORK
SETB WORK,T1S_EN ;半秒标志位
RET 00H
;********************************************************************
;*************乘法程序***********************************************
AD_MUL:
LD MULCND,A
LDIA 08H
LD COUNT,A
CLR H_BYTE
CLR L_BYTE
MUL_LOOP:
RRCR MULCND
LD A,ACCCL
SZB FLAGS,C
ADDR H_BYTE
RRCR H_BYTE
RRCR L_BYTE
SZDECR COUNT
JP MUL_LOOP
RET 00H
;********************************************************************
;*************除法程序***********************************************
AD_DIV:
LD MULCND,A
LDIA D'16'
LD COUNT,A
CLR TEMPH
CLR TEMPL
AD_DIV_1:
CLRB FLAGS,C
RLCR L_BYTE
RLCR H_BYTE
RLCR TEMPL
RLCR TEMPH
SZB FLAGS,C
JP AD_DIV_3
CLRA
SUBA TEMPH
; SNZB FLAGS,C
; JP AD_DIV_4
SNZB FLAGS,Z
JP AD_DIV_3
AD_DIV_2:
LD A,MULCND
SUBA TEMPL
SNZB FLAGS,C
JP AD_DIV_4
AD_DIV_3:
LD A,MULCND
SUBR TEMPL
SNZB FLAGS,C
DECR TEMPH
CLRA
SUBR TEMPH
SETB FLAGS,C
AD_DIV_4:
RLCR ACCCL
RLCR ACCCH
SZDECR COUNT
JP AD_DIV_1
RET 00H
;********************************************************************
;*********************2字节二进制码转换成5位BCD码*********************
;********************************************************************
;入口参数:H_BYTE--L_BYTE中存放二进制码
;出口参数:R0-R1-R2中存放转换的5位BCD码
;********************************************************************
;********************************************************************
BIN_TO_BCD:
CLR R2
CHK_LOOP:
LDIA D'10'
SUBA ACCCL
SZB FLAGS,C
JP BIN_LOOP
LD A,ACCCL
ORR R2
RET 00H
BIN_LOOP:
LD ACCCL,A
LDIA 10H
ADDR R2
JP CHK_LOOP
;********************************************************************
;********************************************************************
;程序功能:5104遥控接收程序
;********************************************************************
;********************************************************************
TRET:
SZB RBEEP,0
JP TRET1
SNZB P2,RECR ;遥控接收口的状态
JP R_INT_LOW
LD A,RLOW
SZB FLAGS,Z
JP INT_NO_CODE
LDIA 04H
SUBA RLOW
SZB FLAGS,C
CLR RHIGH
RLCR RCODE
SZB ST,4
JP INT_CHECK_OK
CLR RLOW
LDIA 0FH
ANDR RCODE
LDIA 0DH
SUBA RCODE
SNZB FLAGS,Z
JP INT_NO_CODE
SETB ST,4
CLR RCOUNT
CLR RHIGH
JP INT_END
INT_NO_CODE:
CLR RLOW
INCR RHIGH
LDIA 040H
SUBA RHIGH
SZB FLAGS,C
JP INT_NO_CODE_OK
LDIA 010H
SUBA RHIGH
SNZB FLAGS,C
JP INT_END
INT_BIT_ERR:
CLRB ST,4
JP INT_END
INT_NO_CODE_OK:
CLR ROLD
INT_NO_CODE_OK_1:
CLR RHIGH
CLRB ST,7
JP INT_END
INT_CHECK_OK:
CLR RHIGH
CLR RLOW
INCR RCOUNT
LDIA 08H
SUBA RCOUNT
SNZB FLAGS,Z
JP INT_END
;********************************************************************
;********************************************************************
INT_BIT_CODE:
SZB ST,7
JP INT_END ;响应遥控后按键仍未释放则不再响应
LD A,ROLD
SUBA RCODE
SNZB FLAGS,Z
JP INT_BIT_TWO
SETB ST,7
CLR KCOUNT
RKEY_CHK_LOOP:
INCR KCOUNT
LDIA 08H
SUBA KCOUNT
SZB FLAGS,C
JP INT_BIT_ERR
CALL TAB_RKEY ;调用遥控键值
SUBA RCODE
SZB FLAGS,Z
JP MAINK1
JP RKEY_CHK_LOOP
INT_BIT_TWO:
LD A,RCODE
LD ROLD,A
JP INT_NO_CODE_OK_1
R_INT_LOW:
INCR RLOW
INT_END:
TRET1:
JP MAIN
;********************************************************************
;********************************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -