📄 stc_ding_01_05s.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 + -