📄 cs21-1.lst
字号:
C51 COMPILER V7.06 CS21_1 02/19/2007 16:42:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CS21_1
OBJECT MODULE PLACED IN CS21-1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CS21-1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG51.H>
2 #include <intrins.H>
3 #define uchar unsigned char
4 #define uint unsigned int
5 uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
6 uchar ACT[4]={0xfe,0xfd,0xfb,0xf7};
7 sbit SDA=P3^7;
8 sbit SCL=P3^6;
9 bdata char com_data;
10 sbit mos_bit=com_data^7;
11 sbit low_bit=com_data^0;
12 uchar cnt,x;
13 void delay_iic(int n);
14 uchar rd_24c01(char a);
15 void wr_24c01(char a,char b);
16 /***************************************/
17 void init(void)
18 {
19 1 TMOD=0x01;
20 1 TH0=-(1000/256);
21 1 TL0=-(1000%256);
22 1 ET0=1;
23 1 TR0=1;
24 1 EA=1;
25 1 }
26 /********************************/
27 uchar scan_key(void)
28 {
29 1 uchar temp;
30 1 temp=P3;
31 1 return temp;
32 1 }
33 /********************************/
34 void delay(uint k)
35 {
36 1 uint data i,j;
37 1 for(i=0;i<k;i++)
38 1 {for(j=0;j<121;j++)
39 2 {;}}
40 1 }
41 /******************************/
42 void main(void)
43 {uchar key_val;
44 1 init();
45 1 while(1)
46 1 {
47 2 key_val=scan_key();
48 2 switch(key_val)
49 2 {
50 3 case 0xfb:if(x<255)x++;delay(300);break;
51 3 case 0xf7:if(x>0)x--;delay(300);break;
52 3 case 0xef:EA=0;wr_24c01(10,x);delay_iic(250);EA=1;break;
53 3 case 0xdf:EA=0;x=rd_24c01(10);delay_iic(250);EA=1;break;
54 3 default:break;
55 3 }
C51 COMPILER V7.06 CS21_1 02/19/2007 16:42:57 PAGE 2
56 2 }
57 1 }
58 /************************************/
59 void time0(void) interrupt 1
60 {
61 1 uchar dis_val;
62 1 TH0=-(1000/256);
63 1 TL0=-(1000%256);
64 1 dis_val=x;
65 1 if(++cnt>2)cnt=0;
66 1 switch (cnt)
67 1 {
68 2 case 0:P0=SEG7[dis_val%10];P2=ACT[cnt];break;
69 2 case 1:P0=SEG7[(dis_val%100)/10];P2=ACT[cnt];break;
70 2 case 2:P0=SEG7[dis_val/100];P2=ACT[cnt];break;
71 2 default:break;
72 2 }
73 1 }
74 /**************************************/
75 void start()
76 {
77 1 SDA=1;_nop_();_nop_();_nop_();_nop_();
78 1 SCL=1;_nop_();_nop_();_nop_();_nop_();
79 1 SDA=0;_nop_();_nop_();_nop_();_nop_();
80 1 SCL=0;_nop_();_nop_();_nop_();_nop_();
81 1 }
82 //*****************************************
83 void stop()
84 {
85 1 SDA=0;_nop_();_nop_();_nop_();_nop_();
86 1 SCL=1;_nop_();_nop_();_nop_();_nop_();
87 1 SDA=1;_nop_();_nop_();_nop_();_nop_();
88 1 }
89 //***********************
90 void ack()
91 {
92 1 SCL=1;_nop_();_nop_();_nop_();_nop_();
93 1 SCL=0;_nop_();_nop_();_nop_();_nop_();
94 1 }
95 //***********************
96 void shift8(char a)
97 {
98 1 data uchar i;
99 1 com_data=a;
100 1 for(i=0;i<8;i++)
101 1 {
102 2 SDA=mos_bit;
103 2 SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
104 2 SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
105 2 com_data=com_data*2;
106 2 }
107 1 }
108 //******************
109 uchar rd_24c01(char a)
110 {
111 1 data uchar i,command;
112 1 SDA=1;_nop_();_nop_();_nop_();_nop_();
113 1 SCL=0;_nop_();_nop_();_nop_();_nop_();
114 1 start();
115 1 command=160;
116 1 shift8(command);
117 1 ack();
C51 COMPILER V7.06 CS21_1 02/19/2007 16:42:57 PAGE 3
118 1 shift8(a);
119 1 ack();
120 1 start();
121 1 command=161;
122 1 shift8(command);
123 1 ack();
124 1 SDA=1;_nop_();_nop_();_nop_();_nop_();
125 1 for(i=0;i<8;i++)
126 1 {
127 2 com_data=com_data*2;
128 2 SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
129 2 low_bit=SDA;
130 2 SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
131 2 }
132 1 stop();
133 1 return(com_data);
134 1 }
135 //*****************
136 void wr_24c01(char a,char b)
137 {
138 1 data uchar command;
139 1 _nop_();_nop_();_nop_();_nop_();_nop_();
140 1 SDA=1;_nop_();_nop_();_nop_();_nop_();
141 1 SCL=0;_nop_();_nop_();_nop_();_nop_();
142 1 start();
143 1 command=160;
144 1 shift8(command);
145 1 ack();
146 1 shift8(a);
147 1 ack();
148 1 shift8(b);
149 1 ack();
150 1 stop();
151 1 _nop_();_nop_();_nop_();_nop_();_nop_();
152 1 }
153 //***************
154 void delay_iic(int n)
155 {
156 1 int i;
157 1 for(i=1;i<n;i++){;}
158 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 499 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -