📄 stc2.asm
字号:
***********************************************************************/
DISPLAY:
;PUSH ACC
;PUSH PSW
;SETB PSW.4 ;第2组
;CLR PSW.3
;JNB RWFLAG,NOCHANG
;SETB RWDISF
;NOCHANG:
MOV R0,#DISP0
MOV R1,#02H
MOV R2,#03H
MOV R3,#01H ;74LS273
DLOOP:
MOV P1,R3
MOV DPTR,#SEGTAB
MOV A,@R0
MOVC A,@A+DPTR
JNB RWDISF,NOSET
ANL A,#7FH
CLR RWDISF
NOSET:
MOV P0,A
MOV A,R3
RL A
MOV R3,A
INC R0
DJNZ R2,DLOOP
DLOOP1:
MOV P1,R3
MOV A,@R0
MOV P0,A
MOV A,R3
RL A
MOV R3,A
INC R0
DJNZ R1,DLOOP1
;POP PSW
;POP ACC
RET
/**********************************************************************
函 数 名:DELAY
功 能:延时程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.29
修 改: 日 期:
***********************************************************************/
DELAY:
CLR A
MOV R7,A
DBILOOP:
CLR A
MOV R6,A
DLILOOP:
INC R6
CJNE R6,#0FFH,DLILOOP
INC R7
CJNE R7,#0CH,DBILOOP
RET
/**********************************************************************
函 数 名:KEYPAD_SCAN
功 能:键盘扫描程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:KEYHV
设 计 日 期:2006.12.29
修 改: 日 期:
***********************************************************************/
KEYPAD_SCAN:
MOV P2,#0F0H
KWIT:
MOV A,P2
CJNE A,#0F0H,KWIT
KLOOP:
CLR A
MOV R5,A
KSCN:
MOV A,R5
MOV DPTR,#KEYSCN
MOVC A,@A+DPTR
MOV P2,A
XRL A,P2
JZ KINC ;相同转
;ACALL DELAY
;MOV R4,P2
;MOV A,R5
;MOV DPTR,#KEYSCN
;MOVC A,@A+DPTR
;XRL A,P2
;JZ KINC ;相同转
MOV R4,P2
ACALL DELAY
MOV A,R5
MOV DPTR,#KEYSCN
MOVC A,@A+DPTR
XRL A,P2
JNZ KINC
MOV KEYHV,R4
RET
KINC:
INC R5
CJNE R5,#04H,KSCN
;MOV WDT_CONTR,#35H ;1.1377S
SJMP KLOOP
/**********************************************************************
函 数 名:GOTKEY
功 能:键值获取程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:R6=KEY
设 计 日 期:2007.1.10
修 改: 日 期:
***********************************************************************/
GOTKEY:
LCALL KEYPAD_SCAN
CLR A
MOV R6,A
NEXTKEY:
MOV A,R6
MOV DPTR,#KEYTAB
MOVC A,@A+DPTR
CJNE A,KEYHV,NOKEY
MOV A,R6
CJNE A,#10H,KNEXT1
SJMP TKEY1
KNEXT1:
CJNE A,#11H,KNEXT2
SJMP TKEY1
KNEXT2:
CJNE A,#14H,KNEXT3
SJMP TKEY1
KNEXT3:
CJNE A,#15H,TKEY
SJMP TKEY1
TKEY:
SETB C
SUBB A,#05H
JNC HKEY
TKEY1:
JB SECFLG,NOKEY
HKEY:
RET
NOKEY:
INC R6
CJNE R6,#01AH,NEXTKEY
RET
/**********************************************************************
函 数 名:START
功 能:I2C通讯程序
说 明:启动信号
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.30
修 改: 日 期:
***********************************************************************/
START:
SETB SDA
SETB SCL
ACALL D5U
CLR SDA
ACALL D5U
CLR SCL
RET
/**********************************************************************
函 数 名:STOP
功 能:I2C通讯程序
说 明:停止信号
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.30
修 改: 日 期:
***********************************************************************/
STOP:
CLR SDA
SETB SCL
ACALL D5U
SETB SDA
ACALL D5U
CLR SCL
CLR SDA
RET
/**********************************************************************
函 数 名:SEND
功 能:I2C通讯程序
说 明:发送一个字节
调 用: 无
寄 存 器:
入口参数:要发送的数放在R7中
返 回 值:
设 计 日 期:2006.12.30
修 改: 日 期:
***********************************************************************/
SEND:
MOV R6,#08H
MOV A,R7
SENDLOP1:
RLC A ;左环移,将A的最高位移入CY
MOV SDA,C ;将CY的值通过SDA发送出去
SETB SCL ;在SCL上产生一个时钟
ACALL D5U
CLR SCL
NOP ;
NOP ;
NOP ;
DJNZ R6,SENDLOP1 ;重复8次,发送一个字节
CACK: ;检查应答信号子程序
SETB SDA ;主机首先拉高SDA
SETB SCL ;发出一个时钟
ACALL D5U
SENDLOP2:
MOV C,SDA ;读入SDA的状态,如果是0表示接受到了应答
JC SENDLOP2 ;
CLR SCL ;接受到应答,结束时钟
RET
/**********************************************************************
函 数 名:READ
功 能:I2C通讯程序
说 明:读取一个字节
调 用: 无
寄 存 器:
入口参数:
返 回 值:读进来的数放在A中
设 计 日 期:2006.12.30
修 改: 日 期:
***********************************************************************/
READ:
MOV R6,#08H
READLOP1:
SETB SDA ;置SDA为输入方式
SETB SCL ;发出一个时钟
ACALL D5U
MOV C,SDA ;读入SDA状态
RLC A ;将该位状态移入A
CLR SCL ;结束时钟
DJNZ R6,READLOP1 ;重复8次,读入一个字节
RET
SACK: ;发送应答子程序
CLR SDA ;拉低SDA线
SETB SCL ;发出时钟信号
ACALL D5U
CLR SCL
RET
/**********************************************************************
函 数 名:D5U
功 能:5U秒延时程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.30
修 改: 日 期:
***********************************************************************/
D5U:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
/**********************************************************************
函 数 名:D1S
功 能:1秒延时程序
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2006.12.30
修 改: 日 期:
***********************************************************************/
D1S:
PUSH PSW
SETB PSW.3 ;第2组
CLR PSW.4
MOV R4,#50H
DEL2:
MOV R3,#0FFH ;80*255*0.543=20400*0.543
DEL3:
DJNZ R3,DEL3
DJNZ R4,DEL2
POP PSW
RET
/**********************************************************************
函 数 名:RDRD24C02
功 能:
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:R7
设 计 日 期:2006.12.31
修 改: 日 期:
***********************************************************************/
RDRD24C02:
LCALL START
MOV R7,#0A0H
LCALL SEND
MOV R7,ADD24C02
LCALL SEND
LCALL START
MOV R7,#0A1H
LCALL SEND
LCALL READ
LCALL STOP
RET
/**********************************************************************
函 数 名:SQRD24C02
功 能:
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:R7
设 计 日 期:2007.1.10
修 改: 日 期:
***********************************************************************/
SQRD24C02:
LCALL START
MOV R7,#0A0H
LCALL SEND
MOV R7,#00H
LCALL SEND
LCALL START
MOV R7,#0A1H
LCALL SEND
MOV R0,#00H
COSQ:
LCALL READ
MOVX @R0,A
INC R0
CJNE R0,#00H,NSQOV
LCALL STOP
RET
NSQOV:
LCALL SACK
SJMP COSQ
/**********************************************************************
函 数 名:WRITE24C02
功 能:
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2007.1.4
修 改: 日 期:
***********************************************************************/
WRITE24C02:
LCALL START
MOV R7,#0A0H
LCALL SEND
MOV R7,ADD24C02
LCALL SEND
MOV R7,I2CDATA
LCALL SEND
LCALL STOP
RET
/**********************************************************************
函 数 名:WPAGE24C02
功 能:IDATA00-FF写入24c02
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:
设 计 日 期:2007.1.8
修 改: 日 期:
***********************************************************************/
WPAGE24C02:
MOV R0,#00H
MOV ADD24C02,#00H
MOV R5,#20H
NEXTPAGE:
LCALL START
MOV R7,#0A0H
LCALL SEND
MOV R7,ADD24C02
LCALL SEND
MOV R2,#08H
CONWR:
MOVX A,@R0
MOV R7,A
LCALL SEND
INC R0
DJNZ R2,CONWR
LCALL STOP
MOV A,ADD24C02
ADD A,#08H
MOV ADD24C02,A
LCALL D1S
DJNZ R5,NEXTPAGE
RET
/**********************************************************************
函 数 名:ASSM
功 能:
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:A
设 计 日 期:2006.1.4
修 改: 日 期:
***********************************************************************/
ASSM:
MOV R1,#DISP1
ASSM1:
MOV A,@R1
SWAP A
INC R1
ORL A,@R1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -