?? yanshi.src
字號:
; .\yanshi.SRC generated from: yanshi.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE yanshi.c BROWSE DEBUG OBJECTEXTEND SRC(.\yanshi.SRC)
$NOMOD51
NAME YANSHI
CCF2 BIT 0D8H.2
TB80 BIT 098H.3
SPI0CKR DATA 09DH
CCF3 BIT 0D8H.3
P0 DATA 080H
SPIEN BIT 0F8H.0
CCF4 BIT 0D8H.4
SM00 BIT 098H.7
P1 DATA 090H
AA BIT 0C0H.2
SM10 BIT 098H.6
WDTCN DATA 0FFH
P2 DATA 0A0H
SM20 BIT 098H.5
ADC0CF DATA 0BCH
P3 DATA 0B0H
AC BIT 0D0H.6
ADC1CF DATA 0ABH
P4 DATA 084H
EIE1 DATA 0E6H
P5 DATA 085H
EA BIT 0A8H.7
EIE2 DATA 0E7H
P6 DATA 086H
P7 DATA 096H
PSCTL DATA 08FH
MSTEN BIT 0F8H.1
CF BIT 0D8H.7
ADC0CN DATA 0E8H
DAC0CN DATA 0D4H
DAC1CN DATA 0D7H
ADC1CN DATA 0AAH
P0MDOUT DATA 0A4H
P1MDOUT DATA 0A5H
IE DATA 0A8H
P2MDOUT DATA 0A6H
P3MDOUT DATA 0A7H
TMR3RLH DATA 093H
START BIT 080H.5
EIP1 DATA 0F6H
EIP2 DATA 0F7H
BACK BIT 080H.4
PCA0CPH0 DATA 0FAH
PCA0CPH1 DATA 0FBH
P3IF DATA 0ADH
TMR3RLL DATA 092H
PCA0CPH2 DATA 0FCH
CR BIT 0D8H.6
PCA0CPH3 DATA 0FDH
EXF2 BIT 0C8H.6
REN0 BIT 098H.4
PCA0CPH4 DATA 0FEH
PCA0CPL0 DATA 0EAH
EMI0CF DATA 0A3H
PCA0CPL1 DATA 0EBH
PCA0CPM0 DATA 0DAH
PCA0MD DATA 0D9H
PCA0CN DATA 0D8H
PCA0CPL2 DATA 0ECH
PCA0CPM1 DATA 0DBH
PCA0CPL3 DATA 0EDH
PCA0CPM2 DATA 0DCH
IP DATA 0B8H
PCA0CPL4 DATA 0EEH
PCA0CPM3 DATA 0DDH
PCA0CPM4 DATA 0DEH
TXBSY BIT 0F8H.3
CY BIT 0D0H.7
SI BIT 0C0H.3
LEDG BIT 0B0H.4
XBR0 DATA 0E1H
SADEN0 DATA 0B9H
XBR1 DATA 0E2H
EMI0CN DATA 0AFH
SADEN1 DATA 0AEH
XBR2 DATA 0E3H
REF0CN DATA 0D1H
SADDR0 DATA 0A9H
SADDR1 DATA 0F3H
AMX0CF DATA 0BAH
AD0INT BIT 0E8H.5
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
RCAP4H DATA 0E5H
EMI0TC DATA 0A1H
OV BIT 0D0H.2
SMB0CN DATA 0C0H
RCAP2L DATA 0CAH
CH452_DCLK BIT 0A0H.4
MODF BIT 0F8H.5
RCAP4L DATA 0E4H
CH452_LOAD BIT 0A0H.6
SMB0CR DATA 0CFH
CPT0CN DATA 09EH
P1MDIN DATA 0BDH
CPT1CN DATA 09FH
SPI0CN DATA 0F8H
PCON DATA 087H
SPIF BIT 0F8H.7
P74OUT DATA 0B5H
TMOD DATA 089H
TCON DATA 088H
WCOL BIT 0F8H.6
AMX0SL DATA 0BBH
AMX1SL DATA 0ACH
TMR3CN DATA 091H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
DAC0H DATA 0D3H
ADC0H DATA 0BFH
OSCICN DATA 0B2H
DAC1H DATA 0D6H
SMBFTE BIT 0C0H.1
BUSY BIT 0C0H.7
CH452_DOUT BIT 0B0H.7
DAC0L DATA 0D2H
ADC0L DATA 0BEH
DAC1L DATA 0D5H
IN0 BIT 090H.1
ACC DATA 0E0H
IN1 BIT 090H.3
ES0 BIT 0A8H.4
IN2 BIT 090H.0
AD0EN BIT 0E8H.7
CT2 BIT 0C8H.1
ET0 BIT 0A8H.1
IN3 BIT 090H.5
ET1 BIT 0A8H.3
TF0 BIT 088H.5
IN4 BIT 090H.2
ET2 BIT 0A8H.5
RI0 BIT 098H.0
TF1 BIT 088H.7
TF2 BIT 0C8H.7
SMBTOE BIT 0C0H.0
TH0 DATA 08CH
EX0 BIT 0A8H.0
TI0 BIT 098H.1
IT0 BIT 088H.0
PCA0H DATA 0F9H
TH1 DATA 08DH
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
TH4 DATA 0F5H
OSCXCN DATA 0B1H
TL0 DATA 08AH
PCA0L DATA 0E9H
TL1 DATA 08BH
TL2 DATA 0CCH
PT0 BIT 0B8H.1
TL4 DATA 0F4H
RS0 BIT 0D0H.3
PT1 BIT 0B8H.3
RS1 BIT 0D0H.4
PT2 BIT 0B8H.5
TR0 BIT 088H.4
AD0TM BIT 0E8H.6
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
SLVSEL BIT 0F8H.2
DPH DATA 083H
RCLK0 BIT 0C8H.5
ADC0GTH DATA 0C5H
TCLK0 BIT 0C8H.4
DPL DATA 082H
ADC0GTL DATA 0C4H
SBUF0 DATA 099H
SBUF1 DATA 0F2H
ADC0LTH DATA 0C7H
CH452_DIN BIT 0A0H.7
EXEN2 BIT 0C8H.3
RSTSRC DATA 0EFH
FLACL DATA 0B7H
CPRL2 BIT 0C8H.0
SCON0 DATA 098H
SCON1 DATA 0F1H
ADC0LTL DATA 0C6H
T2CON DATA 0C8H
STA BIT 0C0H.5
T4CON DATA 0C9H
SMB0ADR DATA 0C3H
SMB0DAT DATA 0C2H
SPI0CFG DATA 09AH
TMR3H DATA 095H
CKCON DATA 08EH
RXOVRN BIT 0F8H.4
TMR3L DATA 094H
AD0LJST BIT 0E8H.0
F0 BIT 0D0H.5
FLSCL DATA 0B6H
AD0CM0 BIT 0E8H.2
F1 BIT 0D0H.1
STO BIT 0C0H.4
ENSMB BIT 0C0H.6
AD0CM1 BIT 0E8H.3
SPI0DAT DATA 09BH
AD0WINT BIT 0E8H.1
ADC1 DATA 09CH
AD0BUSY BIT 0E8H.4
PSW DATA 0D0H
CCF0 BIT 0D8H.0
RB80 BIT 098H.2
SMB0STA DATA 0C1H
CCF1 BIT 0D8H.1
?PR?Port_IO_Init?YANSHI SEGMENT CODE
?PR?Interrupts_Init?YANSHI SEGMENT CODE
?PR?Init_Device?YANSHI SEGMENT CODE
?PR?_speedchange?YANSHI SEGMENT CODE
?DT?_speedchange?YANSHI SEGMENT DATA OVERLAYABLE
?PR?pingjun?YANSHI SEGMENT CODE
?DT?pingjun?YANSHI SEGMENT DATA OVERLAYABLE
?PR?judgement?YANSHI SEGMENT CODE
?PR?_delay_s?YANSHI SEGMENT CODE
?DT?_delay_s?YANSHI SEGMENT DATA OVERLAYABLE
?PR?main?YANSHI SEGMENT CODE
?DT?main?YANSHI SEGMENT DATA OVERLAYABLE
?PR?PCA_ISR?YANSHI SEGMENT CODE
?PR?led?YANSHI SEGMENT CODE
?C_INITSEG SEGMENT CODE
?DT?YANSHI SEGMENT DATA
?XD?YANSHI SEGMENT XDATA
EXTRN CODE (CH452_Read)
EXTRN CODE (_abs)
EXTRN CODE (Oscillator_Init)
EXTRN CODE (CH452_Init)
EXTRN CODE (ADC_Init)
EXTRN CODE (Voltage_Reference_Init)
EXTRN CODE (Reset_Sources_Init)
EXTRN CODE (PCA_Init)
EXTRN CODE (_delayms)
EXTRN CODE (_BCDdisplay_h)
EXTRN CODE (_BCDdisplay_l)
EXTRN CODE (_CH452_Write)
EXTRN CODE (AD_IN)
EXTRN CODE (?C?FCASTI)
EXTRN CODE (?C?FPMUL)
EXTRN CODE (?C?CASTF)
EXTRN CODE (?C?LSTXDATA)
EXTRN CODE (?C?ULDIV)
EXTRN CODE (?C_STARTUP)
EXTRN CODE (?C?FCASTL)
EXTRN CODE (?C?ULCMP)
PUBLIC e
PUBLIC d
PUBLIC c?
PUBLIC a?
PUBLIC avge0
PUBLIC data0
PUBLIC bb
PUBLIC left
PUBLIC avge
PUBLIC right
PUBLIC keykey
PUBLIC led
PUBLIC PCA_ISR
PUBLIC main
PUBLIC _delay_s
PUBLIC judgement
PUBLIC pingjun
PUBLIC _speedchange
PUBLIC Init_Device
PUBLIC Interrupts_Init
PUBLIC Port_IO_Init
RSEG ?DT?pingjun?YANSHI
?pingjun?BYTE:
avgad1?443: DS 4
ORG 4
avgad?444: DS 4
ORG 8
state?445: DS 4
RSEG ?DT?main?YANSHI
?main?BYTE:
chazhi?747: DS 1
ORG 1
chazhi1?748: DS 1
ORG 2
i?749: DS 1
RSEG ?DT?_delay_s?YANSHI
?_delay_s?BYTE:
n?646: DS 1
RSEG ?DT?_speedchange?YANSHI
?_speedchange?BYTE:
duty?340: DS 1
ORG 1
i?341: DS 1
RSEG ?DT?YANSHI
keykey: DS 1
right: DS 1
avge: DS 4
left: DS 1
bb: DS 1
avge0: DS 4
a?: DS 1
c?: DS 1
d: DS 1
e: DS 1
RSEG ?XD?YANSHI
data0: DS 60
RSEG ?C_INITSEG
DB 004H
DB avge
DB 000H,000H,000H,000H ; long
DB 004H
DB avge0
DB 000H,000H,000H,000H ; long
DB 001H
DB keykey
DB 000H
; /////////////////////////////////////
; // Generated Initialization File //
; /////////////////////////////////////
;
; #include "c8051F020.h"
; #include "intrins.h"
; #include "CH452CMD.H" // 定義常用命令碼及外部子程序
; #include "pin.h"
; #include "math.h"
; #include "key_display.h"
;
;
; //定義端口
; sbit LEDG = P3^4;
; sbit BACK = P0^4;
; sbit START = P0^5;
; sbit IN0 = P1^1;//左
; sbit IN1 = P1^3;//中
; sbit IN2 = P1^0;//右
; sbit IN3 = P1^5;//斜右
; sbit IN4 = P1^2;//斜左
; ulong xdata data0[15];
; ulong avge=0,avge0=0;
; uchar keykey=0;
; uchar a,bb,c,d,e,right,left;
; // Peripheral specific initialization functions,
; // Called from the Init_Device() function 系統設置,020初始化 DA_OUT AD_IN
;
;
; void Port_IO_Init()
RSEG ?PR?Port_IO_Init?YANSHI
Port_IO_Init:
; SOURCE LINE # 30
; {
; SOURCE LINE # 31
; // P0.0 - CEX0 (PCA), Open-Drain, Digital
; // P0.1 - CEX1 (PCA), Open-Drain, Digital
; XBR0 = 0x10; /*CEX0-->P0.0,CEX1-->P0.1*/
; SOURCE LINE # 34
MOV XBR0,#010H
; XBR2 = 0x40;
; SOURCE LINE # 35
MOV XBR2,#040H
; }
; SOURCE LINE # 36
RET
; END OF Port_IO_Init
;
; void Interrupts_Init()
RSEG ?PR?Interrupts_Init?YANSHI
Interrupts_Init:
; SOURCE LINE # 38
; {
; SOURCE LINE # 39
; // IE = 0x08; //使能定時器1中斷
; // IP = 0x08; //使定時器1優先級高
; EIE1 = 0x08; //使能PCA0中斷
; SOURCE LINE # 42
MOV EIE1,#08H
; EIE2 = 0x20; //使能外部鍵盤中斷
; SOURCE LINE # 43
MOV EIE2,#020H
; EIP2 = 0x20; //使外部鍵盤優先級高
; SOURCE LINE # 44
MOV EIP2,#020H
;
; }
; SOURCE LINE # 46
RET
; END OF Interrupts_Init
;
; // Initialization function for device,
; // Call Init_Device() from your main program
; void Init_Device(void)
RSEG ?PR?Init_Device?YANSHI
Init_Device:
USING 0
; SOURCE LINE # 50
; {
; SOURCE LINE # 51
; Reset_Sources_Init();
; SOURCE LINE # 52
LCALL Reset_Sources_Init
; ADC_Init();
; SOURCE LINE # 53
LCALL ADC_Init
; PCA_Init();
; SOURCE LINE # 54
LCALL PCA_Init
; //Timer_Init();
; Oscillator_Init();
; SOURCE LINE # 56
LCALL Oscillator_Init
; Voltage_Reference_Init();
; SOURCE LINE # 57
LCALL Voltage_Reference_Init
; Port_IO_Init();
; SOURCE LINE # 58
LCALL Port_IO_Init
; Interrupts_Init();
; SOURCE LINE # 59
LJMP Interrupts_Init
; END OF Init_Device
; }
;
;
; void speedchange(uchar duty,uchar i)
RSEG ?PR?_speedchange?YANSHI
L?0057:
USING 0
CLR A
MOV R5,A
MOV R7,#032H
_speedchange:
USING 0
; SOURCE LINE # 63
MOV duty?340,R7
MOV i?341,R5
; {
; SOURCE LINE # 64
; if(i==0) PCA0CPH0 =(uchar)((100-duty)*2.56); //把duty值轉換,賦值給控制占空比的寄存器
; SOURCE LINE # 65
MOV A,i?341
JNZ ?C0004
CLR C
MOV A,#064H
SUBB A,R7
MOV R5,A
CLR A
SUBB A,#00H
MOV R4,A
CLR A
LCALL ?C?FCASTI
MOV R3,#0AH
MOV R2,#0D7H
MOV R1,#023H
MOV R0,#040H
LCALL ?C?FPMUL
LCALL ?C?CASTF
MOV PCA0CPH0,R7
?C0004:
; if(i==1) PCA0CPH1=(uchar)((100-duty)*2.56);
; SOURCE LINE # 66
MOV A,i?341
CJNE A,#01H,?C0006
CLR C
MOV A,#064H
SUBB A,duty?340
MOV R5,A
CLR A
SUBB A,#00H
MOV R4,A
CLR A
LCALL ?C?FCASTI
MOV R3,#0AH
MOV R2,#0D7H
MOV R1,#023H
MOV R0,#040H
LCALL ?C?FPMUL
LCALL ?C?CASTF
MOV PCA0CPH1,R7
;
; }
; SOURCE LINE # 68
?C0006:
RET
; END OF _speedchange
; ulong pingjun (void)
RSEG ?PR?pingjun?YANSHI
pingjun:
USING 0
; SOURCE LINE # 69
; { uchar i;
; SOURCE LINE # 70
; ulong avgad1=0,avgad=0,state=0;
; SOURCE LINE # 71
CLR A
MOV avgad1?443+03H,A
MOV avgad1?443+02H,A
MOV avgad1?443+01H,A
MOV avgad1?443,A
MOV avgad?444+03H,A
MOV avgad?444+02H,A
MOV avgad?444+01H,A
MOV avgad?444,A
MOV state?445+03H,A
MOV state?445+02H,A
MOV state?445+01H,A
MOV state?445,A
; state=AD_IN();
; SOURCE LINE # 72
LCALL AD_IN
LCALL ?C?CASTF
MOV state?445+03H,R7
MOV state?445+02H,R6
MOV state?445+01H,R5
MOV state?445,R4
; for(i=0;i<15;i++)
; SOURCE LINE # 73
;---- Variable 'i?442' assigned to Register 'R3' ----
CLR A
MOV R3,A
?C0007:
; {
; SOURCE LINE # 74
;
; data0[i]=state;
; SOURCE LINE # 76
MOV R7,state?445+03H
MOV R6,state?445+02H
MOV R5,state?445+01H
MOV R4,state?445
MOV A,R3
ADD A,ACC
ADD A,ACC
ADD A,#LOW (data0)
MOV DPL,A
CLR A
ADDC A,#HIGH (data0)
MOV DPH,A
LCALL ?C?LSTXDATA
; avgad+=data0[i];
; SOURCE LINE # 77
MOV A,R3
ADD A,ACC
ADD A,ACC
ADD A,#LOW (data0)
MOV DPL,A
CLR A
ADDC A,#HIGH (data0)
MOV DPH,A
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
ADD A,avgad?444+03H
MOV avgad?444+03H,A
MOV A,R6
ADDC A,avgad?444+02H
MOV avgad?444+02H,A
MOV A,R5
ADDC A,avgad?444+01H
MOV avgad?444+01H,A
MOV A,R4
ADDC A,avgad?444
MOV avgad?444,A
; //delayms(10);
; }
; SOURCE LINE # 79
INC R3
CJNE R3,#0FH,?C0007
?C0008:
; avgad=avgad/15;
; SOURCE LINE # 80
MOV R7,avgad?444+03H
MOV R6,avgad?444+02H
MOV R5,avgad?444+01H
MOV R4,avgad?444
CLR A
MOV R3,#0FH
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?ULDIV
MOV avgad?444+03H,R7
MOV avgad?444+02H,R6
MOV avgad?444+01H,R5
MOV avgad?444,R4
; for(i=0;i<15;i++)
; SOURCE LINE # 81
CLR A
MOV R3,A
?C0010:
; {
; SOURCE LINE # 82
;
; data0[i]=state;
; SOURCE LINE # 84
MOV R7,state?445+03H
MOV R6,state?445+02H
MOV R5,state?445+01H
MOV R4,state?445
MOV A,R3
ADD A,ACC
ADD A,ACC
ADD A,#LOW (data0)
MOV DPL,A
CLR A
ADDC A,#HIGH (data0)
MOV DPH,A
LCALL ?C?LSTXDATA
; avgad1+=data0[i];
; SOURCE LINE # 85
MOV A,R3
ADD A,ACC
ADD A,ACC
ADD A,#LOW (data0)
MOV DPL,A
CLR A
ADDC A,#HIGH (data0)
MOV DPH,A
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
ADD A,avgad1?443+03H
MOV avgad1?443+03H,A
MOV A,R6
ADDC A,avgad1?443+02H
MOV avgad1?443+02H,A
MOV A,R5
ADDC A,avgad1?443+01H
MOV avgad1?443+01H,A
MOV A,R4
ADDC A,avgad1?443
MOV avgad1?443,A
; //delayms(10);
; }
; SOURCE LINE # 87
INC R3
CJNE R3,#0FH,?C0010
?C0011:
; avgad1=avgad1/15;
; SOURCE LINE # 88
MOV R7,avgad1?443+03H
MOV R6,avgad1?443+02H
MOV R5,avgad1?443+01H
MOV R4,avgad1?443
CLR A
MOV R3,#0FH
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?ULDIV
MOV avgad1?443+03H,R7
MOV avgad1?443+02H,R6
MOV avgad1?443+01H,R5
MOV avgad1?443,R4
; avge=(avgad+avgad1)/4;
; SOURCE LINE # 89
MOV A,avgad?444+03H
ADD A,avgad1?443+03H
MOV R7,A
MOV A,avgad?444+02H
ADDC A,avgad1?443+02H
MOV R6,A
MOV A,avgad?444+01H
ADDC A,avgad1?443+01H
MOV R5,A
MOV A,avgad?444
ADDC A,avgad1?443
MOV R4,A
CLR A
MOV R3,#04H
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?ULDIV
MOV avge+03H,R7
MOV avge+02H,R6
MOV avge+01H,R5
MOV avge,R4
;
; //CH452_Write(CH452_DIG1|bb);
; //CH452_Write(CH452_DIG0|c);
; return(avge);
; SOURCE LINE # 93
; }
; SOURCE LINE # 94
?C0013:
RET
; END OF pingjun
;
;
;
; void judgement (void)
RSEG ?PR?judgement?YANSHI
judgement:
USING 0
; SOURCE LINE # 98
; {
; SOURCE LINE # 99
; if((a==1&&bb==0&&c==0)||(a==1&&bb==1&&c==0))
; SOURCE LINE # 100
MOV A,a?
CJNE A,#01H,?C0016
MOV A,bb
JNZ ?C0016
MOV A,c?
JZ ?C0015
?C0016:
MOV A,a?
CJNE A,#01H,?C0014
MOV A,bb
CJNE A,#01H,?C0014
MOV A,c?
JNZ ?C0014
?C0015:
; { left=1;
; SOURCE LINE # 101
MOV left,#01H
; right=0;
; SOURCE LINE # 102
CLR A
MOV right,A
; speedchange(0,1);
; SOURCE LINE # 103
MOV R5,#01H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -