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

📄 516154.asm

📁 一种单片机控制电饭煲预约和智能煮饭系统的实现源代码!
💻 ASM
📖 第 1 页 / 共 2 页
字号:

YUSEC  EQU  40H
YUMINI  EQU  41H
YUHOUR  EQU  42H
zhuSEC    equ   50h
zhumini   equ    51h
zhuhour   equ     52h
MINITEK BIT P1.3
HOURK BIT P1.4
SW2   BIT  P1.6
sw3    bit   p1.7
DISPBIT EQU 60H ;DISPBIT用于判断数码管个数
T2SCNTA EQU 61H 
T2SCNTB EQU 62H 
DS1302CLK  BIT P3.5               
 DS1302IO   BIT P3.7
 RST      BIT P3.0
 KEY      BIT P3.2     ;KEY即SW1
 K_ON     BIT P3.1       ;峰鸣器  
SECOND  EQU 60H
;60H  秒
;61h  分
;62h  时
;63h  日
;64h  月
;65h  DAY
;66h  年低

;6Ah  闹分    from 00(1302)
;6BH  闹时    from 01(1302)
	ORG 00H 
	LJMP START 
	 ORG   0003H
        LJMP  S_INT
	ORG 000BH 
	LJMP INT_T0 
	 ORG 001BH
	 LJMP DISPLAY
	ORG 0040H
START: MOV  ZHUMINI,#14
	MOV yumini,#03
	SETB P3.3;使控制预约煮饭的继电器断开
	SETB  P3.4;使停止煮饭的继电器闭合
	MOV DISPBIT,#00H 
	MOV T2SCNTA ,#00H 
	MOV T2SCNTB ,#00H
	MOV TMOD,#11H
	MOV TH0,#(65536-2000) / 256 
	MOV TL0,#(65536-2000) MOD 256 
	MOV  TH1,#3CH
	MOV  TL1,#0B0H
	SETB TR0
	SETB  ET1
	 SETB  ET0        ;设置中断优先
       SETB  ET1
       SETB  PT0      ; 定时中断优先0
       SETB  TR1
       SETB  IT0               ;脉冲触发T0
       SETB  EX0               ;  允许外中断
       CLR   PX0               ;外部中断0优先设0
     ;LCALL SET1302          ;初始化
	MOV  IP,#02H 
	MOV  20H,#14H
	SETB EA 
       CLR     RST
        MOV    SP,#2AH
       SETB    05H
       CLR     06H
       SETB    07H; CLR 07H       
 START1:  SETB     08H
       CLR     09H
       CLR     0AH
       CLR     0BH
       CLR     0CH
       SETB    0DH
       CLR     0EH
       CLR     0FH
       CLR     10H
       CLR     11H
       CLR     21H
       CLR     22H
       CLR     18H
       CLR     13H
       CLR     24H
       MOV R2,#00H             
       MOV R3,#00H             
       MOV  R5,#00H
        MOV   R1,#0C1H          ;取定时参数从1302中   
       ACALL  T_6061
       NOP
       MOV   6AH,A             ;	时钟的分
       MOV   R1,#0C3H
       ACALL T_6061
       MOV   6BH,A             ;时钟的时
       MOV    61H,#00H
       MOV    62H,#00H
       NOP
       SETB  EA
       SJMP  $

;*************DISPLAY*********
DISPLAY: PUSH  ACC
         PUSH  PSW
         MOV   TL1,#0e0H          ;wait how long to display (20ms)
         MOV   TH1,#0b0H
       JNB  SW2,T01
	JNB  SW3,T02
	MOV  A,#35H
	LJMP  PINT
T01:	MOV  A,#45H
	LJMP  NEXTT
T02:	MOV  A,#55H
	LJMP  NEXT
NEXTT:ADD A,DISPBIT ;
	MOV R0,A   ;送SECOND高到R0
	MOV A,@R0 
	MOV DPTR,#TAB
	MOVC A,@A+DPTR ;取SECOND高的字符
	MOV P0,A ;送出显示
	MOV A,DISPBIT ;取第一个数码管位选
	MOV DPTR,#TAB1 
	MOVC A,@A+DPTR 
	MOV P2,A ;送出位选
	INC DISPBIT ;送第二个位选
	MOV A,DISPBIT 
	CJNE A,#04,DISPLAY1 ;判断是否为最后个数码管的位选,不是就加1
	MOV DISPBIT,#00H ;是最后个数码管就清0
   DISPLAY1:      mov  dptr,#TAB
          JB   18H,DISMAO
         JB    0EH,DIS2
         JB    0FH,DIS3
         NOP
         JB    10H,DIS4
         JB    11H,DIS5
          NOP
         JB    21H,DIS6
         JB    22H,DIS7
         NOP
         JB     24H,DIS6
         JB    13H,DYEAR
         NOP
         JB     18H,DISMAO
         JNB    0DH,D_OUT
         NOP
         JNB   08H,D_GO          ;定时到时,显示闪烁
         JNB   07H,D_OUT  
         SJMP  D_GO
         NOP
         SJMP  D_GO
         NOP
;*********************
DISMAO:   AJMP  DIS_7
DIS2:    AJMP DIS_2
DIS3:    AJMP DIS_3
DIS4:    AJMP DIS_4
DIS5:    AJMP DIS_5
DIS6:    AJMP DIS_6
DIS7:    AJMP DIS_6
DYEAR:   AJMP DIS_YEAR
         NOP
;********************
D_GO:    MOV   DPTR,#TAB
         MOV   A,62H
         ANL   A,#0FH
         MOV   B,A
         MOV   A,62H
         SWAP  A
         ANL   A,#07H
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR    P2.0
         LCALL DLIM
         SETB    P2.0
         MOV   A,B
         MOVC  A,@A+DPTR
                     MOV   C,07H
                     MOV   acc.0,C   ;秒灯闪烁
        MOV   P0,A
         CLR    P2.1
         LCALL DLIM
        SETB   P2.1
         mov  dptr,#TAB            ;倒装LED字段表
         MOV   A,61H
         ANL   A,#0FH
         MOV   B,A
         MOV   A,61H
         SWAP  A
         ANL   A,#0FH

         MOVC  A,@A+DPTR

                 MOV   C,07H
                 MOV   acc.1,C   ;秒灯闪烁

         MOV   P0,A
         CLR   P2.2
         LCALL DLIM
         SETB    P2.2
    
         mov  dptr,#TAB
         MOV   A,B
         MOVC  A,@A+DPTR
                    MOV   C,06H
                    CPL  C
                  MOV   acc.0,C    ;闹铃指示灯
         MOV   P0,A
         CLR   P2.3
         LCALL DLIM
         SETB    P2.3
D_OUT:   SETB  TR1
         POP   PSW
         POP   ACC
         NOP
         NOP
         RETI
           NOP
           NOP
          AJMP   START1
DIS_YEAR:  MOV  DPTR,#TAB
           MOV  A,#02H
           MOVC  A,@A+DPTR
           MOV  P0,A
           CLR  P2.0
           LCALL  DLIM
            SETB   P2.0
            SETB   P2.0
            MOV   A,#0H
            MOVC  A,@A+DPTR
            MOV   P0,A
            CLR   P2.1
            LCALL  DLIM
            SETB    P2.1
            MOV     P0,#0FFH
           MOV   DPTR,#TAB2
           MOV   A,66H
           MOV   B,#0AH
           DIV   AB
           MOVC   A,@A+DPTR
           MOV   P0,A
           CLR  P2.2
           LCALL  DLIM
           SETB   P2.2
           MOV   DPTR,#TAB
           MOV   A,B
           MOVC  A,@A+DPTR
           MOV   P0,A
           CLR  P2.3
           LCALL  DLIM
           SETB   P2.3
           SETB   P2.3
           SETB  TR1
           POP   PSW
           POP   ACC
           NOP
           NOP
           RETI
           NOP
           NOP
           AJMP   0000H
DIS_7:  MOV  DPTR,#TAB  ;分秒显示
        MOV   A,61H
        ANL   A,#0FH
        MOV   B,A
        MOV   A,61H
        SWAP  A
        ANL   A,#0FH
        MOVC  A,@A+DPTR
         MOV   P0,A
        CLR  P2.0
        CLR  P2.0
        LCALL  DLIM
        SETB   P2.0
        MOV   A,B
        MOVC  A,@A+DPTR
        CLR    C
        MOV    ACC.3,C
        MOV   P0,A
        CLR   P2.1
        CLR   P2.1
        LCALL  DLIM
        SETB   P2.1
        MOV    DPTR,#TAB2
        MOV    A,60H
        ANL    A,#0FH
        MOV    B,A
        MOV    A,60H
        MOV    DPTR,#TAB2
        SWAP   A
        ANL   A,#0FH
        MOVC    A,@A+DPTR
        CLR    C
        MOV    ACC.1,C
        MOV    P0,A
        CLR   P2.2
         CLR   P2.2
         LCALL   DLIM
         SETB    P2.2
         MOV     P0,#0FFH
         MOV     DPTR,#TAB
         MOV     A,B
         MOVC   A,@A+DPTR
         MOV     P0,A
         CLR    P2.3
         CLR    P2.3
          ACALL   DLIM
          SETB   P2.3
        
          SETB  TR1
          POP   PSW
          POP   ACC 
          NOP
          NOP
           RETI

DIS_2:   mov   dptr,#TAB          ;显示设置小时
         MOV   6FH,62H
         ACALL BCD_HEX
         MOV   B,#10
         DIV   AB
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.0
         LCALL DLIM
         SETB    P2.0
         MOV   A,B
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.1
         LCALL DLIM
         SETB  P2.1
          SETB  P2.1
         SETB  TR1
         POP   PSW
         POP   ACC
         NOP
         NOP
         RETI
         NOP
         NOP
         LJMP  0000H 
;*****************
DIS_3:   MOV   DPTR,#TAB2              ;显示设置分
         MOV   6FH,61H
         ACALL BCD_HEX
         MOV   B,#10
         DIV   AB
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.2
         CLR   P2.2
         LCALL DLIM
        SETB     P2.2
         SETB    P2.2
         MOV   A,B
         MOV   DPTR,#TAB
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR  P2.3
         CLR   P2.3
         LCALL DLIM
        SETB    P2.3
        SETB    P2.3
         SETB  TR1
         POP   PSW
         POP   ACC
         NOP
         NOP
         RETI
;*****************
DIS_4:  MOV  DPTR,#TAB           ;显示设置闹时
         JNB   07H,D4_OUT            ;显示时闪烁
          MOV   P0,#0FFH
          MOV  6FH,6BH
          ACALL  BCD_HEX
          MOV    B,#0AH
         DIV    AB
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.0
         LCALL DLIM
         SETB    P2.0
         MOV   P0,#0FFH
         MOV   A,B
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.1
         LCALL DLIM
         SETB    P2.1
          MOV  P0,#0FFH
D4_OUT:  SETB  TR1
         POP   PSW
         POP   ACC
          NOP
          NOP
         RETI
         NOP
         NOP
         LJMP 0000H
;***********************
DIS_5:   MOV   DPTR,#TAB2
         MOV   P0,#0FFH
         JNB   07H,D5_OUT              ;显示时闪烁
         MOV   6FH,6AH                   ;显示设置闹分
         ACALL  BCD_HEX
         MOV   B,#0AH
         DIV   AB
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.2
         LCALL DLIM
         SETB    P2.2
         MOV   DPTR,#TAB
         MOV   A,B
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.3
         LCALL DLIM
         SETB   P2.3
         
D5_OUT:  SETB  TR1
         POP   PSW
         POP   ACC
         NOP
         NOP
         RETI
         NOP
         NOP
         LJMP  0030H 
DIS_6:   MOV   DPTR,#TAB    ;日月显示
         MOV   A,64H
         ANL   A,#0FH
         MOV   B,A
         MOV   A,64H
         SWAP   A
         ANL   A,#0FH
         MOVC  A,@A+DPTR
         MOV   P0,A
         CLR   P2.0
         LCALL  DLIM
          SETB   P2.0
        MOV   A,B
        MOVC   A,@A+DPTR
        CLR  C
        MOV   ACC.3,C
        MOV   P0,A
        CLR   P2.1
        CLR   P2.1
        LCALL  DLIM
        SETB   P2.1
        MOV   P0,#0FFH
        MOV   DPTR,#TAB2
        MOV   A,63H
        ANL   A,#0FH
        MOV   B,A
        MOV   A,63H
        SWAP   A
        ANL   A,#0FH
        MOVC  A,@A+DPTR
        MOV   P0,A
        CLR   P2.2
        CLR   P2.2
        LCALL  DLIM
        SETB    P2.2
        MOV   DPTR,#TAB
        MOV    A,B
        MOVC   A,@A+DPTR
        MOV    P0,A
        CLR   P2.3
        CLR   P2.3
        LCALL  DLIM
        SETB   P2.3
        
        SETB  TR1
        POP   PSW
        POP   ACC
        NOP
        NOP
        RETI
        NOP
        NOP        
        LJMP  0030H
;*****************************
DLIM:    MOV 43H,#14H           ; every LED(2ms)
DL2:     MOV 44H,#14H
DL1:     NOP
         NOP
         DJNZ 44H,DL1
         DJNZ 43H,DL2
         RET


;*******有按下SW1调节**********
 S_INT:  CLR EA
         PUSH  ACC
         PUSH  PSW
         PUSH  DPH
         PUSH  DPL
         PUSH  02H
         PUSH  03H
         MOV   R6,#10D
        INC R5
	CJNE R5,#01H,NEXT  
	JB SW3,EXIT
	LCALL DELY10MS
	JB  SW3,$
        LCALL INCH;加时钟时
	LJMP EXIT
NEXT:	CJNE  R5,#02H,NEXT1
	JB SW2,EXIT
	LCALL DELY10MS
	JB  SW3,$
	LCALL  INCM;加时钟分
	LJMP EXIT
NEXT1:	CJNE  R5,#03H,NEXT2
	JB SW3,EXIT
	LCALL DELY10MS
	JB  SW3,$
	LCALL  INC_H,加闹时
	LJMP EXIT
NEXT2:	CJNE  R5,#04H,NEXT3
	JB SW2,EXIT
	LCALL DELY10MS
	JB  SW3,$
	LCALL  INC_M;加闹分
	LJMP EXIT
NEXT3:CJNE R5,#05H,NEXT4
	LCALL  INC_DA  ;调月
	JB SW3,EXIT
	LCALL DELY10MS
	JB  SW3,$
	LJMP EXIT
NEXT4:CJNE R5,#06H,NEXT5
	JB SW3,EXIT
	LCALL DELY10MS
	JB  SW3,$
	LCALL  INC_DAA  ;调日
	LJMP EXIT
NEXT5:MOV  R5,#00H
	LJMP  EXIT
EXIT:  SETB    0DH             ;恢复正常显示
        CLR     0EH
        CLR     0FH
        CLR     10H
        CLR     11H
        CLR     21H
        CLR     22H

⌨️ 快捷键说明

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