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

📄 lengnuanfengji.asm

📁 采用中微半导体有限公司的66P23芯片
💻 ASM
📖 第 1 页 / 共 4 页
字号:
          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 + -