⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.src

📁 att7025是一个单相SOC的单心片电表方案
💻 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 + -