?? main.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 + -