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

📄 mainn.asm

📁 本资源包含了单片机键盘、a/d、频率测试等源代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
LIST      P=16F72;F=INHX8M
#INCLUDE   P16F72.inc
#define SDA  PORTA,3
#define SCL  PORTA,1

;50H.1         SHIJIANPANDUAN
;50H.2         WENDUBIJIAOBIAOZHI
;---------------------------------
           CBLOCK   0X20
            DISP1      ;定义6个显示缓冲区
	    DISP2
	    DISP3
            DISP4
	    DISP5
            DISP6
	    W_STACK                  ;中断时用于暂存W寄存器值
            ST_STACK                  ;中断时用于暂存STATUS寄存器值
            FLAG                      ;标志寄存器 
            ADDR          ;温度地址2401中00H为温度值,01H为小时;02H为分钟
	    COUNT
            TEMP       
            DAT
	    ADTEMP
	    REALT
	    TPRE         ;
	    TIPRE1OH
            TIPRE1OM		
            TIPRE1FH
            TIPRE1FM
            TIPRE2OH
	    TIPRE2OM
            TIPRE2FH
	    TIPRE2FM
	    TIPRE3OH
	    TIPRE3OM	
            TIPRE3FH
	    TIPRE3FM
	    DH
            DM 
            SETCOUNT
	    ENDC


;***********标志寄存器位定义以及程序中常数定义***********
   CONSTANT   SETF=0      ;设置键按下标志
   CONSTANT   UDF=1        ;增减键按下标志

;------------------------------------------------

            ORG     0x0000
            GOTO    MAIN
            ORG    0X0004
            GOTO   INTPRO

            ORG 0X50
MAIN    BCF STATUS,RP0
        CLRF PORTC     
	BSF STATUS,RP0
        MOVLW 0X00
        MOVWF TRISC   ;C口定义为输出RC0-RC6为数码管A-G段,RC7为分钟低位位选W6
            
	MOVLW 0XE0
            MOVWF TRISB   ;RB0为温度高位位选W1,RB1为温度低位位选W2,RB2为小时高位
                          ;RB3为小时低位,RB4为分钟高位,RB5=SET,RB6=UP,RB7=DOWN
            
            MOVLW   0x00
            MOVWF   OPTION_REG ;开启弱上拉功能 
            MOVLW 0XFF
            MOVWF ADCON1       ;A全部设置为数字口   
            MOVLW 0XFF
            MOVWF TRISA  
            BCF PIR1
            BCF STATUS,RP0
            MOVLW 0XFF
            MOVWF PORTB
            MOVLW 0X00
            MOVWF INTCON
            MOVLW 0X40
            MOVWF ADCON0   ;FOSC/8
            CLRF PORTA
            BSF PORTA,5
            ;CALL AD
      CALL R2401 ;读取存储器内温度和时间预设置值并存放在指定存储器内
	    CALL R8563 ;读取日历时钟
         CALL DISP  ;显示 
            BCF INTCON,RBIF
            BSF INTCON,RBIE
	    BSF INTCON,GIE
              
LOOP        BTFSS PORTB,5
            ;CALL SET1
            CALL RELTAD
	    CALL TDEAL
            BCF INTCON,GIE     
	    CALL R8563
            BSF INTCON,GIE
            CALL DISP
            CALL PDDZ
            GOTO LOOP 


            ;CALL DISP_1          ;温度显示子程序
            ;CALL RD8653          ;读8653的小时和分钟,分别存在TI与MI中
            ;CALL DISP_2          ;小时显示子程序
            ;CALL DISP_3          ;分钟显示子程序
            MOVLW 0X02
            CALL RD2401
            MOVF TEMP,0
            MOVWF TI2401
            CALL DISP_1 
            CALL DISP_2 
            CALL DISP_3
            MOVLW 0X01
            CALL RD2401
            MOVF TEMP,0
            MOVWF MI2401         ;读2401中设定的时间
            CALL DISP_1 
            CALL DISP_2 
            CALL DISP_3
            CALL BJTIME          ;实际时间到设定时间吗?
            BTFSS 50H,1          ;50H。1是到设定时间的标志位,到了为1
            GOTO MAIN
            CLRW
            CALL RD2401          ;读2401中设定的温度值
            MOVF TEMP,0
            MOVWF WENDU2401
            CALL DISP_1 
            CALL DISP_2 
            CALL DISP_3
            BSF STATUS,RP0
            MOVLW 0XFF
            MOVWF ADCON1
            MOVLW 0X00
            MOVWF TRISA
            BCF STATUS,RP0         ;将A口全设定为数字输出口
            CALL BJWENDU           ;温度到设定值?
            BTFSS 50H.2            ;50H。2是温度标志位,低于设定温度为1
            GOTO LOOP1             ;高于设定温度到LOOP1
            BSF PORTA,2            ;开泵
            GOTO MAIN
LOOP1       BCF PORTA,2            ;停泵
            GOTO MAIN
;==========================RD8653===========================



;============================设置程序===================================
SET1        CALL DISP_1 
            CALL DISP_2 
            CALL DISP_3
            CALL DISP_2 
            CALL DISP_3
            BTFSS PORTB,6           ;UP?
            CALL TEADD
            BTFSS PORTB,7
            CALL TESUB
            BTFSS PORTB,5
            GOTO SET2
            CALL MIN1
            BTFSS 50H,3     ;50H。3是1分钟设定时间到的标志,超过1分钟设定为1
            GOTO SET1
            MOVF WENDU,0
            MOVWF DAT
            CLRW
            CALL WR2401
            RETURN
SET2        MOVF WENDU,0
            MOVWF DAT
            CLRW
            CALL WR2401
            CALL DISP_1 
            CALL DISP_2 
            CALL DISP_3
            CALL DISP_1 
            CALL DISP_3
            BTFSS PORTB,6           ;UP?
            CALL TADD
            BTFSS PORTB,7
            CALL TSUB
            BTFSS PORTB,5
            GOTO SET3
            CALL MIN1
            BTFSS 50H,3     ;50H。3是1分钟设定时间到的标志,超过1分钟设定为1
            GOTO SET2
            MOVF TI,0
            MOVWF DAT
            MOVLW 0X01
            CALL WR2401
            RETURN
SET3        MOVF TI,0
            MOVWF DAT
            MOVLW 0X01
            CALL WR2401
            CALL DISP_1 
            CALL DISP_2 
            CALL DISP_3
            CALL DISP_1 
            CALL DISP_2
            BTFSS PORTB,6           ;UP?
            CALL MADD
            BTFSS PORTB,7
            CALL MSUB
            BTFSS PORTB,5
            GOTO SET4
            CALL MIN1
            BTFSS 50H,3     ;50H。3是1分钟设定时间到的标志,超过1分钟设定为1
            GOTO SET3
SET4        MOVF MI,0
            MOVWF DAT
            MOVLW 0X02
            CALL WR2401
            RETURN
        
TEADD       INCF WENDU,1
            MOVLW 0X99
            SUBWF WENDU,0
            BTFSC STATUS,0
            GOTO TEADD1
            MOVLW 0X0F
            ANDWF WENDU,0
            MOVWF R1
            MOVLW 0XF0
            ANDWF WENDU,0
            MOVWF R2
            MOVLW 0X0A
            SUBWF R1,0
            BTFSS STATUS,0
            RETURN
            MOVLW 0XF0
            ANDWF WENDU,1
            MOVLW 0X10
            ADDWF WENDU,1
            RETURN
TEADD1      CLRF WENDU
            RETURN
TESUB       DECF WENDU,1
            MOVLW 0XF0
            SUBWF WENDU,0
            BTFSC STATUS,0
            GOTO TESUB1
            MOVLW 0X0F
            ANDWF WENDU,0
            MOVWF R1
            MOVLW 0XF0
            ANDWF WENDU,0
            MOVWF R2
            MOVLW 0X0A
            SUBWF R1,0
            BTFSS STATUS,0
            RETURN
            MOVLW 0XF0
            ANDWF WENDU,1
            MOVLW 0X10
            SUBWF WENDU,1
            MOVLW 0X09
            ADDWF WENDU,1
            RETURN
TESUB1      MOVLW 0X99
            MOVWF WENDU
            RETURN
 TADD       INCF TI,1
            MOVLW 0X23
            SUBWF TI,0
            BTFSC STATUS,0
            GOTO TADD1
            MOVLW 0X0F
            ANDWF TI,0
            MOVWF R1
            MOVLW 0XF0
            ANDWF TI,0
            MOVWF R2
            MOVLW 0X0A
            SUBWF R1,0
            BTFSS STATUS,0
            RETURN
            MOVLW 0XF0
            ANDWF TI,1
            MOVLW 0X10
            ADDWF TI,1
            RETURN 
TADD1       CLRF TI
            TRTURN
TSUB       DECF TI,1
            MOVLW 0XF0
            SUBWF TI,0
            BTFSC STATUS,0
            GOTO TSUB1
            MOVLW 0X0F
            ANDWF TI,0
            MOVWF R1
            MOVLW 0XF0
            ANDWF TI,0
            MOVWF R2
            MOVLW 0X0A
            SUBWF R1,0
            BTFSS STATUS,0
            RETURN
            MOVLW 0XF0
            ANDWF TI,1
            MOVLW 0X10
            SUBWF TI,1
            MOVLW 0X09
            ADDWF TI,1
            RETURN
TESUB1      MOVLW 0X23
            MOVWF TI
            RETURN          
MADD        INCF MI,1
            MOVLW 0X59
            SUBWF MI,0
            BTFSC STATUS,0
            GOTO MADD1
            MOVLW 0X0F
            ANDWF MI,0
            MOVWF R1
            MOVLW 0XF0
            ANDWF MI,0
            MOVWF R2
            MOVLW 0X0A
            SUBWF R1,0
            BTFSS STATUS,0
            RETURN
            MOVLW 0XF0
            ANDWF MI,1
            MOVLW 0X10
            ADDWF MI,1
            RETURN
MADD1       CLRF MI
            RETURN
MSUB        DECF MI,1
            MOVLW 0XF0
            SUBWF MI,0
            BTFSC STATUS,0
            GOTO MSUB1
            MOVLW 0X0F
            ANDWF MI,0
            MOVWF R1
            MOVLW 0XF0
            ANDWF MI,0
            MOVWF R2
            MOVLW 0X0A
            SUBWF R1,0
            BTFSS STATUS,0
            RETURN
            MOVLW 0XF0
            ANDWF MI,1
            MOVLW 0X10
            SUBWF MI,1
            MOVLW 0X09
            ADDWF MI,1
            RETURN
MSUB1      MOVLW 0X59
            MOVWF MI
            RETURN




;-------------------------------------------------a/d-----------------
  ; ----------AD--------------------
AD          BSF STATUS,RP0
            MOVLW 0X00
            MOVWF ADCON0
            MOVLW 0XFF
            MOVWF TRISA
            BCF STATUS,RP0
            BSF     ADCON0      , ADON
            MOVLW   0x40
            MOVWF   0x22
AD1         DECFSZ  0x22      , f
            GOTO    Label_00CF
            BSF     ADCON0,GO
AD2         BTFSC   ADCON0      ,GO
            GOTO    AD2
            MOVF    ADRES     , W
            MOVWF   WENDU1
            BCF     ADCON0      , ADON;;;;关闭AD
            CALL AD_TABLE
            RETURN

;======================================读2401中设定的温度值==========================================
RD2401      BSF STATUS,RP0
            MOVLW 0XFF
            MOVWF ADCON0
            MOVLW 0X00
            MOVWF TRISA
            BCF STATUS,RP0
            MOVWF ADDR
            CALL START24   
            MOVLW 0A0H 
            CALL SUBS     
            MOVFW ADDR       
            CALL SUBS    
            CALL START24   
            MOVLW  0A1H    
            CALL SUBS      
            BSF STATUS ,RP0
            BSF TRISA ,3            
            BCF STATUS ,RP0 

            MOVLW 08H          
            MOVWF COUNT
RD000 
            NOP
            NOP
            NOP
            BSF SCLK            
            NOP
            BSF STATUS,C
            BTFSS SDA
            BCF STATUS,C
            RLF TEMP ,1
            BCF SCLK
            DECFSZ COUNT ,1      
            GOTO RD000
            BSF STATUS ,RP0
            BCF TRISA ,3            
            BCF STATUS ,RP0
            BSF SDA
            CALL DELAY2
            BSF SCLK
            CALL DELAY2
            BCF SCLK          
            CALL STOP          
            MOVFW  TEMP          
            RETURN
;==========================WR2401=====================================
WT24    MOVWF ADDR           
        CALL START24      
        MOVLW 0A0H
        CALL  SUBS      
        MOVFW ADDR       
        CALL  SUBS      
        MOVFW DAT          
        CALL SUBS      
        CALL STOP         
        RETURN 




;=======================================================================
============================================================
START24
                      
        BSF  SDA
        BSF  SCLK
        CALL DELAY2
        BCF  SDA
        CALL DELAY2
        BCF  SCLK
        RETURN 

STOP   
        BCF  SDA       
        NOP
        NOP 
        BSF  SCLK
        CALL DELAY2
        BSF  SDA
        RETURN 

SUBS                    
       MOVWF TEMP     
       MOVLW 08H
       MOVWF COUNT    
SH01  
       RLF TEMP ,1
       BSF SDA
       BTFSS  STATUS ,C
       BCF SDA
       NOP
       BSF SCLK
       CALL DELAY2
       BCF SCLK
       DECFSZ COUNT ,1  
       GOTO SH01
       BSF  SDA
       NOP
       NOP
       BSF  SCLK
       BSF  STATUS,RP0
       BSF  TRISA ,3
       BCF  STATUS,RP0
REP
       BTFSC SDA     
       GOTO REP
       BCF  SCLK
       BSF  STATUS,RP0
       BCF  TRISA ,3
       BCF  STATUS,RP0
       RETURN

DELAY2  
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        RETURN 
===============================================================================
====================================温度显示程序====================
DISP_1   MOVF WENDU,0
         MOVLW 0X0F
         ANDWF WENDU,0
         MOVWF R1
         MOVLW 0XF0
         ANDWF WENDU,0
         MOVWF R2
         MOVF R1,0
         CALL TABLE
         MOVWF PORTC
         BCF PORTB,1
         CALL DELAY5MS
         BSF PORTB,1
         MOVF R2,0
         CALL TABLE
         MOVWF PORTC
         BCF PORTB,0
         CALL DELAY5MS
         BSF PORTB,0
         RETURN
====================================XIAOSHI显示程序====================
DISP_2   MOVF TI,0
         MOVLW 0X0F
         ANDWF TI,0
         MOVWF R1
         MOVLW 0XF0
         ANDWF TI,0
         MOVWF R2
         MOVF R1,0

⌨️ 快捷键说明

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