📄 main.src
字号:
;*************************************************************************
;*
;* Company Name : AUTOMATIC MEG.LTD
;* Project Name : PID-913A
;* Version : PID-913A-01
;* File Name : d\PID-913A\main.src
;* Date : 2005.8.1
;* MCU : S3P9234*
;* Programed by : Tang DingBo
;* Checked by :
;* Approved by :
;*
;***********************************************************************
.include "C:\OPENice\Include\Reg\S3c9234.reg"
.include "D:\PID-913A\Head.src"
;**************************************************************************
;* Interrupt Vector Table *
;* *
;* WATCH_INT IRQ *
;**************************************************************************
.org 0000h
.vector 0000h,WATCH_INT ;IRQ1
.org 0100h
; jp t,start ;100h, program start from here
;************************************************************************
; System regiser initiate
;************************************************************************
start: di
ld FLAGS,#00000000b
ld CLKCON,#00011000b ; CPU Clock (System Clock)Selection:Fxx
ld sp,#10101111b ; sp<--AFh
ld WTCON,#11111010b ;Watch Timer Control
ld LCON,#00100001b
; -- Port 0 setting --
ld P0CON,#11111111B ;
; -- Port 2 setting --
ld P2CONL,#10101010B ;
ld P2INT,#01010111B ;
ld P2,#00010000B ;
; -- Port 3 setting --
ld P3CONH,#10000000B ;
ld P3PUR,#01111111B ;
; -- Port 4 setting --
ld P4CONH,#56H ;
ld P4CONL,#55H ;
; -- Port 5 setting --
ld P5CONH,#11111111B ;
ld P5CONL,#11111111B ;
; -- Port 6 setting --
ld P6CON,#11111111B ;
; -- Basic Timer --
ld BTCON,#10100000B ;Watchdog Timer Function timer disable Fxx/4096
EI
;-----------------------------------------------------------------
; -------------初始化内存--------------
;-----------------------------------------------------------------
LD R0,#00H
INITRAM: LD @R0,#00H
INC R0
CP R0,#0BEH
JP ULE,INITRAM
LD WEEK,#01H ;准确时钟存储
LD AMPM,#01H
LD WEEK_FLAG,#01H ;时间调整暂存
LD AMPM_FLAG,#01H
LD R1,#01H
LD R0,#0EH
OPQRST: CP R1,#01H
JP NE,OPQRST258
INC R0
LD R1,#00H
JP OPQRST147
OPQRST258: ADD R0,#03H
LD R1,#01H
OPQRST147: LD @R0,#01H
CP R0,#04EH
JP ULT,OPQRST
LD P_WEEK,#01H ;关灯时间存储器
LD P_AMPM,#01H
LD R1ON_WEEK,#0BH
;***********************************************************************;
; Main ;
;***********************************************************************;
main: LD P4,#11101111B ;功能判断操作
CALL delay_500ms
LD TIP,P4
LD R1ON_TIME,#0CH
TCM TIP,#00001000B
JP Z,HOUR12_24
LD R1ON_TIME,#18H
HOUR12_24: LD LCD_BUFFER+7,#01000010B
CALL DISP_TIME
CALL DISPLY_DAYS ;星期
BUTY3: CALL SHAOMIAO
CP KEY_FLAG,#ON_OFF
JP EQ,BUTY2
CALL JUDY
JP BUTY3
BUTY2: LD R1,#0B0H
CLERPINGJI: LD @R1,#0FFH
INC R1
CP R1,#0B9H
JP ULT,CLERPINGJI
JP BUTY3
;*******************************************************************************;
; interrupt service ;
;*******************************************************************************;
WATCH_INT: PUSH FLAGS
LD PUSH_POP,#0C0H
PUSH_POP_A: PUSH @PUSH_POP
INC PUSH_POP
CP PUSH_POP,#0CFH
JP ULE,PUSH_POP_A
TM P2,#40H
JP Z,MENGJIANGNV
TM P2,#80H
JP Z,MENGJIANGNV
LD OSCCON,#00H
MENGJIANGNV: TCM INTPND,#10H
JP Z,EXTER_INT1
AC_IN: TCM INTPND,#20H
JP Z,EXTER_INT2
AC_IN1: TCM INTPND,#40H
JP Z,EXTER_INT3
AC_IN2: TCM INTPND,#80H
JP Z,EXTER_INT3
JP CLOCK_INT
;*********中断处理****
EXTER_INT1: CP SHIFTE,#00H
JP EQ,AC_IN
CALL OPENLIGAT
JP AC_IN
EXTER_INT2: CP SHIFTE,#00H
JP EQ,AC_IN1
CALL OPENLIGAT
JP AC_IN1
EXTER_INT3: CALL QINGPING
LD OSCCON,#00001001B
LD LCD_BUFFER+2,#00011100B
LD LCD_BUFFER+3,#11111100B
LD SHIFTE,#00H
AND P2,#11110110B ; 关灯
LD PRO_SHIFTE,#00H
CLOCK_INT: CP WTCON,#11111011b
JP NE,IRETI
INC MOMENT_STAK
CP MOMENT_STAK,#0F0H
JP NE,IRETI
LD MOMENT_STAK,#00H
CP COUNT_MIMITE,#00H
JP EQ,BIYIBI
DEC COUNT_MIMITE
JP STELLE
BIYIBI: CP COUNT_TIME,#00H
JP EQ,STELLE
DEC COUNT_TIME
LD COUNT_MIMITE,#3BH
STELLE: INC MINITE
CP MINITE,#3CH
JP NE,IRETI
LD MINITE,#00H
LD MOMENT_STAK,#07H ;1小时的秒钟调整
INC TIME
TCM TIP,#00001000B
JP Z,HOUR12
CP TIME,#18H
JP EQ,DAJIBA
JP IRETI
HOUR12: CP TIME,#0CH
JP ULT,IRETI
JP EQ,DAJIBA1
LD TIME,#01H
JP IRETI
DAJIBA1: COM AMPM
CP AMPM,#01H
JP NE,IRETI
DAJIBA: LD TIME,#00H
INC WEEK
CP WEEK,#08
JP ULT,IRETI
LD WEEK,#01H
IRETI: LD INTPND,#00H
LD WTCON,#11111010b
INC MIDLL_VORT
LD PUSH_POP,#0CFH
PUSH_POP_B: POP @PUSH_POP
DEC PUSH_POP
CP PUSH_POP,#0C0H
JP UGE,PUSH_POP_B
POP FLAGS
IRET
;;----------------------------------------
OPENLIGAT: CALL delay_2ms
OR P2,#01H
CALL delay_2ms
AND P2,#0FEH
RET
;---------------------------------------------------------------------------
; -----------------3功能键按键操作与显示函数--------------
;---------------------------------------------------------------------------
JUDY: CP KEY_FLAG,#MODE
JP EQ,MODE_JUDY
CP KEY_FLAG,#COUNT
JP EQ,COUNT_SET_F
CP KEY_FLAG,#RAND
JP EQ,RAND_SET_F
RET
MODE_JUDY: LD COUNT_TIME,#00H
LD COUNT_MIMITE,#00H
CALL INITJUDY
ld sp,#10101111b ; sp<--AFh
CALL MODE_SET
RET
COUNT_SET_F: CALL INITJUDY
ld sp,#10101111b ; sp<--AFh
CALL COUNT_SET
RET
RAND_SET_F: LD COUNT_TIME,#00H
LD COUNT_MIMITE,#00H
CALL INITJUDY
ld sp,#10101111b ; sp<--AFh
CALL RAND_SET
RET
;---------------------------------
INITJUDY: LD PRO_SHIFTE,#00H
CP AUTO_RAND,#00H
JP EQ,LLTT
CALL MASSGE_KEEP ;看是否从倒计时模式跳出的,来决定数据要不保存
LD AUTO_RAND,#00H
LLTT: RET
;-----------------------------------------------------------------
; --------模式判断与设置部分---------
;-----------------------------------------------------------------
MODE_SET: INC MODLE
CP MODLE,#05H
JP EQ,MODLE_FLOW
CP MODLE,#01H
JP EQ,CLOCK_SETING
CP MODLE,#02H
JP EQ,ON_OFF_SET_T
CP MODLE,#03H
JP EQ,PROGRAM_SET_T
CP MODLE,#04H
JP EQ,ATUO_SET_T
RET ;模式中有错,直截返回不执行
MODLE_FLOW: LD MODLE,#01H
CLOCK_SETING: LD LEED_FLAG,#00H
CALL QINGPING
LD LCD_BUFFER+7,#01000010B
CALL CLOCK_SET
RET
ON_OFF_SET_T: CALL ON_OFF_SET
RET
PROGRAM_SET_T: LD LEED_FLAG,#01H
CALL PROGRAM_SET
RET
ATUO_SET_T: CALL ATUO_SET
RET
;-----------------------------------------------------------------
;------------时钟设置模式(包括星期)-----------
;-----------------------------------------------------------------
CLOCK_SET: LD AUTO_RAND,#01H ;--------只要有时间设置就要保存
CALL DISP_TIME
CLOCK_BTEGAN6: LD KEY_FLAG,#01111111B
CALL delay_100ms
CLOCK_BTEGAN: CALL DISPLY_DAYS ;星期
CP TIME_FLAG,#01H
JP NE,SHAGWUGUAN
CP TIME_FLAG1,#02H
JP NE,SHAGWUGUAN
AND LCD_BUFFER,#7FH
SHAGWUGUAN: CP KEY_FLAG,#01111111B
JP NE,JIANBI
CALL SHAOMIAO
;---------星期中键盘扫描--------
JIANBI: CP KEY_FLAG,#OK
JP EQ,TMD
CP KEY_FLAG,#UP
JP EQ,WEEK_UPUP
CP KEY_FLAG,#DOWN
JP EQ,WEEK_DOWNDOWN
CALL JUDY
AND LCD_BUFFER,#80H ;关星期显示
CALL SHAOMIAO
JP CLOCK_BTEGAN
WEEK_UPUP: CALL WEEK_UP
JP CLOCK_BTEGAN6
WEEK_DOWNDOWN: CALL WEEK_DOWN
JP CLOCK_BTEGAN6
TMD: LD KEY_FLAG,#01111111B
CALL delay_100ms
CLOCK_TIME999: CALL RADOMER999
CP R15,#0AAH
JP EQ,CLOCK_TIME
CALL RANDGRAT02
JP RANDGRAT
CLOCK_TIME: CALL uvwxyz
OR LCD_BUFFER+7,#40H
RANDGRAT: CP KEY_FLAG,#01111111B
JP NE,JIANBI1
CALL SHAOMIAO
;---------时钟(时针)键盘扫描--------
JIANBI1: CP KEY_FLAG,#OK
JP EQ,TMD1
CP KEY_FLAG,#UP
JP EQ,TIME_UP_F
CP KEY_FLAG,#DOWN
JP EQ,TIME_DOWN_F
CALL JUDY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -