📄 text1.lst
字号:
C51 COMPILER V7.20 TEXT1 07/19/2007 09:52:58 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4
5 //数据口定义
6 #define lcd1602_bus P0
7
8 /******************tlc549 port*********************/
9
10 sbit cs_0838=P1^3;
11 sbit sda_0838=P1^0;
12 sbit scl_0838=P1^1;
13
14 /*******************tlc5620 port***********************/
15 sbit load_5620=P1^5;
16 sbit clk_5620=P1^6;
17 sbit data_5620=P1^7;
18
19 /***************lcd1602 port******************************/
20
21 //引脚定义
22
23 sbit rs_1602=P2^5;
24 sbit rw_1602=P2^6;
25 sbit e_1602=P2^7;
26
27 uchar set[3]; //setting
28 uchar mea[4]; //measure
29 uchar j;
30 bit b;
31 uchar data5620;
32
33 unsigned char bdata adc_0838; //bdata //bit data area
34 sbit adc_0838low=adc_0838^0; //最低位
35
36 uchar bdata u;
37 sbit us=u^7;
38
39 uchar code table[10]=
40 {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
41
42
43 /**************adc_549convert*******************/
44 unsigned char adc_0838convert()
45 {
46 1 uchar i;
47 1 u=0x80;
48 1 scl_0838=0;
49 1 sda_0838=1;
50 1 cs_0838=0;
51 1 _nop_();
52 1 _nop_();
53 1 scl_0838=1;
54 1 _nop_();
55 1 _nop_();
C51 COMPILER V7.20 TEXT1 07/19/2007 09:52:58 PAGE 2
56 1 for(i=0;i<4;i++)
57 1 {
58 2 scl_0838=0;
59 2 sda_0838=us;
60 2 _nop_();
61 2 _nop_();
62 2 scl_0838=1;
63 2 u=u<<1;
64 2 }
65 1 sda_0838=1;
66 1 _nop_();
67 1 _nop_();
68 1 scl_0838=0;
69 1 _nop_();
70 1 _nop_();
71 1 adc_0838=0;
72 1 for(i=0;i<8;i++)
73 1 {
74 2 adc_0838=adc_0838<<1;
75 2 scl_0838=1;
76 2 _nop_();
77 2 _nop_();
78 2 scl_0838=0;
79 2 _nop_();
80 2 _nop_();
81 2 adc_0838low=sda_0838;
82 2 }
83 1 return(adc_0838);
84 1 }
85
86
87 void dac_5620(unsigned char dataa,unsigned char datab,
88 unsigned char datac,unsigned char datad)
89 {
90 1 unsigned char i;
91 1
92 1
93 1 /****************dataa************/
94 1
95 1 load_5620=1;
96 1 clk_5620=1; data_5620=0; clk_5620=0;
97 1 clk_5620=1; data_5620=0; clk_5620=0;
98 1 clk_5620=1; data_5620=0; clk_5620=0;
99 1 for(i=0;i<8;i++)
100 1 {
101 2 clk_5620=1;
102 2 if(dataa & 0x80) data_5620=1;
103 2 else data_5620=0;
104 2 clk_5620=0;
105 2 dataa=dataa<<1;
106 2 }
107 1 load_5620=0;
108 1 _nop_();
109 1 load_5620=1;
110 1
111 1
112 1 /************datab*************/
113 1
114 1 load_5620=1;
115 1 clk_5620=1; data_5620=0; clk_5620=0;
116 1 clk_5620=1; data_5620=1; clk_5620=0;
117 1 clk_5620=1; data_5620=0; clk_5620=0;
C51 COMPILER V7.20 TEXT1 07/19/2007 09:52:58 PAGE 3
118 1 for(i=0;i<8;i++)
119 1 {
120 2 clk_5620=1;
121 2 if(datab & 0x80) data_5620=1;
122 2 else data_5620=0;
123 2 clk_5620=0;
124 2 datab=datab<<1;
125 2 }
126 1 load_5620=0;
127 1 _nop_();
128 1 load_5620=1;
129 1
130 1
131 1 /************datac*******************/
132 1
133 1 load_5620=1;
134 1 clk_5620=1; data_5620=1; clk_5620=0;
135 1 clk_5620=1; data_5620=0; clk_5620=0;
136 1 clk_5620=1;data_5620=0; clk_5620=0;
137 1 for(i=0;i<8;i++)
138 1 {
139 2 clk_5620=1;
140 2 if(datac & 0x80) data_5620=1;
141 2 else data_5620=0;
142 2 clk_5620=0;
143 2 datac=datac<<1;
144 2 }
145 1 load_5620=0;
146 1 _nop_();
147 1 load_5620=1;
148 1
149 1
150 1 /***************datad***************/
151 1
152 1 load_5620=1;
153 1 clk_5620=1; data_5620=1; clk_5620=0;
154 1 clk_5620=1; data_5620=1; clk_5620=0;
155 1 clk_5620=1; data_5620=0; clk_5620=0;
156 1 for(i=0;i<8;i++)
157 1 {
158 2 clk_5620=1;
159 2 if(datad & 0x80) data_5620=1;
160 2 else data_5620=0;
161 2 clk_5620=0;
162 2 datad=datad<<1;
163 2 }
164 1 load_5620=0;
165 1 _nop_();
166 1 load_5620=1;
167 1
168 1 }
169
170
171 /*********延时子程序**********/
172 void delay_1602(uchar dy)
173 {
174 1 while(--dy);
175 1 }
176
177 /***********忙判断标志,返回一个位BF********************/
178
179 bit lcd1602_busy(void)
C51 COMPILER V7.20 TEXT1 07/19/2007 09:52:58 PAGE 4
180 {
181 1 unsigned char busy_flag;
182 1 rs_1602=0;
183 1 rw_1602=1;
184 1 _nop_();
185 1 e_1602=1;
186 1 _nop_();
187 1 lcd1602_bus=0xff;
188 1 busy_flag=lcd1602_bus; //e在高电平时读
189 1 e_1602=0;
190 1 return (bit)(busy_flag&0x80); //BF=1; BUSY 返回一个位
191 1 }
192
193
194 /********写命令,有两个参数,一个是要写的命令控制字,
195 第二个是用来控制是否进行忙标志的判断。
196
197 busyflag=1;
198
199 判断: 为0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -