📄 stc2.asm
字号:
PUBLIC TIME0_INITIALIZE
PUBLIC TIME0_ISR
PUBLIC DISPLAY
PUBLIC DELAY
PUBLIC KEYPAD_SCAN
PUBLIC GOTKEY
PUBLIC START
PUBLIC STOP
PUBLIC SEND
PUBLIC READ
PUBLIC D5U
PUBLIC D1S
PUBLIC RDRD24C02
PUBLIC WRITE24C02
PUBLIC WPAGE24C02
PUBLIC ASSM
PUBLIC SECTOR_ERASE
PUBLIC BYTE_PROGRAM
PUBLIC BYTE_READ
PUBLIC SAVEEEP
PUBLIC COPYEEP
PUBLIC SMICYC
PUBLIC PHYRD
PUBLIC PHYWR
PUBLIC INIPREAME
WDT_CONTR DATA 0E1H
AUXR DATA 08EH
ISP_DATA DATA 0E2H ;汇编程序定义 or EQU
ISP_ADDRH DATA 0E3H ;汇编程序定义
ISP_ADDRL DATA 0E4H ;汇编程序定义
ISP_CMD DATA 0E5H ;汇编程序定义
ISP_TRIG DATA 0E6H ;汇编程序定义
ISP_CONTR DATA 0E7H ;汇编程序定义
ISP_IAP_BYTE_READ EQU 1 ;字节读应用程序区和数据存储区
ISP_IAP_BYTE_PROGRAM EQU 2 ;字节编程应用程序区和数据存储区
ISP_IAP_SECTOR_ERASE EQU 3 ;扇区擦除应用程序区和数据存储区
WAIT_TIME EQU 2 ;等待时间
EEPROM_24C02L_Addr1 EQU 010H
EEPROM_24C02L_Addr2 EQU 00H
EEPROM_24C02H_Addr1 EQU 012H
EEPROM_24C02H_Addr2 EQU 00H
CS0 BIT P1.0
CS1 BIT P1.1
CS2 BIT P1.2
CS3 BIT P1.3
CS4 BIT P1.4
P15 BIT P1.5
P16 BIT P1.6
P17 BIT P1.7
OUT0 BIT P2.0
OUT1 BIT P2.1
OUT2 BIT P2.2
OUT3 BIT P2.3
IN0 BIT P2.4
IN1 BIT P2.5
IN2 BIT P2.6
IN3 BIT P2.7
SDA BIT P3.2 ;定义24C02的串行数据线
SCL BIT P3.3 ;定义24C02的串行时钟线
PT36 BIT P3.6
PT37 BIT P3.7
;定义可位寻址寄存器
FLAG DATA 20H
FLAG1 DATA 21H
DIG1 BIT FLAG.7
DIG2 BIT FLAG.6
PFLG BIT FLAG.5
MFLG BIT FLAG.4
NONFLG BIT FLAG.3
READC02 BIT FLAG1.7
WRITE BIT FLAG1.6
RWFLAG BIT FLAG1.5
RWDISF BIT FLAG1.4
SECFLG BIT FLAG1.3
REGAD DATA 23H
PHYAD DATA 24H
PREAME3 DATA 25H
PREAME2 DATA 26H
PREAME1 DATA 27H
PREAME0 DATA 28H
PHYDL DATA 29H
PHYDH DATA 2AH
DISP0 DATA 30H
DISP1 DATA 31H
DISP2 DATA 32H
DISP3 DATA 33H
DISP4 DATA 34H
DISP5 DATA 35H
DISP6 DATA 36H
KEYPTR DATA 39H
KEYHV DATA 3AH
ADD24C02 DATA 3BH
I2CDATA DATA 3CH
EEP_ADR_H DATA 3DH
EEP_ADR_L DATA 3EH
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME0_ISR ;定时器0中断
ORG 0100H
MAIN:
MOV AUXR,#01H
MOV SP,#50H
MOV P1,#0FFH
MOV P2,#0FFH
;MOV WDT_CONTR,#35H
ACALL TIME0_INITIALIZE
CLR SCL
MOV R0,#0FFH
CLR A
PDATALOOP: MOVX @R0,A
DJNZ R0,PDATALOOP
MOVX @R0,A
LCALL INIPREAME
CLR RWFLAG
CLR SECFLG
INIMAIN:
MOV R1,#03H
MOV R2,#02H
MOV R0,#DISP0
MOV A,#010H
CLDIS:
MOV @R0,A
INC R0
DJNZ R1,CLDIS
MOV A,#0FFH
CLDIS1:
MOV @R0,A
INC R0
DJNZ R2,CLDIS1
MOV KEYPTR,#DISP1 ;指针显示器1位
MOV FLAG,#00H
MOV ADD24C02,#00H
MOV I2CDATA,#00H
MAINLOOP:
;ACALL DISPLAY
ACALL GOTKEY
MOV A,R6
CLR C
SUBB A,#10H
JNC PROCE
MOV R0,KEYPTR ;数字键
MOV A,R6
MOV @R0,A ;送显
CJNE R0,#DISP1,TDIG2
SETB DIG1
AJMP TDIG
PROCE:
AJMP FUNCT
TDIG2:
CJNE R0,#DISP2,TDIG3
SETB DIG2
JNB PFLG,TDIG
LCALL BHD ;端口读处理
;LCALL ASSM
CLR C
RLC A
CLR C
RLC A
MOV REGAD,A
MOV A,DISP0
SETB ACC.7
SETB ACC.6
CLR C
RRC A
MOV PHYAD,A
MOV REGAD.7,C
LCALL SMICYC
ACALL D5U
ACALL D5U
LCALL PHYRD
MOV DISP4,PHYDH
MOV DISP3,PHYDL
LCALL QFDIS
SJMP TDIG
TDIG3:
JNB MFLG,ALTER1
LCALL ASSM ;存贮器处理
MOV R1,A
CJNE R0,#DISP3,TDIG4
MOV A,DISP3
MOV DISP3,#0FFH
SWAP A
MOV DISP5,A
MOV A,DISP4
CPL A
ANL A,#0FH
ORL A,DISP5 ;改变高字节内容
FOUR:
MOVX @R1,A
CPL A
MOV DISP4,A
SJMP TDIG
TDIG4:
MOV A,DISP5
ORL A,DISP4 ;改变低字节内容
SJMP FOUR
NOUSE: AJMP INIMAIN
ALTER1:
JNB PFLG,NOUSE
CJNE R0,#DISP3,PDIG4 ;端口写处理
MOV R1,#PHYDH
XCH A,@R1
SWAP A
XCHD A,@R1
SWAP A
XCH A,@R1
SJMP CHANG
PDIG4: CJNE R0,#DISP4,PDIG5
MOV R1,#PHYDH
XCHD A,@R1
SJMP CHANG
PDIG5: CJNE R0,#DISP5,PDIG6
MOV R1,#PHYDL
XCH A,@R1
SWAP A
XCHD A,@R1
SWAP A
XCH A,@R1
SJMP CHANG
TDIG:
MOV R0,KEYPTR
JNB PFLG,CONMEM
CJNE R0,#DISP6,CONTD
DEC KEYPTR
DEC KEYPTR
DEC KEYPTR
SJMP TDEND
CONMEM: CJNE R0,#DISP4,CONTD
DEC KEYPTR
SJMP TDEND
PDIG6: CJNE R0,#DISP6,TDIG
MOV R1,#PHYDL
XCHD A,@R1
CHANG:
MOV DISP4,PHYDH
MOV DISP3,PHYDL
LCALL QFDIS
MOV DISP6,PHYDH
MOV DISP5,PHYDL
LCALL BHD
;LCALL ASSM
SETB C
RLC A
CLR C
RLC A
MOV REGAD,A
MOV A,DISP0
SETB ACC.7
SETB ACC.5
CLR C
RRC A
MOV PHYAD,A
MOV REGAD.7,C
LCALL SMICYC
ACALL D5U
ACALL D5U
LCALL PHYWR
;MOV REGAD,#40H
;MOV PHYAD,#60H
;LCALL SMICYC
;ACALL D5U
;ACALL D5U
;LCALL PHYRD
;SETB PHYDH.4
;MOV REGAD,#42H
;MOV PHYAD,#50H
;LCALL SMICYC
;ACALL D5U
;ACALL D5U
;LCALL PHYWR
MOV PHYDH,DISP6
MOV PHYDL,DISP5
SJMP TDIG
CONTD:
INC KEYPTR
TDEND:
AJMP MAINLOOP
FUNCT: ;功能键
CJNE R6,#10H,FUN11 ;READ
LCALL SQRD24C02
MOV DISP0,#0AH
MAINEND1:
LJMP MAINLOOP
FUN11:
CJNE R6,#11H,FUN12
JNB DIG2,MAINEND1 ;MEM
JB MFLG,MAINEND1
SETB MFLG
MOV DISP0,#0EH
LCALL ASSM
MOV R0,A
MOVX A,@R0
CPL A
MOV DISP4,A
SJMP MAINEND2
FUN12:
CJNE R6,#12H,FUN13
AJMP INIMAIN ;RET
FUN13:
CJNE R6,#13H,FUN14
CPL SECFLG ;CON
CPL RWFLAG
MAINEND2:
SJMP MAINEND
FUN14:
CJNE R6,#14H,FUN15
JNB MFLG,MAINEND2 ;V
MOV R0,KEYPTR
CJNE R0,#DISP4,CHPTR
DEC KEYPTR
CHPTR:
LCALL ASSM
DEC A
MOV R0,A
MOV R1,#DISP2 ;改变地址显示
XCHD A,@R1
SWAP A
DEC R1
XCHD A,@R1
MOVX A,@R0
CPL A
MOV DISP4,A
SJMP MAINEND
FUN15:
CJNE R6,#15H,FUN16
JNB MFLG,MAINEND2 ;^
MOV R0,KEYPTR
CJNE R0,#DISP4,CHPTR1
DEC KEYPTR
CHPTR1:
LCALL ASSM
INC A
MOV R0,A
MOV R1,#DISP2
XCHD A,@R1
SWAP A
DEC R1
XCHD A,@R1
MOVX A,@R0
CPL A
MOV DISP4,A
SJMP MAINEND
FUN16:
CJNE R6,#16H,FUN17
JNB DIG1,MAINEND ;PORT
JB PFLG,MAINEND
SETB PFLG
MOV DISP0,DISP1
MOV DISP1,#10H
DEC KEYPTR
AJMP MAINEND
FUN17:
CJNE R6,#17H,FUN18
LCALL WPAGE24C02 ;WRITE
MOV DISP0,#0BH
AJMP MAINEND
FUN18:
CJNE R6,#18H,FUN19
LCALL SAVEEEP ;SAVE
MOV DISP0,#0DH
AJMP MAINEND
FUN19:
CJNE R6,#19H,MAINEND
LCALL COPYEEP ;COPY
MOV DISP0,#0CH
AJMP MAINEND
MAINEND:
AJMP MAINLOOP
/**********************************************************************
函 数 名:TIME0_INITIALIZE
功 能:定时器0初始化程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.29
修 改: 日 期:
***********************************************************************/
TIME0_INITIALIZE:
CLR EA
CLR TR0
CLR ET0
ANL TMOD,#0F0H
ORL TMOD,#01H ;put timer 0 into MODE 1 16位计数器方式
MOV TH0,#070H ;初始化20ms
MOV TL0,#04H
SETB TR0
SETB ET0
CLR PT0
SETB EA
RET
/**********************************************************************
函 数 名:TIME0_ISR
功 能:定时器0中断程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.29
修 改: 日 期:
***********************************************************************/
TIME0_ISR:
PUSH ACC
PUSH PSW
SETB PSW.4 ;第2组
CLR PSW.3
MOV TH0,#070H
MOV TL0,#04H
JNB RWFLAG,NOCHANG
SETB RWDISF
NOCHANG:
ACALL DISPLAY
POP PSW
POP ACC
RETI
/**********************************************************************
函 数 名:DISPLAY
功 能:显示子程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.29
修 改: 日 期:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -