?? max197.lst
字號:
C51 COMPILER V7.10 MAX197 07/22/2007 15:42:47 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAX197
OBJECT MODULE PLACED IN max197.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE max197.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg52.h"
2 #include " ABSACC.h"
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define refvcc 2.5 // 定位基準(zhǔn)電壓
7 #define manpian 4096 //
8 #define max197_data P0
9 #define adch0 XBYTE[0x0200]
10
11 uchar max197_low8 , /* 地8位 */ max197_high4 ,/* 高四位*/ channel , /* 通道*/ i , display_data[] ;
12 float vi , ad_data ;
13 int Number ; //= 0xfff ;
14
15 //sbit max197_cs = P2^5 ; //片選擇
16 sbit max197_hben = P2^7 ; // 地8位和高四位的選擇信號
17 sbit max197_int = P2^6 ; // 數(shù)據(jù)轉(zhuǎn)換完成中段信號, 使用的int0.
18 //sbit max197_wr = P3^6 ; //max197讀信號
19 //sbit max197_rd = P3^7 ; // max197寫信號
20
21
22 unsigned char Status , Data ,Command , i ;
23 unsigned char code max197 [] = "MAX197AD轉(zhuǎn)換 " ;
24 unsigned char code shuru [] = "輸入電壓: V";
25 #define LCD_Data P1
26
27
28 sbit LCD_RS =P3^2;
29 sbit LCD_E =P3^0;
30 sbit LCD_WR =P3^1;
31
32
33 LCDBusyWait() //等待LCD就緒
34 {
35 1 unsigned char Status;
36 1 LCD_RS=0;
37 1 LCD_WR=1;
38 1 LCD_Data=0xFF;
39 1
40 1 LCD_E=1;
41 1 Status=LCD_Data;
42 1 LCD_E=0;
43 1 while(Status & 0x80)
44 1 {
45 2 LCD_E=1;
46 2 Status=LCD_Data;
47 2 LCD_E=0;
48 2 }
49 1 LCD_WR=0;
50 1 return Status;
51 1 }
52
53 WriteLCD_Data( unsigned char Data ) //向LCD寫入一個字節(jié)的數(shù)據(jù)
54 {
55 1 LCDBusyWait();
C51 COMPILER V7.10 MAX197 07/22/2007 15:42:47 PAGE 2
56 1 LCD_RS=1;
57 1 LCD_Data = Data;
58 1 LCD_E=1;
59 1 LCD_E=0;
60 1 }
61
62 WriteLCD_Command( unsigned char Command ) //向LCD寫入一個字節(jié)的命令
63 {
64 1 LCDBusyWait();
65 1 LCD_RS=0;
66 1 LCD_Data=Command;
67 1 LCD_E=1;
68 1 LCD_E=0;
69 1 }
70
71 lcd_init ()
72 {
73 1
74 1 unsigned int i;
75 1 WriteLCD_Command(0x01); //清屏
76 1 for(i=0;i<2000;i++);
77 1 WriteLCD_Command(0x30); //功能設(shè)置8位界面,
78 1 for(i=0;i<2000;i++);
79 1 WriteLCD_Command(0x0C); //顯示開,光、光標(biāo)關(guān),反白顯示
80 1 for(i=0;i<2000;i++);
81 1 WriteLCD_Command(0x06); //DDRAM地址自加
82 1 for(i=0;i<2000;i++);
83 1 WriteLCD_Command(0x81) ;
84 1 for(i=0;i<2000;i++);
85 1
86 1 }
87
88 lcd_init_display ( )
89 {
90 1 i = 0 ;
91 1 while ( max197 [i] != '\0')
92 1 {
93 2 Data = max197 [i] ;
94 2 WriteLCD_Data(Data) ;
95 2 i++ ;
96 2 }
97 1 WriteLCD_Command(0x88);
98 1 i = 0 ;
99 1 while ( shuru [i] != '\0')
100 1 {
101 2 Data = shuru [i] ;
102 2 WriteLCD_Data(Data) ;
103 2 i++ ;
104 2 }
105 1
106 1 }
107
108
109
110
111
112
113 max197_data_lcddisplay () // 在lcd上面顯示模擬電壓的值.
114 {
115 1 WriteLCD_Command(0x8d);
116 1 vi = (ad_data / 4096.0 ) * refvcc ;
117 1 Number = vi *1000 ;
C51 COMPILER V7.10 MAX197 07/22/2007 15:42:47 PAGE 3
118 1 if ( Number >=10000 )
119 1 {
120 2 WriteLCD_Data((Number /10000 ) + 0x30); //取出10位數(shù)字
121 2 WriteLCD_Data((Number % 10000 / 1000) + 0x30); //取出個位數(shù)字
122 2 WriteLCD_Data(0x2e);
123 2 WriteLCD_Data(Number % 1000 / 100 + 0x30); //取出.0位數(shù)字
124 2 WriteLCD_Data(Number % 100/ 10 + 0x30); //取出.00位
125 2 WriteLCD_Data(Number % 10 + 0x30); //取出.000位數(shù)
126 2 }
127 1 if ( Number < 10000 )
128 1 {
129 2 WriteLCD_Data((Number /1000) + 0x30);
130 2 WriteLCD_Data(0x2e);
131 2 WriteLCD_Data((Number % 1000 / 100) + 0x30); //取出.0位數(shù)字
132 2 WriteLCD_Data(Number % 100 / 10 + 0x30); //取出.00位數(shù)字
133 2 WriteLCD_Data(Number % 10 + 0x30); ////取出.000位數(shù)字
134 2 }
135 1
136 1 }
137
138
139
140 void intsvr ( void ) interrupt 1
141 {
142 1
143 1 //EX1 = 0 ;
144 1 TR0 = 0;
145 1 adch0 = 0x40 ;
146 1 while ( max197_int !=0 )
147 1 {
148 2 max197_hben = 0 ;
149 2 }
150 1
151 1 max197_low8 = adch0 ;
152 1 max197_hben = 1 ;
153 1 max197_high4 = adch0 ;
154 1
155 1 ad_data = max197_high4;
156 1 ad_data = ad_data * 255 ;
157 1 ad_data = ad_data+ max197_low8 ;//將高四位的數(shù)據(jù)前移8位在加上低位的數(shù)據(jù).
158 1 // ad_data = 0xff ;
159 1
160 1 max197_hben = 1 ;
161 1 // EX1 = 1 ;
162 1 TH0 = 0xff ;
163 1 TL0 = 0xde ;
164 1 TR0 = 1 ;
165 1
166 1
167 1 }
168
169 main ()
170 {
171 1 uchar i , j ;
172 1 lcd_init () ;
173 1 lcd_init_display ( ) ;
174 1
175 1 TMOD = 0x01 ;
176 1 TH0 = 0xff ;
177 1 TL0 = 0xde ;
178 1 ET0 = 1 ;
179 1 TR0 = 1 ;
C51 COMPILER V7.10 MAX197 07/22/2007 15:42:47 PAGE 4
180 1 EA = 1 ;
181 1 //EX1 = 1 ; // 打開外部中
182 1 // max197_int = 1 ;
183 1
184 1 // ad_data = 0xff ;
185 1
186 1
187 1 // max197_data_lcddisplay () ;
188 1 while (1) // 等待外部中斷。
189 1 {
190 2
191 2 max197_data_lcddisplay () ;
192 2 // for ( i = 0 ; i <255 ; i++ )
193 2 // for ( j = 0 ; j <255 ; j++) ;
194 2 }
195 1
196 1 }
*** WARNING C280 IN LINE 171 OF MAX197.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 171 OF MAX197.C: 'j': unreferenced local variable
197
198
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 633 ----
CONSTANT SIZE = 31 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -