📄 main.lst
字号:
C51 COMPILER V7.07 MAIN 04/14/2005 16:26:10 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <string.h>
3 #include <main.h>
4 #include <intrins.h>
5 //#define TEST
6
7
8 //定时器0用来辅助电脑串口发送数据
9 void timer0_isr (void) interrupt 1
10 {
11 1 if(receive_total!=0xff)
12 1 read_flag=1;
13 1 else
14 1 receive_total=0xff;
15 1 }
16
17
18 //向串口发送一个字符
19 void send_char_com(void)
20 {
21 1 unsigned char i;
22 1 EA=0;
23 1 //------------------------------------------------------
24 1 //----------------SET I2C_ADDRESS-----------------------
25 1 //------0XFF,0XFF,ADDRESS--------------------------------
26 1 //--IF FAIL,DISPLAY;IF SUCCESS,NO DISPLAY
27 1 if((receive_total==2)&serial_data[0]==0xff&serial_data[1]==0xff)
28 1 {
29 2 i2c_device_address=serial_data[2];
30 2 i2c_device_sub_data_r(i2c_device_address+1,00);
31 2 serial_data[3]=i2c_data;
32 2 i2c_device_sub_data(i2c_device_address,00,serial_data[3]);
33 2 if(IIC_ERROR)
34 2 {
35 3 SBUF=SBUF;
36 3 while(TI==0);
37 3 TI=0;
38 3 }
39 2 receive_total=0xff;
40 2 }
41 1 //--------------------------------------------------------
42 1 else
43 1 {
44 2 //-------------------------------------------------------
45 2 //------------IF SEND 10 11 12 13,--->I2CADDRESS1011,I2CADDRESS1213
46 2 //------------IF FAIL,DISPLAY ADDRESS,ELSE NO DISPLAY-------------------------
47 2 if(~READ_WRITE_SET)
48 2 {
49 3 for(i=0;i<receive_total;)
50 3 {
51 4 i2c_device_sub_data(i2c_device_address,serial_data[i],serial_data[i+1]);
52 4 if(IIC_ERROR)
53 4 {
54 5 SBUF=serial_data[i];
55 5 while(TI==0);
C51 COMPILER V7.07 MAIN 04/14/2005 16:26:10 PAGE 2
56 5 TI=0;
57 5 }
58 4 i=i+2;
59 4 }
60 3 SBUF=0x33;//发完标志
61 3 while(TI==0);
62 3 TI=0;
63 3 }
64 2 //-------------READ FROM I2C_DEVICE--------------------------------
65 2 //-------------DISPLAY ADDRESS AND DATA---------------------------
66 2 if(READ_WRITE_SET)
67 2 {
68 3 for(i=0;i<=receive_total;i++)
69 3 {
70 4 SBUF=serial_data[i];
71 4 while(TI==0);
72 4 TI=0;
73 4 i2c_device_sub_data_r(i2c_device_address+1,serial_data[i]);
74 4 SBUF=i2c_data;
75 4 while(TI==0);
76 4 TI=0;
77 4 }
78 3 }
79 2 receive_total=0xff;
80 2 }
81 1 EA=1;
82 1 }
83
84
85 //串口接收中断函数
86 void serial () interrupt 4
87 {
88 1 if(RI)
89 1 {
90 2 RI = 0;TH0=0;
91 2 receive_total++;
92 2 serial_data[receive_total]=SBUF;
93 2 /*//----------SET ADDRESS------------------------------
94 2 //---------------------------------------------------
95 2 if(receive_total==2)
96 2 {//0xff,0xff+address
97 2 if(serial_data[0]==0xff&serial_data[1]==0xff)
98 2 {i2c_device_address=serial_data[2];}
99 2 }*/
100 2 //-----------------------------------------------------
101 2 //-----------------------------------------------------
102 2 //----------GOTOISP_prom------------------------------
103 2 if(receive_total==2)
104 2 {
105 3 if(serial_data[0]==0xa0&serial_data[1]==0x00&serial_data[2]==0x0a)
106 3 GOTOISP_prom();
107 3 }
108 2 //-----------------------------------------------------
109 2 //----------SET I2C WRITE------------------------------
110 2 if(receive_total==2)
111 2 {
112 3 if(serial_data[0]==0xa0&serial_data[1]==0x00&serial_data[2]==0x01)
113 3 {READ_WRITE_SET=0;receive_total=0XFF;}
114 3 }
115 2 //-----------------------------------------------------
116 2 //----------SET I2C READ------------------------------
117 2 if(receive_total==2)
C51 COMPILER V7.07 MAIN 04/14/2005 16:26:10 PAGE 3
118 2 {
119 3 if(serial_data[0]==0xa0&serial_data[1]==0x00&serial_data[2]==0x02)
120 3 {READ_WRITE_SET=1;receive_total=0XFF;}
121 3 }
122 2
123 2 //------------------------------------------------------
124 2 #ifdef TEST
if(serial_data[receive_total]!=receive_total)
_nop_();
#endif
128 2
129 2 }
130 1 }
131
132
133 main()
134 {
135 1 initi_system(); //初始化串口
136 1 while(1)
137 1 {
138 2 if(read_flag) //如果取数标志已置位,就将读到的数从串口发出
139 2 {
140 3 read_flag=0; //取数标志清0
141 3 send_char_com();
142 3
143 3
144 3 }
145 2 }
146 1
147 1 }
148
149
150
151
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 570 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 256 ----
PDATA SIZE = ---- ----
DATA SIZE = 3 1
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -