📄 u2.lst
字号:
C51 COMPILER V8.05a U2 03/11/2009 12:36:32 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE U2
OBJECT MODULE PLACED IN u2.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE u2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 sbit clk=P3^2;
3 sbit dat=P3^4;
4 unsigned char receive[4]={0,0,0,0},j=0; //receive[3]为接收成功标志,1为成功
5 void read_8bit(void)
6 {
7 1 unsigned char i=0;
8 1 receive[3]=0;
9 1 while(!clk);
10 1 for(i=0;i<8;i++)
11 1 {
12 2 receive[j]=receive[j]<<1;
13 2 if(dat) receive[j]=receive[j]|0x01;
14 2 if(i==7)
15 2 {
16 3 if(receive[0]==0x38) //receive[0]定义数据类型
17 3 {
18 4 j++;
19 4 if(j==3)
20 4 {
21 5 receive[3]=1;
22 5 receive[0]=0;
23 5 j=0;
24 5 }
25 4 }
26 3 else
27 3 receive[3]=1;
28 3 break;
29 3 }
30 2 else
31 2 {
32 3 while(clk);
33 3 while(!clk);
34 3
35 3 }
36 2 }
37 1 }
38 void delay_50us(unsigned int t)
39 {
40 1 unsigned char j;
41 1 for(;t>0;t--)
42 1 for(j=19;j>0;j--);
43 1 }
44 void send_8bit(unsigned char temp)
45 {
46 1 unsigned char i=0;
47 1 for(i=0;i<8;i++)
48 1 {
49 2 if((temp&0x80)==0x80) dat=1;
50 2 else dat=0;
51 2 delay_50us(1);
52 2 clk=1;
53 2 delay_50us(1);
54 2 if(i==7)
55 2 clk=1;
C51 COMPILER V8.05a U2 03/11/2009 12:36:32 PAGE 2
56 2 else
57 2 clk=0;
58 2 temp=temp<<1;
59 2 }
60 1 dat=1;
61 1 IE0=0;
62 1
63 1
64 1 }
65 void INT0_stop(void) interrupt IE0_VECTOR using 1
66 {
67 1 EA=0;
68 1 read_8bit();
69 1 EA=1;
70 1 while(!dat);
71 1
72 1
73 1 }
74 void send(unsigned char cmd,data1,data2)
75 {
76 1 EX0=0; // 关闭接收中断
77 1 clk=0; // 开启发送,引起接收方中断
78 1 send_8bit(cmd); // 开头第一个字节为0x38,则在其后发送两个数据字节
79 1 delay_50us(1); // 开头不是0x38,则当独立字节接收
80 1 clk=0;
81 1 send_8bit(data1);
82 1 delay_50us(1);
83 1 clk=0;
84 1 send_8bit(data2);
85 1 delay_50us(1);
86 1 EX0=1; // 开启接收中断
87 1 }
88 void send_one(unsigned char one)
89 {
90 1 EX0=0; // 关闭接收中断
91 1 clk=0; // 开启发送,引起接收方中断
92 1 send_8bit(one); // 开头第一个字节为0x38,则在其后发送两个数据字节
93 1 delay_50us(1); // 开头不是0x38,则当独立字节接收
94 1 EX0=1; // 开启接收中断
95 1 }
96 void main(void)
97 {
98 1
99 1 EA=1;
100 1 IT0=1;
101 1 EX0=1;
102 1 //send();
103 1 while(1)
104 1 {
105 2 if(receive[3]==1) P1=receive[0];
106 2 }
107 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 219 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.05a U2 03/11/2009 12:36:32 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -