📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 12/10/2006 12:14:10 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #define ALLOCATE_EXTERN
2
3 #include "DP8051.h"
4 #include "intrins.h"
5 #include "FS7822.h"
6
7 #define SLAVE_ADDRESS 0xAE
8 // I2C_CLK reg
9 #define bmI2CCK_DIV 0x54
10 #define bmCLK_PRE 0x40
11
12 #define I2C_EN 0x80
13 #define I2C_MODE 0x40
14 #define MST_MODE 0x20
15 #define START 0x02
16 #define STOP 0x01
17
18 void I2c_Init(BOOL isHigh);
19 void InitCPU();
20 BYTE I2c_SendStr(BYTE sla,BYTE *s,BYTE doffset,WORD no);
21 BYTE I2c_RcvStr(BYTE sla,BYTE *s,BYTE doffset,WORD Len);
22 void I2C_Write(unsigned char *input,unsigned short wordadd,unsigned char Len);
23 void I2C_Read(unsigned char *output,unsigned short wordadd,unsigned char Len);
24 void I2C_WriteRead(unsigned char *input,unsigned char *output,unsigned short wordadd,unsigned char Len);
25
26 void InitCPU()
27 {
28 1 SYS_CFG=bmCPUCLK_SEL|bmPM_AVBLE|bmSYS_SWRST; //select system clock,firmware dispose USB request, reset t
-he device
29 1
30 1 SYSIO_CFG=bmSPI_EN|bmI2C_EN;
31 1
32 1 SW_RST=bmSPI_RST|bmI2C_RST;
33 1
34 1 BPPUCTL=bmSPIPUCTL;
35 1
36 1 MEMCON=bmMEMCON|bmASYN;
37 1 WDTRST = 0x2D;
38 1 }
39
40 void I2c_Init(BOOL isHigh)
41 {
42 1 SW_RST|=bmI2C_RST;
43 1
44 1 if(isHigh)
45 1 I2C_CLK = bmI2CCK_DIV; //400k
46 1 else
47 1 I2C_CLK = bmCLK_PRE|bmI2CCK_DIV; //100k
48 1
49 1 I2C_CTL |= 0x40; //Slave
50 1 I2C_MABT = 0x01;
51 1 }
52
53
54 idata BYTE writedata[30] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,\
C51 COMPILER V8.02 MAIN 12/10/2006 12:14:10 PAGE 2
55 0xBB,0xBA,0xCC,0xDD,0xEE,0xFF,0xAB,0xBC,0xCD,0xDE};
56 idata BYTE readdata[30];
57
58 #define Address_match 0x80
59 #define Slave_mode 0x40
60 BYTE datanum;
61 void WriteData(BYTE * writedata);
62 void ReadData(BYTE * readdata);
63
64 void WriteData(BYTE * writedata)
65 {
66 1 I2C_STUS = 0x03;
67 1 I2C_DBUF = *writedata;
68 1 }
69
70 void ReadData(BYTE * readdata)
71 {
72 1 *readdata = I2C_DBUF;
73 1 I2C_STUS = 0x01;
74 1 }
75
76 void I2C_INT_ISR(void) interrupt 7
77 {
78 1 if(CHIPINT & I2CINTE)
79 1 {
80 2 CHIPINT &= ~I2CINTE;
81 2 if(I2C_STUS & Slave_mode)
82 2 {
83 3 WriteData(writedata+datanum);
84 3 }
85 2 else
86 2 {
87 3 ReadData(readdata+datanum);
88 3 }
89 2 datanum++;
90 2 }
91 1 }
92 main()
93 {
94 1 WDTRST = 0x2D;
95 1 InitCPU();
96 1 I2c_Init(0);
97 1
98 1 EA = 1;
99 1 ES = 1;
100 1 I2C_SADDR = 0xEA;
101 1 CHIPINTE = CHIPINTE | I2CINTE;
102 1 while(1)
103 1 {
104 2 if(datanum == 20)
105 2 datanum = 0;
106 2 }
107 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 210 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = 60 ----
C51 COMPILER V8.02 MAIN 12/10/2006 12:14:10 PAGE 3
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -