📄 4.2.4.lst
字号:
C51 COMPILER V6.20c 4_2_4 09/02/2001 14:43:32 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE 4_2_4
OBJECT MODULE PLACED IN 4.2.4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4.2.4.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define High 1 //定义高电平
4 #define Low 0 //定义高电平
5 #define READ_D 0x0C //读指令
6 #define WRITE_D 0x0A //写指令
7 #define ERASE_D 0x0E //擦除指令
8 #define EN_D 0x09 //擦/写允许指令
9 #define EN_RD 0x80
10
11 sbit CS=0x90; //CS为P1.0
12 sbit SK=0x91; //SK为P1.1
13 sbit DI=0x92; //DI为P1.2
14 sbit DO=0x93; //DO为P1.3
15 /*********************************延时函数*********************************/
16 void delay(uchar n)
17 {
18 1 uchar i;
19 1 for(i=0;i>n;i++);
20 1 }
21
22 /*********************************时钟函数*********************************/
23 void i_clock(void)
24 {
25 1 SK=Low;
26 1 delay(1);
27 1 SK=High;
28 1 delay(1);
29 1 }
30
31 /********************************输入函数**********************************/
32 //输入一个字节的数据到AT93C66中
33 void send(uchar i_data)
34 {
35 1 uchar i;
36 1 for(i=0;i<8;i++)
37 1 {
38 2 DI=(bit)(i_data&0x80);
39 2 i_data<<=1;
40 2 i_clock();
41 2 }
42 1 }
43
44 /********************************接收函数**********************************/
45 //从AT93C66接收1个字节的数据
46 uchar receive(void)
47 {
48 1 uchar i_data=0;
49 1 uchar j;
50 1 i_clock();
51 1 for(j=0;j<8;j++)
52 1 {
53 2 i_data*=2;
54 2 if(DO)i_data++;
55 2 i_clock();
C51 COMPILER V6.20c 4_2_4 09/02/2001 14:43:32 PAGE 2
56 2 delay(2);
57 2 }
58 1 return(i_data);
59 1 }
60 /**********************************读操作函数********************************/
61 //发送读指令和地址,从AT93C66指定的地址中读取数据
62 uchar read(uchar addr)
63 {
64 1 uchar data_r;
65 1 CS=1; //片选
66 1 send(READ_D); //送读指令
67 1 send(addr); //送地址
68 1 data_r=receive(); //接收数据
69 1 CS=0;
70 1 return(data_r);
71 1 }
72
73 /****************************擦写允许操作函数******************************/
74 void enable(void)
75 {
76 1 CS=1;
77 1 send(EN_D); //送使能指令
78 1 send(EN_RD);
79 1 CS=0;
80 1 }
81
82 /*****************************擦除操作函数********************************/
83 //擦除AT93C66中指定地址的数据
84 void erase(uchar addr)
85 {
86 1 DO=1;
87 1 CS=1;
88 1 send(ERASE_D); //送擦除指令
89 1 send(addr);
90 1 CS=0;
91 1 delay(4);
92 1 CS=1;
93 1 while(!DO); //等待擦除完毕
94 1 CS=0;
95 1 }
96 /*********************************写操作函数*********************************/
97 //将一个字节数据写入AT93C66指定的地址中
98 void wirite(uchar addr)
99 {
100 1 enable(); //擦写允许
101 1 erase(addr); //写数据前擦除同样地址的数据
102 1 CS=1;
103 1 send(WRITE_D); //送写指令
104 1 send(addr); //送地址
105 1 CS=0;
106 1 delay(4);
107 1 CS=1;
108 1 delay(4);
109 1 while(!DO); //等待写完
110 1 CS=0;
111 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 172 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V6.20c 4_2_4 09/02/2001 14:43:32 PAGE 3
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -