📄 stc2.asm
字号:
/**********************************************************************
函 数 名:BHD
功 能:
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:A
设 计 日 期:2007.3.26
修 改: 日 期:
***********************************************************************/
BHD:
MOV R1,#DISP1
MOV B,#0AH
MOV A,@R1
MUL AB
INC R1
ADD A,@R1
RET
/**********************************************************************
函 数 名:QFDIS
功 能:
说 明:
调 用: 无
寄 存 器:
入口参数:
返 回 值:A
设 计 日 期:2007.3.26
修 改: 日 期:
***********************************************************************/
QFDIS:
MOV R1,#DISP3
MOV A,@R1
CPL A
MOV @R1,A
INC R1
MOV A,@R1
CPL A
MOV @R1,A
RET
/**********************************************************************
函 数 名:SECTOR_ERASE
功 能:扇区檫除
说 明:檫除整个扇区,开始地址为EEP_ADR_H,EEP_ADR_L
调 用: 无
入口参数:EEP_ADR_H,EEP_ADR_L
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
SECTOR_ERASE:
MOV ISP_ADDRH,EEP_ADR_H ;送地址高字节
MOV ISP_ADDRL,EEP_ADR_L ;送地址低字节
CLR EA ;关中断
MOV ISP_CONTR,#WAIT_TIME ;设置等待时间
ORL ISP_CONTR,#10000000B ;允许ISP/IAP操作
MOV ISP_CMD,#ISP_IAP_SECTOR_ERASE ;送扇区擦除命令
MOV ISP_TRIG,#46H ;先送46H,再送B9H到ISP/IAP触发寄存器,送完B9后,ISP/IAP命令立即被触发起动。
MOV ISP_TRIG,#0B9H
NOP ;扇区擦除成功
ANL ISP_CONTR,#01111111B ;禁止ISP/IAP操作
SETB EA ;处理完ISP/IAP动作即可开中断
RET
/**********************************************************************
函 数 名:BYTE_PROGRAM
功 能:字节编程
说 明:开始地址为EEP_ADR_H,EEP_ADR_L,数据为A
调 用: 无
入口参数:EEP_ADR_H,EEP_ADR_L,EEP_DATA
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
BYTE_PROGRAM:
MOV ISP_DATA,A ;送字节编程数据到ISP_DATA
MOV ISP_ADDRH,EEP_ADR_H ;送地址高字节
MOV ISP_ADDRL,EEP_ADR_L ;送地址低字节
CLR EA ;关中断
MOV ISP_CONTR,#WAIT_TIME ;设置等待时间
ORL ISP_CONTR,#10000000B ;允许ISP/IAP操作
MOV ISP_CMD,#ISP_IAP_BYTE_PROGRAM ;送字节编程命令
MOV ISP_TRIG,#46H ;先送46H,再送B9H到ISP/IAP触发寄存器,送完B9后,ISP/IAP命令立即被触发起动。
MOV ISP_TRIG,#0B9H
NOP ;编程成功
ANL ISP_CONTR,#01111111B ;禁止ISP/IAP操作
SETB EA ;处理完ISP/IAP动作即可开中断
RET
/**********************************************************************
函 数 名:BYTE_READ
功 能:字节读
说 明:开始地址为EEP_ADR_H,EEP_ADR_L
调 用: 无
入口参数:EEP_ADR_H,EEP_ADR_L
返 回 值:A
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
BYTE_READ:
MOV ISP_ADDRH,EEP_ADR_H ;送地址高字节
MOV ISP_ADDRL,EEP_ADR_L ;送地址低字节
CLR EA ;关中断
MOV ISP_CONTR,#WAIT_TIME ;设置等待时间
ORL ISP_CONTR,#10000000B ;允许ISP/IAP操作
MOV ISP_CMD,#ISP_IAP_BYTE_READ ;送字节读命令
MOV ISP_TRIG,#46H ;先送46H,再送B9H到ISP/IAP触发寄存器,送完B9后,ISP/IAP命令立即被触发起动。
MOV ISP_TRIG,#0B9H
NOP ;数据读出到ISP_DATA寄存器
ANL ISP_CONTR,#01111111B ;禁止ISP/IAP操作
SETB EA ;处理完ISP/IAP动作即可开中断
MOV A,ISP_DATA ;读出数据送往A.
RET
/**********************************************************************
函 数 名:SAVEEEP
功 能:保存EEPROM
说 明:
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
SAVEEEP:
MOV EEP_ADR_H,#EEPROM_24C02L_Addr1
MOV EEP_ADR_L,#EEPROM_24C02L_Addr2
LCALL SECTOR_ERASE
MOV EEP_ADR_H,#EEPROM_24C02H_Addr1
MOV EEP_ADR_L,#EEPROM_24C02H_Addr2
LCALL SECTOR_ERASE
MOV R0,#00H
MOV EEP_ADR_H,#EEPROM_24C02L_Addr1
MOV EEP_ADR_L,#EEPROM_24C02L_Addr2
SADDRL:
MOVX A,@R0
LCALL BYTE_PROGRAM
INC EEP_ADR_L
INC R0
CJNE R0,#80H,SADDRL
MOV EEP_ADR_H,#EEPROM_24C02H_Addr1
MOV EEP_ADR_L,#EEPROM_24C02H_Addr2
SADDRH:
MOVX A,@R0
LCALL BYTE_PROGRAM
INC EEP_ADR_L
INC R0
CJNE R0,#00H,SADDRH
RET
/**********************************************************************
函 数 名:COPYEEP
功 能:读出EEPROM
说 明:
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
COPYEEP:
MOV R0,#00H
MOV EEP_ADR_H,#EEPROM_24C02L_Addr1
MOV EEP_ADR_L,#EEPROM_24C02L_Addr2
CADDRL:
LCALL BYTE_READ
MOVX @R0,A
INC EEP_ADR_L
INC R0
CJNE R0,#80H,CADDRL
MOV EEP_ADR_H,#EEPROM_24C02H_Addr1
MOV EEP_ADR_L,#EEPROM_24C02H_Addr2
CADDRH:
LCALL BYTE_READ
MOVX @R0,A
INC EEP_ADR_L
INC R0
CJNE R0,#00H,CADDRH
RET
/**********************************************************************
函 数 名:SMICYC
功 能:SMI时钟
说 明:
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.3.5
修 改: 日 期:
***********************************************************************/
SMICYC:
MOV R3,#30H
SHIFT:
CLR SCL
MOV R2,#06H
MOV R0,#REGAD
CLR C
SHIFT1: MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,SHIFT1
MOV SDA,C
SETB SCL ;时钟高
DJNZ R3,SHIFT
CLR SCL
RET
/**********************************************************************
函 数 名:PHYRD
功 能:读PHY
说 明:
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.3.5
修 改: 日 期:
***********************************************************************/
PHYRD:
;SETB SDA
ACALL D5U
MOV R3,#10H
LIGBIT: ;SETB SCL
CLR SCL
ACALL D5U
MOV C,SDA
SETB SCL
;CLR SCL
MOV R2,#02H
MOV R0,#PHYDL
LIGSFT: MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,LIGSFT
DJNZ R3,LIGBIT
ACALL INIPREAME
RET
/**********************************************************************
函 数 名:PHYWR
功 能:写PHY
说 明:
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.3.5
修 改: 日 期:
***********************************************************************/
PHYWR:
MOV R3,#10H
WIGBIT: MOV R2,#02H
MOV R0,#PHYDL
CLR C
WIGSET: MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,WIGSET
MOV SDA,C
SETB SCL
ACALL D5U
CLR SCL
DJNZ R3,WIGBIT
ACALL D5U
ACALL INIPREAME
RET
/**********************************************************************
函 数 名:INIPREAME
功 能:初始PREAME
说 明:
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.3.5
修 改: 日 期:
***********************************************************************/
INIPREAME:
MOV R0,#PREAME3
MOV R2,#04H
PREAME:
MOV @R0,#0FFH
INC R0
DJNZ R2,PREAME
RET
/**********************************************************************
函 数 名:COM_ISR
功 能:串口中断
说 明:RI为1时产生中断
调 用: 无
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
COM_ISR:
PUSH ACC
PUSH PSW
SETB PSW.3 ;第3组
SETB PSW.4
JNB RI,NEXTC1 ;收完一字节否?
CLR RI
NEXTC2:
MOV A,#00H ;00为接收缓冲区的地址
;ADD A,R_IN
MOV R0,A
MOV @R0,SBUF
NEXTC1:
POP PSW
POP ACC
RETI
/**********************************************************************
函 数 名:COM_INITIALIZE
功 能:串口初始化
说 明:设置工作模式3
调 用: COM_BAUD_SET
入口参数:无
寄 存 器:
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
COM_INITIALIZE:
LCALL COM_BAUD_SET
CLR EA
SETB SM0
SETB SM1
CLR SM2
SETB REN
CLR TI
CLR RI
SETB ES
SETB PS
SETB EA
RET
;----------------------------------------------------------
;波特率设置
; 22.1184 9600 TH1=0F4H
; 22.1184 38400 TH1=0FDH
; 11.0592 9600 TH1=0FAH
;----------------------------------------------------------
/**********************************************************************
函 数 名:COM_BAUD_SET
功 能:波特率设置
说 明:设置波特率等
调 用:
入口参数:无
返 回 值:无
设 计: 日 期:2007.1.9
修 改: 日 期:
***********************************************************************/
COM_BAUD_SET:
CLR EA
CLR TI
CLR TR1
CLR ET1
ORL PCON,#80H
ANL TMOD,#0FH
ORL TMOD,#20H
MOV TH1,#0F4H
SETB TR1
SETB EA
RET
/**********************************************************************
/**********************************************************************
字段表
***********************************************************************/
SEGTAB:
DB 0C0H
DB 0F9H
DB 0A4H
DB 0B0H
DB 99H
DB 92H
DB 82H
DB 0F8H
DB 80H
DB 90H
DB 88H
DB 83H
DB 0C6H
DB 0A1H
DB 86H
DB 8EH
DB 0FFH
KEYTAB:
DB 7DH ;0
DB 0EEH ;1
DB 0EDH ;2
DB 0EBH ;3
DB 0DEH ;4
DB 0DDH ;5
DB 0DBH ;6
DB 0BEH ;7
DB 0BDH ;8
DB 0BBH ;9
DB 7DH ;A
DB 0EEH ;B
DB 0EDH ;C
DB 0EBH ;D
DB 0DEH ;E
DB 0DDH ;F
DB 7EH ;10,READ
DB 7BH ;11,MEM
DB 77H ;12,RET
DB 0B7H ;13,CON
DB 0D7H ;14,V
DB 0E7H ;15,^
DB 7BH ;16,PORT
DB 7EH ;17,WRITE
DB 0D7H ;18,SAVE
DB 0E7H ;19,COPY
KEYSCN:
DB 7FH
DB 0BFH
DB 0DFH
DB 0EFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -