📄 key_display.src
字号:
; .\key_display.SRC generated from: key_display.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE key_display.c BROWSE DEBUG OBJECTEXTEND SRC(.\key_display.SRC)
$NOMOD51
NAME KEY_DISPLAY
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
EIP1 DATA 0F6H
EIP2 DATA 0F7H
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
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
ACC DATA 0E0H
ES0 BIT 0A8H.4
AD0EN BIT 0E8H.7
CT2 BIT 0C8H.1
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
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?Reset_Sources_Init?KEY_DISPLAY SEGMENT CODE
?PR?Oscillator_Init?KEY_DISPLAY SEGMENT CODE
?PR?ADC_Init?KEY_DISPLAY SEGMENT CODE
?PR?DAC_Init?KEY_DISPLAY SEGMENT CODE
?PR?Voltage_Reference_Init?KEY_DISPLAY SEGMENT CODE
?PR?PCA_Init?KEY_DISPLAY SEGMENT CODE
?PR?Timer_Init?KEY_DISPLAY SEGMENT CODE
?PR?_delayms?KEY_DISPLAY SEGMENT CODE
?PR?AD_IN?KEY_DISPLAY SEGMENT CODE
?PR?_DA_OUT?KEY_DISPLAY SEGMENT CODE
?PR?_CH452_Write?KEY_DISPLAY SEGMENT CODE
?PR?CH452_Read?KEY_DISPLAY SEGMENT CODE
?PR?CH452_Init?KEY_DISPLAY SEGMENT CODE
?PR?_key_tran?KEY_DISPLAY SEGMENT CODE
?PR?_BCDdisplay_l?KEY_DISPLAY SEGMENT CODE
?DT?_BCDdisplay_l?KEY_DISPLAY SEGMENT DATA OVERLAYABLE
?PR?_BCDdisplay_h?KEY_DISPLAY SEGMENT CODE
?DT?_BCDdisplay_h?KEY_DISPLAY SEGMENT DATA OVERLAYABLE
?PR?_BCDdisplay1?KEY_DISPLAY SEGMENT CODE
?DT?_BCDdisplay1?KEY_DISPLAY SEGMENT DATA OVERLAYABLE
EXTRN CODE (_abs)
EXTRN CODE (?C?FCASTI)
EXTRN CODE (?C?CASTF)
EXTRN CODE (?C?SIDIV)
EXTRN CODE (?C?FPSUB)
EXTRN CODE (?C?FPMUL)
EXTRN CODE (?C?FCASTC)
EXTRN CODE (?C?UIDIV)
PUBLIC _BCDdisplay1
PUBLIC _BCDdisplay_h
PUBLIC _BCDdisplay_l
PUBLIC _key_tran
PUBLIC CH452_Init
PUBLIC CH452_Read
PUBLIC _CH452_Write
PUBLIC _DA_OUT
PUBLIC AD_IN
PUBLIC _delayms
PUBLIC Timer_Init
PUBLIC PCA_Init
PUBLIC Voltage_Reference_Init
PUBLIC DAC_Init
PUBLIC ADC_Init
PUBLIC Oscillator_Init
PUBLIC Reset_Sources_Init
RSEG ?DT?_BCDdisplay1?KEY_DISPLAY
?_BCDdisplay1?BYTE:
x?1666: DS 2
ORG 2
a?1667: DS 8
RSEG ?DT?_BCDdisplay_h?KEY_DISPLAY
?_BCDdisplay_h?BYTE:
n?1560: DS 4
ORG 4
x?1561: DS 2
ORG 6
a?1562: DS 4
ORG 10
b?1563: DS 1
ORG 11
t?1564: DS 1
RSEG ?DT?_BCDdisplay_l?KEY_DISPLAY
?_BCDdisplay_l?BYTE:
n?1455: DS 4
ORG 4
x?1456: DS 2
ORG 6
a?1457: DS 4
ORG 10
b?1458: DS 1
ORG 11
t?1459: DS 1
; /**************************************/
; //key_display.c
; #include "c8051F020.h"
; #include "intrins.h"
; #include "CH452CMD.H" // 定义常用命令码及外部子程序
; #include "pin.h"
; #include "math.h"
;
;
; #ifndef __UNSIGNEDS
; #define __UNSIGNEDS
; #define uint unsigned int
; #define uchar unsigned char
; #define ushort unsigned short
; #define ulong unsigned long
; #endif
;
; /***********关看门狗*********************/
; void Reset_Sources_Init()
RSEG ?PR?Reset_Sources_Init?KEY_DISPLAY
Reset_Sources_Init:
; SOURCE LINE # 19
; {
; SOURCE LINE # 20
; WDTCN = 0xDE;
; SOURCE LINE # 21
MOV WDTCN,#0DEH
; WDTCN = 0xAD;
; SOURCE LINE # 22
MOV WDTCN,#0ADH
;
; }
; SOURCE LINE # 24
RET
; END OF Reset_Sources_Init
;
;
; /***********系统时钟4M*********************/
; void Oscillator_Init()
RSEG ?PR?Oscillator_Init?KEY_DISPLAY
Oscillator_Init:
; SOURCE LINE # 28
; {
; SOURCE LINE # 29
; OSCICN = 0x05;
; SOURCE LINE # 30
MOV OSCICN,#05H
; }
; SOURCE LINE # 31
RET
; END OF Oscillator_Init
;
;
;
; /***********ADC输入初始化,改变AMX0SL=0x01-0x07为AIN1-AIN7*********************/
; void ADC_Init()
RSEG ?PR?ADC_Init?KEY_DISPLAY
ADC_Init:
; SOURCE LINE # 36
; {
; SOURCE LINE # 37
; AMX0SL = 0x01; //AIN1作为AD输入,30管脚
; SOURCE LINE # 38
MOV AMX0SL,#01H
; //ADC0CF = 0x08;
; ADC0CN = 0x80; //ADC使能
; SOURCE LINE # 40
MOV ADC0CN,#080H
;
; }
; SOURCE LINE # 42
RET
; END OF ADC_Init
; /***********DAC输出初始化*********************/
; void DAC_Init()
RSEG ?PR?DAC_Init?KEY_DISPLAY
DAC_Init:
; SOURCE LINE # 44
; {
; SOURCE LINE # 45
; DAC0CN = 0x80; //DAC使能
; SOURCE LINE # 46
MOV DAC0CN,#080H
;
; }
; SOURCE LINE # 48
RET
; END OF DAC_Init
;
; /***********参考电压初始化*********************/
; void Voltage_Reference_Init()
RSEG ?PR?Voltage_Reference_Init?KEY_DISPLAY
Voltage_Reference_Init:
; SOURCE LINE # 51
; {
; SOURCE LINE # 52
; REF0CN = 0x03; //内部参考电压2.5V
; SOURCE LINE # 53
MOV REF0CN,#03H
;
; }
; SOURCE LINE # 55
RET
; END OF Voltage_Reference_Init
; /***输出占空比不同的PWM可以设定P0.0,0.1...改变PCA0CPH0.PCA0CPM1改变占空比 *****/
; void PCA_Init()
RSEG ?PR?PCA_Init?KEY_DISPLAY
PCA_Init:
; SOURCE LINE # 57
; {
; SOURCE LINE # 58
; PCA0CN = 0x40; /*允许PCA定时器/计数器*/
; SOURCE LINE # 59
MOV PCA0CN,#040H
; PCA0L = 0x00;
; SOURCE LINE # 60
CLR A
MOV PCA0L,A
; PCA0H = 0x00;//PCA0MD = 0x80;
; SOURCE LINE # 61
MOV PCA0H,A
; PCA0CPM0 = 0x43; /*8位PWM方式,当CCF0=1时,允许辅捉/比较标志的中断申请*/
; SOURCE LINE # 62
MOV PCA0CPM0,#043H
; PCA0CPL0 = 0x00; /*置初值*/
; SOURCE LINE # 63
MOV PCA0CPL0,A
; PCA0CPH0 = 0x80; // PCA0CPH0 = 0xC0 //PCA0MD = 0x01; /*PCA定时器/计数器溢出中断禁止*/
; SOURCE LINE # 64
MOV PCA0CPH0,#080H
; PCA0CPM1 = 0x43; /*8位PWM方式,当CCF1=1时,允许辅捉/比较标志的中断申请*/
; SOURCE LINE # 65
MOV PCA0CPM1,#043H
; PCA0CPL1 = 0x00; /*置初值*/
; SOURCE LINE # 66
MOV PCA0CPL1,A
; PCA0CPH1 = 0x80;
; SOURCE LINE # 67
MOV PCA0CPH1,#080H
;
;
;
; }
; SOURCE LINE # 71
RET
; END OF PCA_Init
;
;
;
; /***定时器0,1初始化 TMOD设置几位什么方式CKCON是时基是系统的几倍*****/
; void Timer_Init()
RSEG ?PR?Timer_Init?KEY_DISPLAY
Timer_Init:
; SOURCE LINE # 76
; {
; SOURCE LINE # 77
; //TR0=0; //关定时器0
; //TR1=0; //关定时器1
; TMOD= 0x10; //定时器0是16为计数器(T0脚)方式
; SOURCE LINE # 80
MOV TMOD,#010H
; CKCON=0x00; //定时器1的时基与系统1/12
; SOURCE LINE # 81
CLR A
MOV CKCON,A
; TH1=0x7D ; //初值 1s
; SOURCE LINE # 82
MOV TH1,#07DH
; TL1=0xFB ;
; SOURCE LINE # 83
MOV TL1,#0FBH
; }
; SOURCE LINE # 84
RET
; END OF Timer_Init
;
;
; /***********延时n ms******************/
; void delayms(uint n)
RSEG ?PR?_delayms?KEY_DISPLAY
_delayms:
USING 0
; SOURCE LINE # 88
;---- Variable 'n?740' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 89
; uint i,j,k;
; for(i=0;i<n;i++)
; SOURCE LINE # 91
;---- Variable 'i?741' assigned to Register 'R4/R5' ----
CLR A
MOV R5,A
MOV R4,A
?C0008:
CLR C
MOV A,R5
SUBB A,R7
MOV A,R4
SUBB A,R6
JNC ?C0017
; for(j=0;j<200;j++)
; SOURCE LINE # 92
;---- Variable 'j?742' assigned to Register 'R2/R3' ----
CLR A
MOV R3,A
MOV R2,A
?C0011:
; for(k=0;k<10;k++)
; SOURCE LINE # 93
;---- Variable 'k?743' assigned to Register 'DPTR' ----
MOV DPTR,#00H
?C0014:
; _nop_();
; SOURCE LINE # 94
NOP
INC DPTR
MOV A,DPL
XRL A,#0AH
ORL A,DPH
JNZ ?C0014
?C0013:
INC R3
CJNE R3,#00H,?C0091
INC R2
?C0091:
MOV A,R3
XRL A,#0C8H
ORL A,R2
JNZ ?C0011
?C0010:
INC R5
CJNE R5,#00H,?C0092
INC R4
?C0092:
SJMP ?C0008
;
; }
; SOURCE LINE # 96
?C0017:
RET
; END OF _delayms
;
;
; /***********ADC输入实现****************uchar i,uchar j*****/
; float AD_IN(void)
RSEG ?PR?AD_IN?KEY_DISPLAY
AD_IN:
USING 0
; SOURCE LINE # 100
; {
; SOURCE LINE # 101
; // float tmp;
; uint temp;
; // AMX0P = 0x10;
; delayms(10);
; SOURCE LINE # 105
MOV R7,#0AH
MOV R6,#00H
LCALL _delayms
; AD0BUSY=1;
; SOURCE LINE # 106
SETB AD0BUSY
?C0018:
; while(AD0INT == 0);
; SOURCE LINE # 107
JNB AD0INT,?C0018
?C0019:
; temp=ADC0H<<8;
; SOURCE LINE # 108
MOV R7,ADC0H
MOV A,R7
MOV R7,#00H
MOV R6,A
;---- Variable 'temp?844' assigned to Register 'R6/R7' ----
; temp+=ADC0L;
; SOURCE LINE # 109
MOV R5,ADC0L
MOV A,R7
ADD A,R5
MOV R7,A
CLR A
ADDC A,R6
MOV R6,A
; // tmp=(2.5*(temp/4095.0))*1000;
; //return(tmp);
; return(temp);
; SOURCE LINE # 112
XCH A,R5
MOV A,R7
XCH A,R5
MOV R4,A
CLR A
LCALL ?C?FCASTI
; }
; SOURCE LINE # 113
?C0020:
RET
; END OF AD_IN
;
;
; /***********DAC输出实现*********************/
; void DA_OUT(uint dat)
RSEG ?PR?_DA_OUT?KEY_DISPLAY
_DA_OUT:
USING 0
; SOURCE LINE # 117
;---- Variable 'dat?945' assigned to Register 'R4/R5' ----
XCH A,R5
MOV A,R7
XCH A,R5
XCH A,R4
MOV A,R6
XCH A,R4
; {
; SOURCE LINE # 118
; uint dah,dal;
; dah=dat>>8;
; SOURCE LINE # 120
MOV A,R4
MOV R7,A
;---- Variable 'dah?946' assigned to Register 'R6/R7' ----
; dal=dat&0x00FF;
; SOURCE LINE # 121
;---- Variable 'dal?947' assigned to Register 'R4/R5' ----
; DAC0L=(uchar)dal;
; SOURCE LINE # 122
MOV DAC0L,R5
; DAC0H=(uchar)dah;
; SOURCE LINE # 123
MOV DAC0H,R7
;
; }
; SOURCE LINE # 125
RET
; END OF _DA_OUT
;
;
; /***********CH452写入*********************/
; void CH452_Write(ushort cmd)
RSEG ?PR?_CH452_Write?KEY_DISPLAY
L?0093:
USING 0
MOV A,R7
L?0094:
MOV R6,A
CLR A
ADD A,#00H
MOV R7,A
MOV A,R6
ADDC A,#08H
MOV R6,A
MOV A,R7
ORL A,#010H
MOV R7,A
_CH452_Write:
USING 0
; SOURCE LINE # 129
;---- Variable 'cmd?1048' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 130
; uchar i;
; SOURCE LINE # 131
; DISABLE_KEY_INTERRUPT; //禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输
; SOURCE LINE # 132
ANL EIE2,#0DFH
; CH452_LOAD_CLR; //命令开始,LOAD=0
; SOURCE LINE # 133
CLR CH452_LOAD
; CH452_LOAD_D_OUT; // 设置LOAD为输出方向
; SOURCE LINE # 134
; CH452_DOUT_D_IN; // 设置DOUT为输入方向
; SOURCE LINE # 135
SETB CH452_DOUT
; CH452_DIN_D_OUT; // 设置DIN为输出方向
; SOURCE LINE # 136
; CH452_DCLK_D_OUT; // 设置DCLK为输出方向
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -