📄 init.src
字号:
; .\init.SRC generated from: init.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE init.c BROWSE DEBUG OBJECTEXTEND SRC(.\init.SRC)
$NOMOD51
NAME INIT
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?LcdDrvInit?INIT SEGMENT CODE
?PR?init_ATT7027?INIT SEGMENT CODE
?PR?init_RTC?INIT SEGMENT CODE
?PR?init_time?INIT SEGMENT CODE
?PR?_UpdateLCD?INIT SEGMENT CODE
?DT?INIT SEGMENT DATA
?DT?_UpdateLCD?INIT SEGMENT DATA OVERLAYABLE
?C_INITSEG SEGMENT CODE
?CO?INIT SEGMENT CODE
EXTRN XDATA (g_CommBuffer)
EXTRN CODE (_Flash_Read_ATT7027)
EXTRN DATA (?_Flash_Read_ATT7027?BYTE)
EXTRN CODE (_WriteCALATT7027)
EXTRN DATA (?_WriteCALATT7027?BYTE)
EXTRN CODE (?C?ULSHR)
PUBLIC eeprominit
PUBLIC _UpdateLCD
PUBLIC init_time
PUBLIC init_RTC
PUBLIC init_ATT7027
PUBLIC LcdDrvInit
RSEG ?DT?_UpdateLCD?INIT
?_UpdateLCD?BYTE:
x?440: DS 4
RSEG ?DT?INIT
LCDFont?442: DS 16
RSEG ?CO?INIT
eeprominit:
DB 033H
DB 033H
DB 033H
DB 011H
DB 011H
DB 011H
DB 012H
DB 034H
DB 056H
DB 000H
DB 000H
DB 016H
DB 000H
DB 0AAH
DB 059H
DB 023H
DB 000H
DB 096H
DB 000H
DB 088H
DB 088H
DB 088H
DB 088H
DB 0FFH
DB 0FFH
DB 006H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 0AAH
DB 000H
DB 000H
DB 000H
DB 000H
DB 0CAH
DB 011H
DB 012H
DB 013H
DB 014H
DB 055H
DB 044H
DB 033H
DB 022H
DB 0AAH
DB 021H
DB 022H
DB 023H
DB 024H
DB 022H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 040H
DB 070H
DB 005H
DB 00AH
DB 006H
RSEG ?C_INITSEG
DB 010H
DB LCDFont?442
DB 07DH
DB 060H
DB 03EH
DB 07AH
DB 063H
DB 05BH
DB 05FH
DB 070H
DB 07FH
DB 07BH
DB 077H
DB 04FH
DB 01DH
DB 06EH
DB 01FH
DB 017H
; #include <ATT7027.H>
; #include <MAIN.H>
; void LcdDrvInit(void);
; void L_default(void);
; void restoredata(void);
; void init_ATT7027(void);
; void load_Flash_write(void);
; unsigned char judg_flash_init(void);
; void init_RTC(void);
; unsigned char check_sum(unsigned char *p,unsigned char length);
; void UpdateLCD(unsigned long x);
; void init_time(void);
; code unsigned char eeprominit[] =
; {
; 0x33, 0x33, 0x33,
; 0x11, 0x11, 0x11, // Meter serial number.
; 0x12, 0x34, 0x56, 0x00, //eprom_program_password
; 0x00, 0x16, 0x00, // Real meter constant = 1600 counts/kWh
; 0xaa, //0x00,
; 0x59, 0x23, //eprom_autoread_date[2];
; 0x00, 0x96, 0x00, //eprom_bureau_No
; 0x88, 0x88, 0x88, 0x88, //eprom_clear_password
; 0xff, 0xff, 0x06, //eprom_display_select
; 0x00, 0x00, //eprom_program_degree
;
; 0x00, 0x00, 0x00, 0x00,
; 0xaa,
; 0x00, 0x00, 0x00, 0x00,
; 0xca,
; 0x11, 0x12, 0x13, 0x14, //eprom_back_real_energy
;
; 0x55, 0x44, 0x33, 0x22,
; 0xaa,
; 0x21, 0x22, 0x23, 0x24,
; 0x22,
; //0x00, 0x00, 0x00, //eprom_ActivePeakLevel[3];
; 0x00, //eprom_period_number[1];
; 0x00, 0x00, 0x00, 0x00,//eprom_clear_time[3];
; //eprom_verify_time_25day;
; 0x00, 0x00, 0x00, 0x00,//eprom_program_time[4];
; 0x00, 0x00, 0x00, 0x00,//eprom_max_address[48];
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,// eprom_energy_day[40];
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x00, 0x00, 0x00, 0x00, 0x00,
; 0x40, 0x70, 0x05, 0x0a, 0x06 //eprom_energy_address[5];
; };
;
;
; void LcdDrvInit(void)
RSEG ?PR?LcdDrvInit?INIT
LcdDrvInit:
; SOURCE LINE # 65
; {
; SOURCE LINE # 66
; CLCDCFG=0x3f;//将PA、PB、PC口配置成LCD输出
; SOURCE LINE # 67
MOV CLCDCFG,#03FH
; CP02CFG=0x00;//将P0口配置成GPIO,P2口配置成UART0、UART1、LVDIN、SF、PF、QF
; SOURCE LINE # 68
CLR A
MOV CP02CFG,A
; KEYIE=0x00;//将P1口配置为GPIO口,不产生按键中断,采用查询方式获得按键信息
; SOURCE LINE # 69
MOV KEYIE,A
; CP3CFG=0x0a;//将P3.2配置成GPIO,P3.3配置成/INT1,其它口线为GPIO,允许UART1口的发送通讯Tx1进行38k调制
; SOURCE LINE # 70
MOV CP3CFG,#0AH
; TCON|=0x04;//将/INT1配置成下降沿触发
; SOURCE LINE # 71
ORL TCON,#04H
; CSUPDC&=0xdb;//OPEN LCD AND TPS,NOT OPEN IIC
; SOURCE LINE # 72
ANL CSUPDC,#0DBH
; CSUPDC|=0x08;//CLOSE LVD
; SOURCE LINE # 73
ORL CSUPDC,#08H
; LCDCR=0x00;//在系统被复位以后,LCD的状态是:COM0、COM1、COM2、COM3都被使用
; SOURCE LINE # 74
MOV LCDCR,A
; //对比度选择最大对比度,快速充电时间为1/32个FLCD周期,快
; LVDCON=0xc0;//将LVD配置成检测LVDIN管脚
; SOURCE LINE # 76
MOV LVDCON,#0C0H
; }
; SOURCE LINE # 77
RET
; END OF LcdDrvInit
;
; void init_ATT7027(void)
RSEG ?PR?init_ATT7027?INIT
init_ATT7027:
USING 0
; SOURCE LINE # 79
; {
; SOURCE LINE # 80
; Flash_Read_ATT7027(OFFSET_OF(EEPROM_DATA,Active_Power_Gain_GP1), &g_CommBuffer[0],OFFSET_OF(EEPROM_DATA,Active_Power_Gain_GP1)-OFFSET_OF(EEPROM_DATA,EMU_Krms_Rms));
; SOURCE LINE # 81
MOV R3,#01H
MOV R2,#HIGH (g_CommBuffer)
MOV R1,#LOW (g_CommBuffer)
MOV ?_Flash_Read_ATT7027?BYTE+05H,#0CCH
MOV R7,#02H
MOV R6,#00H
LCALL _Flash_Read_ATT7027
; WriteCALATT7027(0x41,&g_CommBuffer[0],OFFSET_OF(EEPROM_DATA,Active_Power_Gain_GP1)-OFFSET_OF(EEPROM_DATA,EMU_Krms_Rms));
; SOURCE LINE # 82
MOV R3,#01H
MOV R2,#HIGH (g_CommBuffer)
MOV R1,#LOW (g_CommBuffer)
MOV ?_WriteCALATT7027?BYTE+04H,#0CCH
MOV R7,#041H
LJMP _WriteCALATT7027
; END OF init_ATT7027
; }
; void init_RTC(void)
RSEG ?PR?init_RTC?INIT
init_RTC:
; SOURCE LINE # 84
; {
; SOURCE LINE # 85
; EA=0;
; SOURCE LINE # 86
CLR EA
; BWPR=0xC3;//使能写PMOD[1:0]操作
; SOURCE LINE # 87
MOV BWPR,#0C3H
; BWPR=0x9B;//开启所有受保护位的写使能
; SOURCE LINE # 88
MOV BWPR,#09BH
; CSECR=0x59;
; SOURCE LINE # 89
MOV CSECR,#059H
; CMINR=0x30;
; SOURCE LINE # 90
MOV CMINR,#030H
; CHOUR=0x12;
; SOURCE LINE # 91
MOV CHOUR,#012H
; CDAYR=0x10;
; SOURCE LINE # 92
MOV CDAYR,#010H
; CMTHR=0x04;
; SOURCE LINE # 93
MOV CMTHR,#04H
; CYEAR=0x07;
; SOURCE LINE # 94
MOV CYEAR,#07H
; CWKDR=0x02;
; SOURCE LINE # 95
MOV CWKDR,#02H
; BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
; SOURCE LINE # 96
MOV BWPR,#0A8H
; //BWPR=0x9A;
; }
; SOURCE LINE # 98
RET
; END OF init_RTC
; void init_time(void)
RSEG ?PR?init_time?INIT
init_time:
; SOURCE LINE # 99
; {
; SOURCE LINE # 100
; TMOD=0x09;//将TIMER0为16位触的定为模
; SOURCE LINE # 101
MOV TMOD,#09H
; CKCON=0x08;
; SOURCE LINE # 102
MOV CKCON,#08H
; TCON=0X10;
; SOURCE LINE # 103
MOV TCON,#010H
; TL1=0XF4;
; SOURCE LINE # 104
MOV TL1,#0F4H
; TH1=0XF4;
; SOURCE LINE # 105
MOV TH1,#0F4H
; TL0=0X00;
; SOURCE LINE # 106
CLR A
MOV TL0,A
; TH0=0X01;
; SOURCE LINE # 107
MOV TH0,#01H
; SCON1=0XC0;
; SOURCE LINE # 108
MOV SCON1,#0C0H
; IE=0X82;
; SOURCE LINE # 109
MOV IE,#082H
; }
; SOURCE LINE # 110
RET
; END OF init_time
; void UpdateLCD(unsigned long x)
RSEG ?PR?_UpdateLCD?INIT
_UpdateLCD:
USING 0
; SOURCE LINE # 111
MOV x?440+03H,R7
MOV x?440+02H,R6
MOV x?440+01H,R5
MOV x?440,R4
; {
; SOURCE LINE # 112
; unsigned char i;
; static const unsigned char LCDFont[] =
; {
; 0x7D, // 0
; 0x60, // 1
; 0x3E, // 2
; 0x7A, // 3
; 0x63, // 4
; 0x5B, // 5
; 0x5F, // 6
; 0x70, // 7
; 0x7F, // 8
; 0x7B, // 9
; 0x77, // A
; 0x4F, // B
; 0x1D, // C
; 0x6E, // D
; 0x1F, // E
; 0x17 // F
; };
;
; for(i=4;i<=11;i++)
; SOURCE LINE # 134
;---- Variable 'i?441' assigned to Register 'R3' ----
MOV R3,#04H
?C0005:
; {
; SOURCE LINE # 135
; LADR=i*2-1;
; SOURCE LINE # 136
MOV A,R3
ADD A,ACC
DEC A
MOV LADR,A
; LDAT=(LCDFont[(x >>((11-i)*4)) & 0xf])&0xf;
; SOURCE LINE # 137
MOV R7,x?440+03H
MOV R6,x?440+02H
MOV R5,x?440+01H
MOV R4,x?440
CLR C
MOV A,#0BH
SUBB A,R3
ADD A,ACC
ADD A,ACC
MOV R1,A
MOV R0,A
LCALL ?C?ULSHR
MOV A,R7
ANL A,#0FH
ADD A,#LOW (LCDFont?442)
MOV R0,A
MOV A,@R0
MOV R7,A
ANL A,#0FH
MOV LDAT,A
; LADR=i*2;
; SOURCE LINE # 138
MOV A,R3
ADD A,ACC
MOV LADR,A
; LDAT=(LCDFont[(x >>((11-i)*4)) & 0xf]>>4)&0xf;
; SOURCE LINE # 139
MOV A,R7
SWAP A
ANL A,#0FH
MOV LDAT,A
; }
; SOURCE LINE # 140
INC R3
CJNE R3,#0CH,?C0005
; } ; SOURCE LINE # 141
?C0008:
RET
; END OF _UpdateLCD
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -