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

📄 stc_ding_01_05s.asm

📁 用STC12c2051 芯片一个超强光光照器!
💻 ASM
字号:
;****************************************************************
;stc mcu  ding program  write date 2008-6-1
;rev stc_ding_01_05.asm
;****************************************************************

 P3M0  equ  0b1h
 P3M1  equ  0b2h

WDT_CONTR  equ 0e1h

IPH       EQU  0B7H
;IP        EQU  0B8H
EPCA_LVD  BIT  IE.6
CH        EQU  0F9H
CL        EQU  0E9H
CCON      EQU  0D8H
CCF0      EQU  CCON.0
CCF1      EQU  CCON.1
CR        EQU  CCON.6
CF        EQU  CCON.7
CMOD      EQU  0D9H

CCAP0H   EQU   0fAH
CCAP0L   EQU   0eAH
CCAP1H   EQU   0FBH
CCAP1L   EQU   0eBH


PCA_PWM0 EQU  0F2H
PCA_PWM1 EQU  0F3H

CCAPM0  EQU  0DAH
CCAPM1  EQU  0DBH


                ORG    0000h
                aJMP   start

                ORG    0003H
              	sjmp   EX_timer0_interrupt
                ORG    000bh
                SJMP   T0_INT_sacn_led
                ORG    001BH
                SJMP   T1_INT_OUT_Timer
                ORG    0033H
                SJMP   PCA_run_interrupt

                ;=====================
EX_timer0_interrupt:

                 CLR    EX0
		 RETI


T0_INT_1ms:     push  ACC
	       DJNZ  5FH,T0_jump_1ms
               clr   tr0
	       sjmp  T0_END_1ms
T0_jump_1ms:
               MOV      TH0, #0c8h     ; TH0
               MOV      TL0, #00h      ; TL0
               SETB   tr0              ; tr0
T0_END_1ms:    POP    ACC
               RETI

T0_INT_sacn_led:
                 push  ACC
                 CLR   TR0
                 inc  R5

	    ; DJNZ  5FH,T0_jump
           ;  CLR   tr0
	    ; SJMP  T0_END
                           call LED_DISPLAY
                           CPL   20h.4
T0_jump:
             MOV      TH0, #60h       ; TH0
             MOV      TL0, #00h        ; TL0
             SETB   tr0                ;tr0
T0_END:      POP    ACC
             RETI


T1_INT_OUT_Timer:     PUSH  A
                  CLR   TR1

                  DJNZ  5Eh,   T1_jumpA
	         ; jnb   21H.0  T1_jumpB
		  DEC    30H
		  MOV   A, 30H
                  CJNE  A, #0, T1_jumpB
                  CLR   21H.1             ;
		  ;MOV   30H,   #1
                  MOV   30H,   R7
                  CLR   TR1
		  SJMP  T1_jumpC
T1_jumpB:         MOV   5Eh, #2

T1_jumpA:         MOV  TH1,#3Ch                   ;TH1
                  MOV  TL1,#0c0h                  ;TL1
                  SETB TR1   ;tr1

T1_jumpC:         POP  A
                  RETI


;------------------------PCA interrupt RUN----------------
PCA_run_interrupt:    ; jbc   22h.5 ,PCA_run__ON_CHECK2;NOT_Press_key
                push  ACC
                push  PSW
                CLR   CCF1
		MOV   A, #04h
                ADD   A, CCAP1L
		MOV  CCAP1L,A
		CLR  A
                mov  a,  #04h
		ADDC A,CCAP1H
		MOV  CCAP1H,A
		POP  PSW
		POP  ACC
		RETI


;------------------------PCA interrupt RUN end----------------


;======================================================mian   ================================
start:
                MOV    P1,  #0FFH   ;Initalization
                MOV    P3,  #00100100B ;    SETB  P3.5

		           setb  p3.2
			   nop
                           setb  p3.2
        	MOV  42H, #01
	;	MOV  41H, #01

	           MOV   40H,#30
	           MOV   41H,#00H
                       MOV   IP, #01000000B
                       MOV   TMOD,#10H     ; TMOD
                      ;===============

		           MOV   R5, #0
		           mov   R6, #00  ;
			   mov   R7, #00
                           mov   22h, #00
                           mov   21h, #00
                           clr   20h.4       ; high bit /low bit display flag
                           mov   30H,#01
			   MOV   31H,#00     ;
			   MOV   32H,#00     ;
                           CALL  init_timer0
                           CALL  PCA_INIT0
	                   SETB  EA
			   call  hd_Delay    ;0.5s

                           JNB   P3.5, $
                           call  CLOSE_PWM_BB

main:

                            jb    21H.1, Set_Timer_Not_DO
		            CJNE R5,#22,  $
                            MOV  R5,#0
			    call  CLOSE_PWM_BB
                            CALL  setting_p3_1_key
		 	    CALL  timer_p3_3_key
			    CLR   P3.0
			    sjmp  Set_Timer_Do
Set_Timer_Not_DO:
                            CJNE R5,#11,  $
                            MOV  R5,#0
                            call  CLOSE_PWM_BB

                            inc  R6
		            CJNE R6,#4,  T1_jumpD
                            MOV  R6,#0
T1_jumpD:
                            cjne  R6,#1,led_up_up_lightA
                            clr   p3.1
                            setb  p3.3
			    setb  p3.4
                            CLR   22H.2

led_up_up_lightA:           cjne  R6,#2,led_up_up_lightB

                            setb  p3.1
			    clr   p3.3
			    setb  p3.4


led_up_up_lightB:           cjne  R6,#3,led_up_up_lightC
			    setb  p3.1
                            setb  p3.3
			    clr   p3.4
			    setb  22h.2
led_up_up_lightC:

Set_Timer_Do:
                           call   Power___off
                           jnb    22H.4,   MAIN_jumpA
                           call   BEAM_P3_4_key       ;because used p3_4 ,so down need process p3_4
                           JnB    22H.2,p34_for_low   ;
                           clr    p3.4
           p34_for_low:    jnb   21H.0,  MAIN_jumpA
			   mov    R6, #00
                           MOV    5eh, #02
                           CALL   timer1_Init_50ms
			   MOV   30H,R7
                           CLR   21H.0
			   SETB  21H.1                  ;BEAM
			   SETB  P3.0

MAIN_jumpA:
                           jmp  main
                           nop
                           nop
                           JMP  start

LED_DISPLAY:
                           call  con_16to10
                           jnb   20h.4,lec_disp_low    ;hight R1 low= R2
                           SETB  P3.7
                           MOV  A, 32H
                           ANL  A, #0F0H
			   swap A
			   MOV  DPTR, #LED7Code
                           MOVC A,@A+DPTR
                           ANL   A,#11111110B
			   JB   22H.1,NOT_1_JMPH   ;led low valialy
			   ORL   A,#00000001B      ;not light
NOT_1_JMPH:                                        ;led light
			   MOV   P1,A
                           RET          ;high conversion done
lec_disp_low:               CLR  P3.7
                           MOV  A, 32H
                           ANL  A, #0FH
		     	   MOV  DPTR, #LED7Code
                           MOVC A,@A+DPTR
                           ANL   A,#11111110B
			   JB   22H.1,NOT_1_JMPL
			   ORL   A,#00000001B
NOT_1_JMPL:
			   MOV   P1,A
                           RET          ;low conversion done



PCA_INIT0:   MOV   CMOD ,#00000010B
            MOV   CCON ,#00H
	    MOV   CH,   #00H
	    MOV   CL,   #00H
	    MOV   CCAPM1,#01001101B
	    MOV   CCAP1L,#04h
	    MOV   CCAP1H,#04h
	    MOV   IPH,#01000000B
	  ;  MOV   IP, #01000000B
	    SETB  EPCA_LVD
	    SETB  CR
	    RET

con_16to10:    MOV R0,#31H  ;
               MOV A,30H
               MOV B,#100
               DIV AB
               MOV @R0,A
               INC R0
               MOV A,#10
               XCH A,B
               DIV AB
               SWAP A
               ADD A,B
               MOV @R0,A
               ret
CLOSE_PWM_BB:              MOV   CCAPM1,#0
                           clr    EPCA_LVD
 	                   clr    CR
                           RET

In_power_down_M:
               ; CLR  IT0
		SETB  IT0
                ;; SETB  EX0     ;
	        ;SETB ET0
	        ;;SETB  EA
		MOV   PCON, #00000010B   ;INPUT POWER DOWN MODE
	       ;MOV   PCON, #00000001B   ;input IDLE mode
	        clr    p3.7
                ;clr    EX0
	        RET


Interrupt_1s_RUN:
                   MOV 8DH,#00;;#3Ch       ;TH1
                   MOV 8BH,#00; #0B0h      ;TL1
		   SETB ET1
		   SETB TR1         ;START  TR1 =1
                   RET



BEAM_P3_4_key:     CLR   22H.0
	           SETB  P3.4
	           nop
	           JNB   P3.4, BEAM_P3_4_A
                   setb  22h.0
	           RET
BEAM_P3_4_A:       call  R_Delay_100us
                   nop
                   JNB   P3.4, BEAM_P3_4_B
                   setb  22h.0
	           RET
BEAM_P3_4_B:

			   setb  21H.0
 	                 ;  JNB   P3.4, $
 	                   RET

            ;---------------------setting press process
setting_p3_1_key:                    ;NOT KEY            ;tweezer key five layout
	           SETB  P3.1
	           nop
	           JNB   P3.1, setting_p3_1_A
	           RET
setting_p3_1_A:    call  R_Delay_100us
                   nop
                   JNB   P3.1, setting_p3_1_B
	           RET
setting_p3_1_B:            CALL  PCA_INIT0
                           setb  22h.4
	                   SETB  P1.0
			   SETB  22H.1
			   MOV   R7,30H
                           SETB  21H.1
 	                   ;JNB   P3.1, $
 	                   RET
            ;------------------setting press process end

            ;----------use 22h.5  -------- timer press process
timer_p3_3_key:                    ;NOT KEY            ;tweezer key five layout
                 CLR   22H.5
	         SETB  P3.3
	         nop
	         JNB   P3.3, timer_p3_3_A
                 setb  22h.5
	         RET
timer_p3_3_A:    call  R_Delay_100us
                 nop
                 JNB   P3.3, timer_p3_3_B
                 setb  22h.5
	         RET
timer_p3_3_B:              CALL  PCA_INIT0
	                   inc   30h
                           mov   a, 30h
                           cjne  a,#31, timer_p3_3_C
                           mov   30h,#1
timer_p3_3_C:		  ; JNB   P3.3, $
 	                   RET


Power___off:                   ; setb  p3.5
                                NOP
				NOP
                                JnB   P3.5, T__KEY         ;one check
                                RET

T__KEY:		                CALL  R_Delay_100us
                                CALL  R_Delay_100us
                                JnB   P3.5, Tt__YOUKEY       ;two check
                                RET

Tt__YOUKEY:                      CALL  PCA_INIT0             ;initialine and open pwm
                                ; JNB     P3.5, $              ;wait for power key push.
off:                             clr    p3.2
                                 CALL  R_Delay_100us
				 clr    p3.2
                                 nop
				 nop
                                ; sjmp   off
                                 ret

;=====================================RETURN  POWER ON/OFF CHECK


;*******************************  END ***********************************

hd_Delay:           MOV   52H,   #4    ;  85us
hd_DelayB:          MOV   51H,   #250    ;  85us
hd_DelayA:          MOV   50H,   #250    ;  85us
                    DJNZ  50H,   $
                    DJNZ  51H,   hd_DelayA
                    DJNZ  52H,   hd_DelayB
                    RET


R_Delay_100us:      MOV   31H,   #256    ;  85us
                    DJNZ  31H,   $
                    RET

init_timer0:
                MOV      TH0, #60  ;#0fah     ; TH0
                MOV      TL0, #0;  ;#0ah     ; TL10
                SETB  	 ET0           ; ET0=1;
                SETB 	 TR0           ; TR0 =1; //IE = 0x88;
                RET
                 ;---------------------------------200us end



timer1_Init_50ms:
                   MOV TH1,#03Ch      ;TH1
                   MOV TL1,#0d0h      ;TL1
		   setb ET1
		   SETB TR1         ;START  TR1 =1
                  ; clr  tf1
                   RET



DELAY_100MS:   mov    5eh, #2
               CALL   timer1_Init_50ms
timer1_100ms:  MOV    A,  5Eh                 ;DISPLAY TIME
               cjne   A, #00h,timer1_100ms    ;cjne  R7,#0FFH,TIME_NOT_DAO 0H - 1 =0xffH
               RET
;============================  display end  =================================


LED7Code:
	DB	003H		; 0
	DB	09FH		; 1
	DB	025H		; 2
	DB	00DH		; 3
	DB	099H		; 4
	DB	049H		; 5
	DB	041H		; 6
	DB	01FH		; 7
	DB	001H		; 8
	DB	009H		; 9



                               END





⌨️ 快捷键说明

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