?? t.src
字號:
; .\t.SRC generated from: t.c
; COMPILER INVOKED BY:
; f:\Keil\C51\BIN\C51.EXE t.c BROWSE DEBUG OBJECTEXTEND SRC(.\t.SRC)
$NOMOD51
NAME T
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
AC BIT 0D0H.6
T0 BIT 0B0H.4
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
P0_0 BIT 080H.0
P1_0 BIT 090H.0
P0_1 BIT 080H.1
FL BIT 0D0H.1
P2_0 BIT 0A0H.0
P1_1 BIT 090H.1
P0_2 BIT 080H.2
P3_0 BIT 0B0H.0
P2_1 BIT 0A0H.1
P1_2 BIT 090H.2
P0_3 BIT 080H.3
P3_1 BIT 0B0H.1
P2_2 BIT 0A0H.2
P1_3 BIT 090H.3
P0_4 BIT 080H.4
P3_2 BIT 0B0H.2
P2_3 BIT 0A0H.3
P1_4 BIT 090H.4
P0_5 BIT 080H.5
RD BIT 0B0H.7
P3_3 BIT 0B0H.3
P2_4 BIT 0A0H.4
P1_5 BIT 090H.5
P0_6 BIT 080H.6
P3_4 BIT 0B0H.4
P2_5 BIT 0A0H.5
P1_6 BIT 090H.6
P0_7 BIT 080H.7
P3_5 BIT 0B0H.5
ES BIT 0A8H.4
P2_6 BIT 0A0H.6
P1_7 BIT 090H.7
P3_6 BIT 0B0H.6
P2_7 BIT 0A0H.7
IP DATA 0B8H
P3_7 BIT 0B0H.7
RI BIT 098H.0
CY BIT 0D0H.7
INT0 BIT 0B0H.2
INT1 BIT 0B0H.3
TI BIT 098H.1
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
WR BIT 0B0H.6
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
EX1 BIT 0A8H.2
TB8 BIT 098H.3
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
RS0 BIT 0D0H.3
PT1 BIT 0B8H.3
RS1 BIT 0D0H.4
PT2 BIT 0B8H.5
TR0 BIT 088H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
REN BIT 098H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?_delay?T SEGMENT CODE
?PR?main?T SEGMENT CODE
?PR?interrupt_func1?T SEGMENT CODE
?DT?interrupt_func1?T SEGMENT DATA OVERLAYABLE
?PR?delay?T SEGMENT CODE
?PR?_delayms?T SEGMENT CODE
?PR?I2C_Start?T SEGMENT CODE
?PR?I2C_Stop?T SEGMENT CODE
?PR?I2C_ReceiveAck?T SEGMENT CODE
?BI?I2C_ReceiveAck?T SEGMENT BIT OVERLAYABLE
?PR?I2C_SendAck?T SEGMENT CODE
?PR?I2C_SendNoAck?T SEGMENT CODE
?PR?_I2C_SendByte?T SEGMENT CODE
?PR?I2C_ReceiveByte?T SEGMENT CODE
?PR?_I2C_SendToSubAddress?T SEGMENT CODE
?DT?_I2C_SendToSubAddress?T SEGMENT DATA OVERLAYABLE
?PR?_I2C_ReceiveFromSubAddress?T SEGMENT CODE
?DT?_I2C_ReceiveFromSubAddress?T SEGMENT DATA OVERLAYABLE
?C_INITSEG SEGMENT CODE
?DT?T SEGMENT DATA
EXTRN CODE (?C_STARTUP)
EXTRN CODE (?C?CLDOPTR)
EXTRN CODE (?C?CSTOPTR)
PUBLIC pw
PUBLIC pr
PUBLIC wdat
PUBLIC func
PUBLIC rdat
PUBLIC ?_I2C_ReceiveFromSubAddress?BYTE
PUBLIC _I2C_ReceiveFromSubAddress
PUBLIC ?_I2C_SendToSubAddress?BYTE
PUBLIC _I2C_SendToSubAddress
PUBLIC I2C_ReceiveByte
PUBLIC _I2C_SendByte
PUBLIC I2C_SendNoAck
PUBLIC I2C_SendAck
PUBLIC I2C_ReceiveAck
PUBLIC I2C_Stop
PUBLIC I2C_Start
PUBLIC _delayms
PUBLIC delay
PUBLIC interrupt_func1
PUBLIC main
PUBLIC _delay
RSEG ?DT?interrupt_func1?T
?interrupt_func1?BYTE:
ORG 1
i?243: DS 2
i?244: DS 2
ORG 0
k3?247: DS 1
RSEG ?DT?_I2C_SendToSubAddress?T
?_I2C_SendToSubAddress?BYTE:
SlaveAddress?1255: DS 1
SubAddress?1256: DS 2
pSData?1257: DS 3
N?1258: DS 1
RSEG ?DT?_I2C_ReceiveFromSubAddress?T
?_I2C_ReceiveFromSubAddress?BYTE:
SlaveAddress?1360: DS 1
SubAddress?1361: DS 2
pRData?1362: DS 3
N?1363: DS 1
RSEG ?BI?I2C_ReceiveAck?T
?I2C_ReceiveAck?BIT:
ck?750: DBIT 1
RSEG ?DT?T
rdat: DS 10
func: DS 1
wdat: DS 10
pr: DS 1
pw: DS 1
RSEG ?C_INITSEG
DB 00AH
DB wdat
DB 0F0H
DB 00FH
DB 0A0H
DB 00AH
DB 0AAH
DB 099H
DB 03CH
DB 0C3H
DB 081H
DB 018H
DB 00AH
DB rdat
DB 000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H
; #include <at89x51.h>
; #include <intrins.h>
;
; #define uchar unsigned char
; #define uint unsigned int
; #define byte unsigned char
; #if 0
; bit I2C_Start(void);
; void I2C_Stop(void);
; void I2C_Ack(void);
; void I2C_Nack(void);
; bit I2C_Send_Byte( uchar);
; uchar I2C_Receive_Byte(void);
; void AT24C64_R(void *mcu_address,uint AT24C64_address,uint count);
; void AT24C64_W(void *mcu_address,uint AT24C64_address,uint count);
; #else
; void I2C_ReceiveFromSubAddress(byte SlaveAddress,uint SubAddress,byte *pRData,uchar N);
; void I2C_SendToSubAddress(byte SlaveAddress,uint SubAddress,byte *pSData,uchar N);
;
; #endif
;
; //RXD TXD
; #define KEY_LINE1 P3_0
; #define KEY_LINE2 P3_1
; #define KEY_LINE3 P3_7
;
; //T0 T1
; #define SCL P3_4
; #define SDA P3_5
; void delay(unsigned int n)
RSEG ?PR?_delay?T
_delay:
USING 0
; SOURCE LINE # 30
;---- Variable 'n?040' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 31
; unsigned int i,j;
; for(j=0;j<100;j++)
; SOURCE LINE # 33
;---- Variable 'j?042' assigned to Register 'R4/R5' ----
CLR A
MOV R5,A
MOV R4,A
?C0001:
; for(i=0;i<n;i++);
; SOURCE LINE # 34
;---- Variable 'i?041' assigned to Register 'R2/R3' ----
CLR A
MOV R3,A
MOV R2,A
?C0004:
CLR C
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JNC ?C0003
INC R3
CJNE R3,#00H,?C0072
INC R2
?C0072:
SJMP ?C0004
?C0003:
INC R5
CJNE R5,#00H,?C0073
INC R4
?C0073:
MOV A,R5
XRL A,#064H
ORL A,R4
JNZ ?C0001
; }
; SOURCE LINE # 35
?C0007:
RET
; END OF _delay
; unsigned char wdat[10]={0xF0,0x0F,0xA0,0x0A,0xAA,0x99,0x3C,0xC3,0x81,0x18};
; unsigned char rdat[10]={0};
; void main()
RSEG ?PR?main?T
main:
; SOURCE LINE # 38
; {
; SOURCE LINE # 39
; EX0=0;//enable int 1
; SOURCE LINE # 40
CLR EX0
; EX1=1;//
; SOURCE LINE # 41
SETB EX1
; ET0 = 0;//disable 2 timer
; SOURCE LINE # 42
CLR ET0
; ET1 = 0;//
; SOURCE LINE # 43
CLR ET1
; IT0=0;//
; SOURCE LINE # 44
CLR IT0
; IT1=1;//edge trigger
; SOURCE LINE # 45
SETB IT1
;
; EA=1;
; SOURCE LINE # 47
SETB EA
; P1=~0x00;
; SOURCE LINE # 48
MOV P1,#0FFH
;
; for(;;);
; SOURCE LINE # 50
?C0008:
SJMP ?C0008
; END OF main
CSEG AT 00013H
LJMP interrupt_func1
;
; }
; unsigned char func,pw,pr;
; void interrupt_func1() interrupt 2
RSEG ?PR?interrupt_func1?T
USING 0
interrupt_func1:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 54
; {
; unsigned char k1,k2,k3;
; delay(1);
; SOURCE LINE # 57
MOV R7,#01H
MOV R6,#00H
LCALL _delay
; k1=KEY_LINE1;
; SOURCE LINE # 58
MOV C,P3_0
CLR A
RLC A
MOV R7,A
;---- Variable 'k1?245' assigned to Register 'R7' ----
; k2=KEY_LINE2;
; SOURCE LINE # 59
MOV C,P3_1
CLR A
RLC A
MOV R6,A
;---- Variable 'k2?246' assigned to Register 'R6' ----
; k3=KEY_LINE3;
; SOURCE LINE # 60
MOV C,P3_7
CLR A
RLC A
MOV k3?247,A
;
;
; if(k1==0)
; SOURCE LINE # 63
MOV A,R7
JNZ ?C0011
; {
; SOURCE LINE # 64
; func=(func+1)%4;
; SOURCE LINE # 65
MOV A,func
INC A
ANL A,#03H
MOV func,A
;
; if(func==0) pw=0;
; SOURCE LINE # 67
JNZ ?C0012
MOV pw,A
SJMP ?C0013
?C0012:
; else if(func==1) pr=0;
; SOURCE LINE # 68
MOV A,func
CJNE A,#01H,?C0013
MOV pr,#00H
?C0013:
;
; P1=~func;
; SOURCE LINE # 70
MOV A,func
CPL A
MOV P1,A
; }
; SOURCE LINE # 71
?C0011:
;
;
; if(func==0)//pw display
; SOURCE LINE # 74
MOV A,func
JNZ ?C0015
; {
; SOURCE LINE # 75
; if(k2==0) {unsigned int i;for(i=0;i<10;i++)rdat[i]=0; P1=~0xA0;}//clear rdat to 0
; SOURCE LINE # 76
MOV A,R6
JNZ ?C0016
MOV i?243,A
MOV i?243+01H,A
?C0017:
MOV A,#LOW (rdat)
ADD A,i?243+01H
MOV R0,A
MOV @R0,#00H
INC i?243+01H
MOV A,i?243+01H
JNZ ?C0074
INC i?243
?C0074:
XRL A,#0AH
ORL A,i?243
JNZ ?C0017
?C0018:
MOV P1,#05FH
LJMP ?C0040
?C0016:
; else if(k3==0) {unsigned int i;for(i=0;i<10;i++)wdat[i]=0xAA; P1=~0xAA;}//set wdat to 0xAA
; SOURCE LINE # 77
MOV A,k3?247
JZ $ + 5H
LJMP ?C0040
MOV i?244,A
MOV i?244+01H,A
?C0022:
MOV A,#LOW (wdat)
ADD A,i?244+01H
MOV R0,A
MOV @R0,#0AAH
INC i?244+01H
MOV A,i?244+01H
JNZ ?C0075
INC i?244
?C0075:
XRL A,#0AH
ORL A,i?244
JNZ ?C0022
?C0023:
MOV P1,#055H
; }
; SOURCE LINE # 78
LJMP ?C0040
?C0015:
; else if(func==1)//pr display
; SOURCE LINE # 79
MOV A,func
XRL A,#01H
JNZ ?C0026
; {
; SOURCE LINE # 80
; if(k2==0) {pw=(pw+9)%10;P1=~wdat[pw];}//pw--
; SOURCE LINE # 81
MOV A,R6
JNZ ?C0027
MOV A,pw
ADD A,#09H
SJMP ?C0077
?C0027:
; else if(k3==0) {pw=(pw+1)%10;P1=~wdat[pw];}//pw++
; SOURCE LINE # 82
MOV A,k3?247
JNZ ?C0040
MOV A,pw
INC A
?C0077:
MOV B,#0AH
DIV AB
MOV pw,B
MOV A,#LOW (wdat)
ADD A,pw
; }
; SOURCE LINE # 83
SJMP ?C0079
?C0026:
; else if(func==2)//pr display
; SOURCE LINE # 84
MOV A,func
XRL A,#02H
JNZ ?C0031
; {
; SOURCE LINE # 85
; if(k2==0) {pr=(pr+9)%10;P1=~rdat[pr];}//pr--
; SOURCE LINE # 86
MOV A,R6
JNZ ?C0032
MOV A,pr
ADD A,#09H
MOV B,#0AH
DIV AB
MOV pr,B
MOV A,#LOW (rdat)
ADD A,pr
?C0078:
SJMP ?C0079
?C0032:
; else if(k3==0) {pr=(pr+1)%10;P1=~rdat[pr];}//pr++
; SOURCE LINE # 87
MOV A,k3?247
JNZ ?C0040
MOV A,pr
INC A
MOV B,#0AH
DIV AB
MOV pr,B
MOV A,#LOW (rdat)
ADD A,pr
?C0079:
MOV R0,A
MOV A,@R0
CPL A
MOV P1,A
; }
; SOURCE LINE # 88
SJMP ?C0040
?C0031:
; #if 0
; else if(func==3)//write and read
; {
; if(k2==0) {AT24C64_W(wdat,0x100,10); P1=~0xF0; }// write
; else if(k3==0) {AT24C64_R(rdat,0x100,10); P1=~0xF1;}// read
; }
; #else
; else if(func==3)//write and read
; SOURCE LINE # 96
MOV A,func
XRL A,#03H
JNZ ?C0040
; {
; SOURCE LINE # 97
; if(k2==0) {I2C_SendToSubAddress(0xa0,0x100,wdat,10); P1=~0xF3; }// write
; SOURCE LINE # 98
MOV A,R6
JNZ ?C0037
MOV R3,A
MOV R2,#HIGH (wdat)
MOV R1,#LOW (wdat)
MOV ?_I2C_SendToSubAddress?BYTE+06H,#0AH
MOV R5,A
MOV R4,#01H
MOV R7,#0A0H
LCALL _I2C_SendToSubAddress
MOV P1,#0CH
SJMP ?C0040
?C0037:
; else if(k3==0) {I2C_ReceiveFromSubAddress(0xa0,0x100,rdat,10); P1=~0xF1;}// read
; SOURCE LINE # 99
MOV A,k3?247
JNZ ?C0040
MOV R3,A
MOV R2,#HIGH (rdat)
MOV R1,#LOW (rdat)
MOV ?_I2C_ReceiveFromSubAddress?BYTE+06H,#0AH
MOV R5,A
MOV R4,#01H
MOV R7,#0A0H
LCALL _I2C_ReceiveFromSubAddress
MOV P1,#0EH
; }
; SOURCE LINE # 100
; #endif
;
; }
; SOURCE LINE # 103
?C0040:
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF interrupt_func1
;
; #if 0
; #define I2C_SCK SCL
; #define I2C_SDA SDA
;
;
; /*24C64子程序 */
; void Delay_10_uS(void)
; {
; //uchar i=10;
; //while(i--);
; }
; void Delay_N_mS( uint n_milisecond) /* n mS delay */
; {
; uint i;
; while(n_milisecond--)
; {
; i=10;//37;
; while(i--);
; }
; }
; bit I2C_Start(void)
; {
; Delay_10_uS();
; I2C_SDA =1;
; Delay_10_uS();
; I2C_SCK =1;
; Delay_10_uS();
; if ( I2C_SDA == 0) return 0;
; if ( I2C_SCK == 0) return 0;
; I2C_SDA = 0;
; Delay_10_uS();
; I2C_SCK = 0;
; Delay_10_uS();
; return 1;
; }
; void I2C_Stop(void)
; {
; Delay_10_uS();
; I2C_SDA = 0;
; Delay_10_uS();
; I2C_SCK = 1;
; Delay_10_uS();
; I2C_SDA = 1;
; Delay_10_uS();
; }
; void I2C_Ack(void)
; {
; Delay_10_uS();
; I2C_SDA=0;
; Delay_10_uS();
; I2C_SCK=1;
; Delay_10_uS();
; I2C_SCK=0;
; Delay_10_uS();
; }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -