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

📄 main.src

📁 att7025是一个单相SOC的单心片电表方案
💻 SRC
字号:
; .\main.SRC generated from: main.c
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND SRC(.\main.SRC)

$NOMOD51

NAME	MAIN

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?main?MAIN        SEGMENT CODE 
?PR?timer0?MAIN      SEGMENT CODE 
?C_INITSEG           SEGMENT CODE 
?DT?MAIN             SEGMENT DATA 
?XD?MAIN             SEGMENT XDATA 
	EXTRN	CODE (_UpdateLCD)
	EXTRN	CODE (init_time)
	EXTRN	CODE (LcdDrvInit)
	EXTRN	CODE (EMU_Parameter_change1)
	EXTRN	CODE (?C_STARTUP)
	PUBLIC	Emu_Parameter_change
	PUBLIC	NUM
	PUBLIC	aa
	PUBLIC	g_CommBuffer
	PUBLIC	Emu_Parameter
	PUBLIC	meter_para
	PUBLIC	real_energy
	PUBLIC	timea
	PUBLIC	timer0
	PUBLIC	main

	RSEG  ?DT?MAIN
          timea:   DS   2
             aa:   DS   2
            NUM:   DS   1

	RSEG  ?XD?MAIN
    real_energy:   DS   31
     meter_para:   DS   23
  Emu_Parameter:   DS   64
   g_CommBuffer:   DS   50
Emu_Parameter_change:   DS   82

	RSEG  ?C_INITSEG
	DB	002H
	DB	aa
	DB	00FH
	DB	001H

; #include <ATT7027.H>
; #include <MAIN.H>
;  xdata struct Emu_Parameter Emu_Parameter;
;  xdata struct Emu_Parameter_change Emu_Parameter_change;
;  xdata struct real_energy real_energy;
;  xdata struct meter_para meter_para;
;  data unsigned char  aa[2]={0x0f,0x01};
;  xdata unsigned char  g_CommBuffer[50];
;  unsigned char NUM;
;  unsigned int timea;
; 
; void main (void) //_at_ 0x100 

	RSEG  ?PR?main?MAIN
main:
	USING	0
			; SOURCE LINE # 12
; {
			; SOURCE LINE # 13
; //unsigned char i;
;     //i = temp2;
;   SP =0x7f;//程序堆栈指针
			; SOURCE LINE # 16
	MOV  	SP,#07FH
;   CKCON&= 0xf8;//定时器/计数器时钟控制Timer 使用clk/4 作为时钟
			; SOURCE LINE # 17
	ANL  	CKCON,#0F8H
; 	BWPR=0xC3	;//使能写PMOD[1:0]操作
			; SOURCE LINE # 18
	MOV  	BWPR,#0C3H
; 	BWPR=0x9B;//开启所有受保护位的写使能
			; SOURCE LINE # 19
	MOV  	BWPR,#09BH
; 	CBORCFG|=0x80;//开启高频晶振电路功能
			; SOURCE LINE # 20
	ORL  	CBORCFG,#080H
; 	BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
			; SOURCE LINE # 21
	MOV  	BWPR,#0A8H
?C0001:
;  
; 	while((SYSSCR&0x80) != 0x80)//LOCK=1表示高频晶振已经稳定
			; SOURCE LINE # 23
	MOV  	A,SYSSCR
	JNB  	ACC.7,?C0001
; 	{;}	
			; SOURCE LINE # 24
?C0002:
; 	BWPR=0xC3;//使能写PMOD[1:0]操作
			; SOURCE LINE # 25
	MOV  	BWPR,#0C3H
; 	BWPR=0x9B;//开启所有受保护位的写使能	
			; SOURCE LINE # 26
	MOV  	BWPR,#09BH
; 	CCLKCFG |=0x02;//			;//SYSCK1=1,fsys=fpri
			; SOURCE LINE # 27
	ORL  	CCLKCFG,#02H
; 	CFMCFG|=0xE4;//			;BROM EN可以调用Monitor Rom中程序,		
			; SOURCE LINE # 28
	ORL  	CFMCFG,#0E4H
; //	BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
;    LcdDrvInit();
			; SOURCE LINE # 30
	LCALL	LcdDrvInit
; 	BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
			; SOURCE LINE # 31
	MOV  	BWPR,#0A8H
; 	//usart_init();
; 	//interrupt_init();
; //	init_ATT7027();
; //	load_Flash_write();
; //	CLRALL_LCD_BUF(); 
;    init_time();   
			; SOURCE LINE # 37
	LCALL	init_time
; 	EA	=1 ;
			; SOURCE LINE # 38
	SETB 	EA
; 	Autobaud();
			; SOURCE LINE # 39
	LCALL	0FCBCH
; 	EICON|= 0x20;//     ;BREAK PONIT IE 
			; SOURCE LINE # 40
	ORL  	EICON,#020H
?C0003:
; 	while(1)
			; SOURCE LINE # 41
; 	{ 
			; SOURCE LINE # 42
; /****************************************************/
; //把这个放到WHILE(1)能编译过前面就不能进行仿真了
; 
; 	if(RI == 1)
			; SOURCE LINE # 46
	JNB  	RI,?C0005
; 		{
			; SOURCE LINE # 47
; 			Cmd_parser();
			; SOURCE LINE # 48
	LCALL	0F903H
;       RI = 0 ;
			; SOURCE LINE # 49
	CLR  	RI
;     }  
			; SOURCE LINE # 50
?C0005:
;  
;  /* for(i=1;i<=24;i++)
;   {
;   LADR=i;
;   LDAT=0xf ;
;    }   */
; /****************************************************/
;  //RTC_CAL_TEMP();
;  EMU_Parameter_change1();
			; SOURCE LINE # 59
	LCALL	EMU_Parameter_change1
;   switch(NUM)
			; SOURCE LINE # 60
	MOV  	A,NUM
	DEC  	A
	CJNE 	A,#09H,?C0021
?C0021:
	JC   	$ + 5H
	LJMP 	?C0016
	MOV  	DPTR,#?C0022
	MOV  	B,#03H
	MUL  	AB
	XCH  	A,DPH
	ADD  	A,B
	XCH  	A,DPH
	JMP  	@A+DPTR
?C0022:
	LJMP 	?C0007
	LJMP 	?C0008
	LJMP 	?C0009
	LJMP 	?C0010
	LJMP 	?C0011
	LJMP 	?C0012
	LJMP 	?C0013
	LJMP 	?C0014
	LJMP 	?C0015
;   {
			; SOURCE LINE # 61
;     case 1: // Time
			; SOURCE LINE # 62
?C0007:
;      UpdateLCD(0X11111111);
			; SOURCE LINE # 63
	MOV  	R7,#011H
	MOV  	R6,#011H
	MOV  	R5,#011H
	MOV  	R4,#011H
;       break;
			; SOURCE LINE # 64
	SJMP 	?C0032
;     case 2: // Date
			; SOURCE LINE # 65
?C0008:
;      UpdateLCD(0X22222222);
			; SOURCE LINE # 66
	MOV  	R7,#022H
	MOV  	R6,#022H
	MOV  	R5,#022H
	MOV  	R4,#022H
?C0024:
;       break;
			; SOURCE LINE # 67
	SJMP 	?C0032
;     case 3: // Energy
			; SOURCE LINE # 68
?C0009:
;      UpdateLCD(0X33333333);
			; SOURCE LINE # 69
	MOV  	R7,#033H
	MOV  	R6,#033H
	MOV  	R5,#033H
	MOV  	R4,#033H
?C0025:
;       break;
			; SOURCE LINE # 70
	SJMP 	?C0032
;     case 4: // PeakLevel
			; SOURCE LINE # 71
?C0010:
;     UpdateLCD(0X44444444);
			; SOURCE LINE # 72
	MOV  	R7,#044H
	MOV  	R6,#044H
	MOV  	R5,#044H
	MOV  	R4,#044H
?C0026:
;       break;
			; SOURCE LINE # 73
	SJMP 	?C0032
;     case 5: //Time
			; SOURCE LINE # 74
?C0011:
;     UpdateLCD(0X55555555);
			; SOURCE LINE # 75
	MOV  	R7,#055H
	MOV  	R6,#055H
	MOV  	R5,#055H
	MOV  	R4,#055H
?C0027:
;       break;
			; SOURCE LINE # 76
	SJMP 	?C0032
;     case 6: // Energy
			; SOURCE LINE # 77
?C0012:
;     UpdateLCD(0X66666666);
			; SOURCE LINE # 78
	MOV  	R7,#066H
	MOV  	R6,#066H
	MOV  	R5,#066H
	MOV  	R4,#066H
?C0028:
;       break;
			; SOURCE LINE # 79
	SJMP 	?C0032
;     case 7: // Energy
			; SOURCE LINE # 80
?C0013:
;     UpdateLCD(0X777777771);
			; SOURCE LINE # 81
	MOV  	R7,#071H
	MOV  	R6,#077H
	MOV  	R5,#077H
	MOV  	R4,#077H
?C0029:
;       break;
			; SOURCE LINE # 82
	SJMP 	?C0032
;     case 8: // Energy
			; SOURCE LINE # 83
?C0014:
;     UpdateLCD(0X88888888);
			; SOURCE LINE # 84
	MOV  	R7,#088H
	MOV  	R6,#088H
	MOV  	R5,#088H
	MOV  	R4,#088H
?C0030:
;       break;
			; SOURCE LINE # 85
	SJMP 	?C0032
;     case 9: // Energy
			; SOURCE LINE # 86
?C0015:
;     UpdateLCD(0X99999999);
			; SOURCE LINE # 87
	MOV  	R7,#099H
	MOV  	R6,#099H
	MOV  	R5,#099H
	MOV  	R4,#099H
?C0031:
;       break;
			; SOURCE LINE # 88
	SJMP 	?C0032
;    default:
			; SOURCE LINE # 89
?C0016:
;       UpdateLCD(0XFFFFFFFF);
			; SOURCE LINE # 90
	MOV  	R7,#0FFH
	MOV  	R6,#0FFH
	MOV  	R5,#0FFH
	MOV  	R4,#0FFH
?C0032:
	LCALL	_UpdateLCD
;              break;
			; SOURCE LINE # 91
; 
;   }	 
			; SOURCE LINE # 93
?C0006:
; 
;  if(timea>100)
			; SOURCE LINE # 95
	SETB 	C
	MOV  	A,timea+01H
	SUBB 	A,#064H
	MOV  	A,timea
	SUBB 	A,#00H
	JC   	?C0017
;  {
			; SOURCE LINE # 96
;    NUM++;
			; SOURCE LINE # 97
	INC  	NUM
;    timea=0;
			; SOURCE LINE # 98
	CLR  	A
	MOV  	timea,A
	MOV  	timea+01H,A
;    }
			; SOURCE LINE # 99
?C0017:
;    if(NUM>7)
			; SOURCE LINE # 100
	MOV  	A,NUM
	SETB 	C
	SUBB 	A,#07H
	JNC  	$ + 5H
	LJMP 	?C0003
;    NUM=1;
			; SOURCE LINE # 101
	MOV  	NUM,#01H
;  //communication_dl645();
; // DisplayManager();
; /****************************************************/
;  /* for (i=0;i<60;i++)
;   {
;   Pulse[i]=i;
;   }*/
; /****************************************************/
; /****************************************************/
; //在C中嵌入汇编后能编译过但不能进行仿真
; /* #pragma asm
;  mov a,#30h
;  #pragma endasm*/
; /***************************************************/ 
;  // Delay(2);
;  // Delay(2);	
;  /* if(power_ctive<550)
; 		{
; 		real_energy.relay_flag |=bitflag_current	;	
;     if((real_energy.relay_flag &=bitflag_command_off)&&(!(real_energy.relay_flag &=bitflag_fact_off)))
;   	  { 
;   	  CTR_ON=0;
;       CTR_OFF=1; 
; 		  real_energy.relay_flag |=bitflag_fact_off	;		      		
; 		  }
; 		 else if(!(real_energy.relay_flag &=bitflag_command_off)&&(real_energy.relay_flag &=bitflag_fact_off))
; 		 	{
; 		  CTR_ON=1;
;       CTR_OFF=0;
; 		  real_energy.relay_flag &=~bitflag_fact_off	;		
; 		 	} 
; 		}
; 	 else	{
; 	 	    real_energy.relay_flag &=~bitflag_current;	
; 	 	    //flag1 &=~bitflag_fact_off;
; 	 	    }*/
;  /* if((flag1&bitflag_EXLVI))
;    {
;      // DI();
;         display_index=5;
;     //    display(); 
;        Power_fail();     
;      do
;       {P1.2=0;
;            HALT();            
;            if(WTIF!=0)                        
;            ;// CalcCalendar();         
;           } while(EXLVI==0);          
;       if(EXLVI)
;       
;       POWER_On();  
;     //  goto aa;
;      // delay_ms(4); 
;           
;    }        
;   if(WTIF!=0)
;     { 
;      CalcCalendar();     
;     display_time++;
;      display();    
;     }
;    if(!(flag3&bitflag_Play))
;     {
;      if(Flag_ICPort)                                                 
;      ;// _ICardType();                                               
;     }
;    if (current_time.second)
; 	  minute_0_deal=0;	  
; 		//整分,做时段切换
;  if(current_time.second == 0)  //per minute operation
;    {
;    if (!minute_0_deal)
;     {
; 
; 		     }   // 整点,per 1 hour operation
; 	      }
; 	    }	 
;    }
;    WDTE=0xac; 
;    energy_add();
;    dl645(); */  
;  } 
			; SOURCE LINE # 183
	LJMP 	?C0003
; END OF main

CSEG	AT	0000BH
	LJMP	timer0

; 
; }
; 
; timer0(void) interrupt 1   using 2

	RSEG  ?PR?timer0?MAIN
	USING	2
timer0:
	PUSH 	ACC
			; SOURCE LINE # 187
;  {
;   timea++; 
			; SOURCE LINE # 189
	INC  	timea+01H
	MOV  	A,timea+01H
	JNZ  	?C0023
	INC  	timea
?C0023:
;   }
			; SOURCE LINE # 190
	POP  	ACC
	RETI 	
; END OF timer0

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -