📄 text1.lst
字号:
C51 COMPILER V8.02 TEXT1 10/28/2010 20:54:25 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:此版配套测试程序
5 使用芯片:AT89S52
6 晶振:11.0592MHZ
7 波特率:9600
8 编译环境:Keil
9 作者:zhangxinchunleo
10 网站:www.ourhc.cn
11 淘宝店:汇诚科技 http://shop36330473.taobao.com
12 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
13
14 *********************************************************************/
15 /********************************************************************
16 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
17 *********************************************************************/
18
19
20 #include<reg52.h>
21 #define uchar unsigned char//宏定义无符号字符型
22 #define uint unsigned int //宏定义无符号整型
23 uchar num;
24 uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
25 /*定义八位出为单片机P2口*/
26 sbit K1=P2^0;
27 sbit K2=P2^1;
28 sbit K3=P2^2;
29 sbit K4=P2^3;
30 /*定义八位入为单片机P1口*/
31 sbit IN0=P1^0;
32 sbit IN1=P1^1;
33 sbit IN2=P1^2;
34 sbit IN3=P1^3;
35
36
37 /********************************************************************
38 24C08 读写驱动程序
39 *********************************************************************/
40 sbit scl=P3^6; // 24c08 SCL
41 sbit sda=P3^7; // 24c08 SDA
42
43 void delay1(uchar x)
44 {
45 1 uint i;
46 1 for(i=0;i<x;i++);
47 1 ;
48 1 }
49 void flash(){ ; ; }
50 void x24c08_init() //24c08 初始化子程序
51 {
52 1 scl=1;
53 1 flash();
54 1 sda=1;
55 1 flash();
C51 COMPILER V8.02 TEXT1 10/28/2010 20:54:25 PAGE 2
56 1 }
57 void start() //启动(I方C)总线
58 {
59 1 sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
60 1 }
61 void stop() //停止(I方C)总线
62 {
63 1 sda=0; flash(); scl=1; flash(); sda=1; flash();
64 1 }
65 void writex(uchar j) //写一个字节
66 {
67 1 uchar i,temp;
68 1 temp=j;
69 1 for (i=0;i<8;i++)
70 1 {
71 2 temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
72 2 }
73 1 scl=0; flash(); sda=1; flash();
74 1 }
75 uchar readx() //读一个字节
76 {
77 1 uchar i,j,k=0;
78 1 scl=0; flash(); sda=1;
79 1 for (i=0;i<8;i++)
80 1 {
81 2 flash(); scl=1; flash();
82 2 if (sda==1) j=1;
83 2 else j=0;
84 2 k=(k<<1)|j;
85 2 scl=0;}
86 1 flash(); return(k);
87 1 }
88 void clock() //(I方C)线时钟
89 {
90 1 unsigned char i=0;
91 1 scl=1; flash();
92 1 while ((sda==1)&&(i<255))i++;
93 1 scl=0; flash();
94 1 }
95 /********************************************************************
96 从24c08 的地址address 中读取一个字节数据
97 *********************************************************************/
98 unsigned char x24c08_read(unsigned char address)
99 {
100 1 unsigned char i;
101 1 start(); writex(0xa0);
102 1 clock(); writex(address);
103 1 clock(); start();
104 1 writex(0xa1); clock();
105 1 i=readx(); stop();
106 1 delay1(10);
107 1 return(i);
108 1 }
109 /********************************************************************
110 向24c08 的address地址中写入一字节数据
111 *********************************************************************/
112 void x24c08_write(unsigned char address,unsigned char info)
113 {
114 1 start(); writex(0xa0);
115 1 clock(); writex(address);
116 1 clock(); writex(info);
117 1 clock(); stop();
C51 COMPILER V8.02 TEXT1 10/28/2010 20:54:25 PAGE 3
118 1 delay1(50);
119 1 }
120 /********************************************************************
121 延时函数
122 *********************************************************************/
123 void delay()
124 {
125 1 uchar i,j;
126 1 for(i=0;i<250;i++){
127 2 for(j=0;j<250;j++);
128 2 { ;}}
129 1 }
130
131 void chuan()
132 {
133 1 TMOD=0x20; //T1为定时器产生波特率//
134 1 SCON=0x50; /*串口定义方式2用定时器1产生波特率9600*/
135 1 PCON=0x00; /*不倍增波特率*/
136 1 TL1=0xfd;
137 1 TH1=0xfd;
138 1 EA=1;ES=1;
139 1 IP=0x00;
140 1 TR1=1; /*定时器工作*/
141 1 }
142
143 void anjian()
144 {
145 1 if(IN0==0){delay();while(!IN0);K1=!K1;F0=1;}
146 1 if(IN1==0){delay();while(!IN1);K2=!K2;F0=1;}
147 1 if(IN2==0){delay();while(!IN2);K3=!K3;F0=1;}
148 1 if(IN3==0){delay();while(!IN3);K4=!K4;F0=1;}
149 1 }
150 void kou()
151 {
152 1 switch(dat)
153 1 {
154 2 case 'A' :{delay();K1=0;F0=1;}break;
155 2 case 'B' :{delay();K2=0;F0=1;}break;
156 2 case 'C' :{delay();K3=0;F0=1;}break;
157 2 case 'D':{delay();K4=0;F0=1;}break;
158 2 case 'K' :{delay();P2=0xf0;F0=1;}break;
159 2 case 'a' :{delay();K1=1;F0=1;}break;
160 2 case 'b' :{delay();K2=1;F0=1;}break;
161 2 case 'c' :{delay();K3=1;F0=1;}break;
162 2 case 'd' :{delay();K4=1;F0=1;}break;
163 2 case 'k' :{delay();P2=0xff;F0=1;}break;
164 2 default:break;
165 2 }
166 1 }
167 void main()
168 { chuan();
169 1 x24c08_init();
170 1 num=x24c08_read(0x01);
171 1 P2=num;
172 1 while(1)
173 1 {
174 2 anjian();
175 2 if(RI==1)
176 2 {
177 3 RI=0;
178 3 dat=SBUF;
179 3 kou();
C51 COMPILER V8.02 TEXT1 10/28/2010 20:54:25 PAGE 4
180 3 }
181 2 if(F0==1)
182 2 {F0=0;
183 3 num=P2;
184 3 x24c08_write(0x01,num);
185 3 }
186 2 }
187 1 }
188
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 487 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
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 + -