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

📄 lengnuanfengji.asm

📁 采用中微半导体有限公司的66P23芯片
💻 ASM
📖 第 1 页 / 共 4 页
字号:
          JP         TRET

          LDIA       B'00000110'	      ;选择AN6通道,转换时钟为系统时钟的2分频
          CALL       AD_CONVERT
;********************************************************************
;********************************************************************
          LD         A,ADDATA
          ADDR       TMPL
          SZB        FLAGS,C
          INCR       TMPH

          INCR       ADCNT
          LDIA       08H
          SUBA       ADCNT							;检测8次AD,求平均值
          SNZB       FLAGS,Z
          JP         TRET

          CLR        ADCNT
          CLRB       FLAGS,C
          RRCR       TMPH
          RRCR       TMPL
          CLRB       FLAGS,C
          RRCR       TMPH
          RRCR       TMPL
          CLRB       FLAGS,C
          RRCR       TMPH
          RRCR       TMPL

          LDIA       9FH		;0BAH
          SUBA       TMPL
          LDIA       9FH		;0BAH
          SZB        FLAGS,C
          LD         TMPL,A

          LDIA       3AH                  ;当前A/D值-3AH
          SUBR       TMPL
          LDIA       65H
          SNZB       FLAGS,C
          LD         TMPL,A

          CALL       TABLE_CC
          LD         TMP_NTC,A

          SZB        WORK,CC_FF
          CALL       TABLE_FF
          LD         RAM_DSP,A

          CLR        TMPH
          CLR        TMPL
NTC_MAX_CHK:
          JP         TRET
;********************************************************************
;***************计时程序*********************************************
TIMING:
          SNZB       WORK,T1S_EN
          JP         TRET
          CLRB       WORK,T1S_EN

          INCR       TIME_3S
          LDIA       06H
          SUBA       TIME_3S
          SZB        FLAGS,C
          CLRB       FLAG,SET_MODE

          SNZB       WORK,ON_OFF
          JP         TRET

          SNZB       WORK,TIM_EN
          JP         TRET
          LDIA       0FH
          ANDR       TIMER
          SZB        FLAGS,Z
          JP         TRET

          SZDECR     TIMEL_30MIN
          JP         TRET
          SZDECR     TIMEH_30MIN
          JP         TRET
          CALL       INIT_30_MIN

          SZDECR     TIMER
          JP         TRET
          CLR        WORK
          CLR        PWR_CNT
          JP         TRET
;********************************************************************
;********************************************************************
INIT_1_SEC:
          LDIA       08H
          LD         TIMEH_1S,A
          LDIA       0D0H
          LD         TIMEL_1S,A
          RET        00H
;********************************************************************
;********************************************************************
INIT_30_SEC:
          LDIA       D'60'
          LD         TIMEL_30S,A
          RET        00H
;********************************************************************
;********************************************************************
INIT_30_MIN:
          LDIA       0FH
          LD         TIMEH_30MIN,A
          LDIA       0BH
          LD         TIMEL_30MIN,A
          RET        00H
;********************************************************************
;*************蜂鸣器驱动程序*****************************************
BEEP:
          LD         A,RBEEP
          SZB        FLAGS,Z
          JP         BEEP_OFF

          LDIA       01H
          SUBA       RBEEP
          SZB        FLAGS,Z
          JP         BPBP

          CLRB       P2_RAM,BUZ
          JP         BP_CNT
BPBP:
          LDIA       04H
          XORR       P2_RAM
BP_CNT:
          SZDECR     BEEPL
          JP         BEEP_BACK
          SZDECR     BEEPH
          JP         BEEP_BACK

          LDIA       02H
          LD         BEEPH,A
          LDIA       00H
          LD         BEEPL,A
          DECR       RBEEP
BEEP_OFF:
          CLRB       P2_RAM,BUZ
BEEP_BACK:
          LDIA       03H
          ORR        P2_RAM             ;关闭显示
          LD         A,P2_RAM
          LD         P2,A
          SETB       P0,LED_COM
          RET        00H
;********************************************************************
;********************************************************************
;===============A/D转换启动子程序====================================
;********************************************************************
;********************************************************************
AD_CONVERT:
          LD         ADCON,A
          NOP
          NOP
          SETB       ADCON,CONV
          NOP
          CLRB       ADCON,CONV
WAIT:
          SZB        ADCON,EOCB                   ;等待转换结束
          JP         WAIT
          RET        00H
;********************************************************************
;*************按键扫描程序*******************************************
KSCAN:
          LDIA       B'11111111'
          WRSR       P1CON

          LDIA       0FFH
          LD         P0,A
          LDIA       03H
          ORR        P2
          NOP
          NOP
          NOP
          CLR        KCOUNT
          CLRB       P0,4
          NOP
          NOP
          NOP
          NOP
          INCR       KCOUNT
          SNZB       P1,5
          JP         KHAVE

          INCR       KCOUNT
          SNZB       P1,6
          JP         KHAVE

          INCR       KCOUNT
          SNZB       P1,7
          JP         KHAVE

          LDIA       08H
          SUBA       KCOUNT
          SZB        FLAGS,C
          JP         KEY_NO

          CLRB       P0,5
          NOP
          NOP
          NOP
          NOP
          INCR       KCOUNT
          SNZB       P1,5
          JP         KHAVE

          INCR       KCOUNT
          SNZB       P1,6
          JP         KHAVE

          INCR       KCOUNT
          SNZB       P1,7
          JP         KHAVE

          CLRB       P0,7
          NOP
          NOP
          NOP
          NOP
          INCR       KCOUNT
          SNZB       P1,7
          JP         KHAVE

          INCR       KCOUNT
          SNZB       P1,6
          JP         KHAVE

          INCR       KCOUNT
          SNZB       P1,5
          JP         KHAVE
KEY_NO:
          CLR        KEYF
          CLR        KCOUNT
KEY_FLASH:
          LD         A,KCOUNT
          LD         KEY_OLD,A
          CLR        KCNTL
          JP         TRET
;********************************************************************
;********************************************************************
KHAVE:
          LD         A,KCOUNT
          SUBA       KEY_OLD
          SNZB       FLAGS,Z
          JP         KEY_FLASH

          INCR       KCNTL
          LDIA       10H
          SUBA       KCNTL
          SNZB       FLAGS,C
          JP         TRET

          CLR        KCNTL
          SZB        KEYF,PRESS
          JP         TRET

          SETB       KEYF,PRESS
          SETB       KEYF,CLICK
          JP         TRET
;********************************************************************
;********************℃和℉的进制转换*********************************
;********************************************************************
CC_TO_FF:
          SNZB       FLAG,CF_EN
          JP         TRET
          CLRB       FLAG,CF_EN
;--------------------------------------------------------------------
          LD         A,SET_CC                    ;设置的温度转换为十进制
          SZB        WORK,CC_FF                  ;用于设置值的十进制显示
          LD         A,SET_FF
          LD         ACCCL,A

          CALL       BIN_TO_BCD
          LD         A,R2
          LD         RAM_DSP,A
;--------------------------------------------------------------------
          LD         A,SET_CC                    ;调整摄氏和华氏设置值
          SZB        WORK,CC_FF
          LD         A,SET_FF
          LD         ACCCL,A
;--------------------------------------------------------------------
CALCUL1:
          LDIA       D'0'
          SZB        WORK,CC_FF
          LDIA       D'32'
          SUBR       ACCCL
          LDIA       09H
          SZB        WORK,CC_FF
          LDIA       05H
          CALL       AD_MUL
;--------------------------------------------------------------------
CALCUL2:
          LDIA       05H
          SZB        WORK,CC_FF
          LDIA       09H
          CALL       AD_DIV
;--------------------------------------------------------------------
CALCUL3:
          LDIA       D'32'
          SZB        WORK,CC_FF
          LDIA       D'0'
          ADDA       ACCCL
          SZB        WORK,CC_FF
          JP         BCD_TO_CC
BCD_TO_FF:
          LD         SET_FF,A
          JP         CALCUL4
BCD_TO_CC:
          LD         SET_CC,A
;--------------------------------------------------------------------
CALCUL4:
          LD         A,SET_CC       ;设置的温度转换为十进制
          LD         ACCCL,A        ;方便与NTC的实际温度比较

          CALL       BIN_TO_BCD			;二进制转十进制
          LD         A,R2
          LD         TMP_SET,A
          JP         TRET
;********************************************************************
;********************************************************************
START:
          CLRWDT
          LDIA       B'00000000'
          WRSR       PRESCAL
          LDIA       B'00000010'
          LD         COMPCON,A			;允许P1口上拉电阻有效

          LDIA       0FFH
          LD         P0,A
          LD         P1,A

          CLR        P2
          CLR        P3
          LDIA       B'01000000'		;置I/O口线输入输出状态
          WRSR       P0CON
          LDIA       B'00000000'
          WRSR       P1CON
          LDIA       B'01000000'
          WRSR       P2CON
;********************************************************************
;****************所有通用RAM清零*************************************
CLR_RAM:
          LDIA       010H
          LD         FSR,A
CLR_LOOP:
          CLR        IAR
          SETB       FSR,4
          SZINCR     FSR
          JP         CLR_LOOP
;********************************************************************
;****************初始化寄存器****************************************
INIT_RAM:
          CLRWDT
          LDIA       02H
          LD         RBEEP,A
          LD         BEEPH,A
          LDIA       D'68'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -