📄 att7027.src
字号:
; .\ATT7027.SRC generated from: F:\ATT7025\ATT7027.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE F:\ATT7025\ATT7027.c BROWSE DEBUG OBJECTEXTEND PRINT(.\ATT7027.lst) SRC(.\ATT7027.SRC)
$NOMOD51
NAME ATT7027
CRTCCAL DATA 0F2H
CMTHR DATA 0FDH
KEYCR DATA 0F7H
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
CHOUR DATA 0FBH
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
PDMSR DATA 0C7H
RXCON DATA 0C6H
DPH0 DATA 083H
IE DATA 0A8H
DPH1 DATA 085H
DPL0 DATA 082H
DPL1 DATA 084H
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
ES BIT 0A8H.4
CP3CFG DATA 0BBH
IP DATA 0B8H
LEDC DATA 0AEH
RI BIT 098H.0
LEDE DATA 0AFH
INT0 BIT 0B0H.2
CY BIT 0D0H.7
DDRA DATA 09BH
TI BIT 098H.1
INT1 BIT 0B0H.3
DDRB DATA 09CH
DDRC DATA 09DH
DDRD DATA 09EH
SPC_FNC DATA 08FH
RSTSR DATA 0B7H
DDRE DATA 09FH
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
LADR DATA 0C4H
OV BIT 0D0H.2
RCAP2L DATA 0CAH
LDAT DATA 0C5H
ALHR DATA 0F5H
CFMCFG DATA 0BEH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
ECDATH DATA 0DBH
RCLK BIT 0C8H.5
ALMR DATA 0F4H
EXIF DATA 091H
TCLK BIT 0C8H.4
ECDATL DATA 0DAH
LCDCLK DATA 0C2H
PCON DATA 087H
TMOD DATA 089H
TCON DATA 088H
EPDATH DATA 0DFH
EPDATL DATA 0DDH
BWPR DATA 09AH
EPDATM DATA 0DEH
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
SECCNT DATA 0F3H
CP_RL2 BIT 0C8H.0
CSUPDC DATA 0BFH
ACC DATA 0E0H
CP02CFG DATA 0BAH
LVDCON DATA 0B5H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
RTCCON DATA 0F1H
RB8 BIT 098H.2
TF2 BIT 0C8H.7
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
TEMPDR DATA 0C9H
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
EIE DATA 0E8H
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
LEDP0 DATA 0A5H
TR1 BIT 088H.6
LEDP1 DATA 0A6H
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
LEDP3 DATA 0A7H
DDRP0 DATA 0A1H
DDRP1 DATA 0A2H
DDRP2 DATA 0A3H
EIP DATA 0F8H
DDRP3 DATA 0A4H
ECADR DATA 0D9H
SBUF0 DATA 099H
SBUF1 DATA 0C1H
EXEN2 BIT 0C8H.3
SCON0 DATA 098H
REN BIT 098H.4
SCON1 DATA 0C0H
PTA DATA 093H
PTB DATA 094H
T2CON DATA 0C8H
PTC DATA 095H
DPS DATA 086H
CLCDCFG DATA 0B9H
PTD DATA 096H
LCDCR DATA 0C3H
SYSSCR DATA 0B6H
PTE DATA 097H
FCCON DATA 0F6H
MPAGE DATA 092H
EPADR DATA 0DCH
RXD BIT 0B0H.0
SCIIE DATA 0ABH
EICON DATA 0D8H
CCLKCFG DATA 0BDH
SCIIF DATA 0B3H
CKCON DATA 08EH
TXD BIT 0B0H.1
CSECR DATA 0F9H
CDAYR DATA 0FCH
F0 BIT 0D0H.5
CYEAR DATA 0FEH
EMUIE DATA 0A9H
EMUIF DATA 0B1H
CBORCFG DATA 0BCH
KEYIE DATA 0ADH
RTCIE DATA 0AAH
RTCIF DATA 0B2H
CMINR DATA 0FAH
PSW DATA 0D0H
LVIIE DATA 0ACH
LVIIF DATA 0B4H
CWKDR DATA 0FFH
?PR?_Flash_Write_ATT7027?ATT7027 SEGMENT CODE
?DT?_Flash_Write_ATT7027?ATT7027 SEGMENT DATA OVERLAYABLE
?PR?_Flash_Read_ATT7027?ATT7027 SEGMENT CODE
?DT?_Flash_Read_ATT7027?ATT7027 SEGMENT DATA OVERLAYABLE
?PR?_WriteCALATT7027?ATT7027 SEGMENT CODE
?DT?_WriteCALATT7027?ATT7027 SEGMENT DATA OVERLAYABLE
?PR?_ReadATT7027?ATT7027 SEGMENT CODE
?DT?_ReadATT7027?ATT7027 SEGMENT DATA OVERLAYABLE
?PR?_ReadCALATT7027?ATT7027 SEGMENT CODE
?DT?_ReadCALATT7027?ATT7027 SEGMENT DATA OVERLAYABLE
?PR?EMU_Parameter_change1?ATT7027 SEGMENT CODE
?DT?EMU_Parameter_change1?ATT7027 SEGMENT DATA OVERLAYABLE
?PR?Calibration_meter?ATT7027 SEGMENT CODE
EXTRN XDATA (meter_para)
EXTRN XDATA (Emu_Parameter)
EXTRN XDATA (Emu_Parameter_change)
EXTRN CODE (?C?CLDPTR)
EXTRN CODE (?C?CSTPTR)
EXTRN CODE (?C?CLDOPTR)
EXTRN CODE (?C?OFFXADD)
EXTRN CODE (?C?CSTOPTR)
EXTRN CODE (?C?LLDPTR)
EXTRN CODE (?C?ULCMP)
EXTRN CODE (?C?LLDPTR0)
EXTRN CODE (?C?LSTPTR)
EXTRN CODE (?C?ULSHR)
EXTRN CODE (?C?LMUL)
EXTRN CODE (?C?ULDIV)
EXTRN CODE (?C?LSHL)
PUBLIC Calibration_meter
PUBLIC EMU_Parameter_change1
PUBLIC ?_ReadCALATT7027?BYTE
PUBLIC _ReadCALATT7027
PUBLIC ?_ReadATT7027?BYTE
PUBLIC _ReadATT7027
PUBLIC ?_WriteCALATT7027?BYTE
PUBLIC _WriteCALATT7027
PUBLIC ?_Flash_Read_ATT7027?BYTE
PUBLIC _Flash_Read_ATT7027
PUBLIC ?_Flash_Write_ATT7027?BYTE
PUBLIC _Flash_Write_ATT7027
RSEG ?DT?_ReadATT7027?ATT7027
?_ReadATT7027?BYTE:
addr?356: DS 1
mt_data?357: DS 3
n?358: DS 1
RSEG ?DT?_Flash_Read_ATT7027?ATT7027
?_Flash_Read_ATT7027?BYTE:
addr?147: DS 2
mt_data?148: DS 3
n?149: DS 1
RSEG ?DT?_Flash_Write_ATT7027?ATT7027
?_Flash_Write_ATT7027?BYTE:
addr?040: DS 2
mt_data?041: DS 3
n?042: DS 1
ORG 6
ADDRL?044: DS 1
ADDRH?045: DS 1
TEMP?046: DS 1
RSEG ?DT?EMU_Parameter_change1?ATT7027
?EMU_Parameter_change1?BYTE:
i?566: DS 1
PA1?567: DS 3
PA2?568: DS 3
tempA?569: DS 4
RSEG ?DT?_ReadCALATT7027?ATT7027
?_ReadCALATT7027?BYTE:
addr?461: DS 1
mt_data?462: DS 3
n?463: DS 1
RSEG ?DT?_WriteCALATT7027?ATT7027
?_WriteCALATT7027?BYTE:
addr?251: DS 1
mt_data?252: DS 3
n?253: DS 1
; #include <ATT7027.H>
; #include <MAIN.H>
; // #include <stddef.h>
; void Flash_Write_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n);
; void Flash_Read_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n);
; void WriteCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n);
; void ReadATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n);
; void ReadCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n);
; void EMU_Parameter_change1();
; /*******************************************************************
; 写FLASH数据
; 函数原型: void Flash_Write_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
; 功能: 将要写的数据写到FLASH中
; 输入: addr 地址,n个数,mt_data存放RAM的指针
; 输出:
; ********************************************************************/
; void Flash_Write_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
RSEG ?PR?_Flash_Write_ATT7027?ATT7027
_Flash_Write_ATT7027:
USING 0
; SOURCE LINE # 17
MOV addr?040,R6
MOV addr?040+01H,R7
;---- Variable 'mt_data?041' assigned to Register 'R1/R2/R3' ----
; {
; SOURCE LINE # 18
; unsigned char i,ADDRL,ADDRH,TEMP;
; CFMCFG|=0x04;// 允许系统调用
; SOURCE LINE # 20
ORL CFMCFG,#04H
; for(i=0;i<n;i++)
; SOURCE LINE # 21
;---- Variable 'i?043' assigned to Register 'R5' ----
CLR A
MOV R5,A
?C0001:
MOV A,R5
CLR C
SUBB A,n?042
JNC ?C0004
; {
; SOURCE LINE # 22
; ADDRL=addr;
; SOURCE LINE # 23
MOV ADDRL?044,addr?040+01H
; ADDRH=addr>>4;
; SOURCE LINE # 24
MOV A,addr?040
SWAP A
MOV R0,A
ANL A,#0F0H
XCH A,R0
MOV A,addr?040+01H
SWAP A
ANL A,#0FH
ORL A,R0
MOV ADDRH?045,A
; TEMP=*mt_data;
; SOURCE LINE # 25
LCALL ?C?CLDPTR
MOV TEMP?046,A
; BWPR=0xC3;//使能写PMOD[1:0]操作
; SOURCE LINE # 26
MOV BWPR,#0C3H
; BWPR=0x9B;//开启所有受保护位的写使能
; SOURCE LINE # 27
MOV BWPR,#09BH
; /* #pragma asm
; MOV R6,ADDRH //指定要擦除的页的高地址
; MOV R7,ADDRL //指定要擦除的页的低地址
; MOV R3,1 //指定要擦除DATA FLASH
; LCALL 0FFD7H
; MOV DPTRH0,ADDLH
; MOV DPTRL0,ADDRL
; MOV A,TEMP;
; LCALL 0FFD9H
; #pragma endasm */
; addr=addr+1;
; SOURCE LINE # 38
INC addr?040+01H
MOV A,addr?040+01H
JNZ ?C0049
INC addr?040
?C0049:
; mt_data=mt_data+1;
; SOURCE LINE # 39
MOV A,#01H
ADD A,R1
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
; }
; SOURCE LINE # 40
INC R5
SJMP ?C0001
; }
; SOURCE LINE # 41
?C0004:
RET
; END OF _Flash_Write_ATT7027
; /*******************************************************************
; 读FLASH数据
; 函数原型:void Flash_Read_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
; 功能: 读FLASH数据放到mt_data指针指向要存放的地址中
; 输入: addr子地址,n个数,*mt_data要存放的指针
; 输出:
; ********************************************************************/
; void Flash_Read_ATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
RSEG ?PR?_Flash_Read_ATT7027?ATT7027
_Flash_Read_ATT7027:
USING 0
; SOURCE LINE # 49
MOV addr?147,R6
MOV addr?147+01H,R7
;---- Variable 'mt_data?148' assigned to Register 'R1/R2/R3' ----
; {
; SOURCE LINE # 50
; unsigned char i;
; for(i=0;i<n;i++)
; SOURCE LINE # 52
;---- Variable 'i?150' assigned to Register 'R7' ----
CLR A
MOV R7,A
?C0005:
MOV A,R7
CLR C
SUBB A,n?149
JNC ?C0008
; {
; SOURCE LINE # 53
; *mt_data=CBYTE[addr];
; SOURCE LINE # 54
MOV DPL,addr?147+01H
MOV DPH,addr?147
CLR A
MOVC A,@A+DPTR
LCALL ?C?CSTPTR
; addr=addr+1;
; SOURCE LINE # 55
INC addr?147+01H
MOV A,addr?147+01H
JNZ ?C0050
INC addr?147
?C0050:
; mt_data=mt_data+1;
; SOURCE LINE # 56
MOV A,#01H
ADD A,R1
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
; }
; SOURCE LINE # 57
INC R7
SJMP ?C0005
; }
; SOURCE LINE # 58
?C0008:
RET
; END OF _Flash_Read_ATT7027
;
;
;
; /****************************************************************************
; 写数据到校表寄存器中
; 函数原型:void WriteCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)
; 功能: 数据放到mt_data指针指向要存放的地址中
; 输入: addr子地址,n个数,*mt_data要存放的指针
; 输出 comm:the val which written to the registers.
; writes Calibration registers at att7027 addr:the address of the first register.
; ******************************************************************************/
; void WriteCALATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)
RSEG ?PR?_WriteCALATT7027?ATT7027
_WriteCALATT7027:
USING 0
; SOURCE LINE # 70
MOV mt_data?252,R3
MOV mt_data?252+01H,R2
MOV mt_data?252+02H,R1
;---- Variable 'addr?251' assigned to Register 'R7' ----
; {
; SOURCE LINE # 71
; unsigned char i,delay;
; EPADR=0xA6;//ECR writes Calibration registers寄存器写保护使能
; SOURCE LINE # 73
MOV EPADR,#0A6H
; for(i=0;i<n;i++)
; SOURCE LINE # 74
;---- Variable 'i?254' assigned to Register 'R6' ----
CLR A
MOV R6,A
?C0009:
MOV A,R6
CLR C
SUBB A,n?253
JNC ?C0010
; {
; SOURCE LINE # 75
; ECADR=addr; //write address
; SOURCE LINE # 76
MOV ECADR,R7
; delay=10;
; SOURCE LINE # 77
;---- Variable 'delay?255' assigned to Register 'R5' ----
MOV R5,#0AH
?C0012:
; while(delay>0) delay--; // wait 4.8us
; SOURCE LINE # 78
DJNZ R5,?C0012
?C0013:
; ECDATH=*(mt_data+2*i);//写入数据的高8位如果单字节数据可以忽略此操作
; SOURCE LINE # 79
MOV R3,mt_data?252
MOV R2,mt_data?252+01H
MOV R1,mt_data?252+02H
MOV B,#02H
MOV A,R6
MUL AB
MOV DPL,A
MOV DPH,B
LCALL ?C?CLDOPTR
MOV ECDATH,A
; ECDATL=*(mt_data+1+2*i);//写入数据的低8位
; SOURCE LINE # 80
MOV DPTR,#01H
MOV B,#02H
MOV A,R6
LCALL ?C?OFFXADD
LCALL ?C?CLDOPTR
MOV ECDATL,A
; addr=addr+1; //下一个校表参数
; SOURCE LINE # 81
INC R7
; }
; SOURCE LINE # 82
INC R6
SJMP ?C0009
?C0010:
; EPADR=0xA9; //ECR writes Calibration registers寄存器写保护禁止
; SOURCE LINE # 83
MOV EPADR,#0A9H
; }
; SOURCE LINE # 84
RET
; END OF _WriteCALATT7027
; /***********************************************************************
; 读电表寄存器数据
; 函数原型:void ReadATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
; 功能: 读电表寄存器数据放到mt_data指针指向要存放的地址中
; 输入: addr子地址,n个数,*mt_data要存放的指针
; 输出: This subroutine functions as reading n*bits registers from att7027.
; Considering the compatibilities, reading the 24bits register as
; 3*8bits, and reads 8bits once.
; ***********************************************************************/
;
; void ReadATT7027(unsigned char addr,unsigned char *mt_data,unsigned char n)//*mt_data=xxxxxx00 n=3
RSEG ?PR?_ReadATT7027?ATT7027
_ReadATT7027:
USING 0
; SOURCE LINE # 95
MOV mt_data?357,R3
MOV mt_data?357+01H,R2
MOV mt_data?357+02H,R1
;---- Variable 'addr?356' assigned to Register 'R7' ----
; {
; SOURCE LINE # 96
; unsigned char delay,i=0;
; SOURCE LINE # 97
;---- Variable 'i?360' assigned to Register 'R6' ----
CLR A
MOV R6,A
; for(i=0;i<n;i++)
; SOURCE LINE # 98
?C0015:
MOV A,R6
CLR C
SUBB A,n?358
JNC ?C0020
; {
; SOURCE LINE # 99
; EPADR=addr; //write address
; SOURCE LINE # 100
MOV EPADR,R7
; delay=10;
; SOURCE LINE # 101
;---- Variable 'delay?359' assigned to Register 'R5' ----
MOV R5,#0AH
?C0018:
; while(delay>0) delay--; // wait 4.8us
; SOURCE LINE # 102
DJNZ R5,?C0018
?C0019:
; *(mt_data+3*i)=0;
; SOURCE LINE # 103
MOV R3,mt_data?357
MOV R2,mt_data?357+01H
MOV R1,mt_data?357+02H
MOV B,#03H
MOV A,R6
MUL AB
MOV DPL,A
MOV DPH,B
CLR A
LCALL ?C?CSTOPTR
; *(mt_data+1+3*i)=EPDATH;//读数据的高位如果寄存器为2字节,EPDATH 为符号扩展位
; SOURCE LINE # 104
MOV DPTR,#01H
MOV B,#03H
MOV A,R6
LCALL ?C?OFFXADD
MOV A,EPDATH
LCALL ?C?CSTOPTR
; *(mt_data+2+3*i)=EPDATM;//读数据的中间8位
; SOURCE LINE # 105
MOV R3,mt_data?357
MOV R2,mt_data?357+01H
MOV R1,mt_data?357+02H
MOV DPTR,#02H
MOV B,#03H
MOV A,R6
LCALL ?C?OFFXADD
MOV A,EPDATM
LCALL ?C?CSTOPTR
; *(mt_data+3+3*i)=EPDATL;//读数据的低8位
; SOURCE LINE # 106
MOV R3,mt_data?357
MOV R2,mt_data?357+01H
MOV R1,mt_data?357+02H
MOV DPTR,#03H
MOV B,#03H
MOV A,R6
LCALL ?C?OFFXADD
MOV A,EPDATL
LCALL ?C?CSTOPTR
; addr=addr+1;
; SOURCE LINE # 107
INC R7
; }
; SOURCE LINE # 108
INC R6
SJMP ?C0015
; }
; SOURCE LINE # 109
?C0020:
RET
; END OF _ReadATT7027
; /****************************************************************************
; 读电表校验寄存器数据
; 函数原型:void ReadCALATT7027(unsigned int addr,unsigned char *mt_data,unsigned char n)
; 功能: 读电表校验寄存器数据放到mt_data指针指向要存放的地址中
; 输入: addr子地址,n个数,*mt_data要存放的指针
; Read Calibration registers at att7027
; addr:the address of the first register.
; comm:the val which written to the registers.
; ******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -