?? ad0809.lst
字號:
C51 COMPILER V7.06 AD0809 01/10/2008 00:32:10 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AD0809
OBJECT MODULE PLACED IN AD0809.OBJ
COMPILER INVOKED BY: D:\Xp\KEIL\C51\BIN\C51.EXE AD0809.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include"AD0809.h"
3
4
5
6 uchar WordCode[]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,
7 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E, //0~F分別是數字0~15
8 0xFF,0xFF,0xFF,0x42,0x41,0x06,0x4E, //16~18 19~22分別是X X X G.U.E.T.
9 0x7F,0xFF}; //23是小數點//24是全滅
10 uchar SelectCode[]={0x0E,0x0D,0x0B,0x07,0xFF};
11 uchar LED[4] = {0};
12
13 void DisplaySingleLED(uchar NO, uchar WORD)
14 {
15 1 WORDPORT = 0xFF;
16 1 WORDPORT = WordCode[WORD];
17 1 SELECTPORT = SelectCode[NO];
18 1 Delay5ms();
19 1 }
20
21 void Display(void)
22 {
23 1 uchar i;
24 1 bit flag = 0; //flag為零表示待顯示的是數據的第一位
25 1
26 1 uint AMPtemp = 0;
27 1 // drop = 0;
28 1 AMPtemp = AMPIN0;
29 1 /*
30 1 if(!AMPtemp)
31 1 {
32 1 DisplaySingleLED(3,0);
33 1 }
34 1 */
35 1 for(i=4; i>0; i--)
36 1 {
37 2 LED[i-1] = AMPtemp%10;
38 2 AMPtemp = AMPtemp/10;
39 2 }
40 1
41 1
42 1
43 1 for(i=0; i<4; i++)
44 1 {
45 2 // if(drop)
46 2 // {
47 2 // DisplaySingleLED(0,23);
48 2 // flag = 1;
49 2 // }
50 2
51 2 // if(LED[i] | flag)
52 2 // {
53 2 DisplaySingleLED(i,LED[i]);
54 2 // flag = 1;
55 2 // }
C51 COMPILER V7.06 AD0809 01/10/2008 00:32:10 PAGE 2
56 2 }
57 1 }
58
59 void ReadAD0809(void)
60 {
61 1 uchar i;
62 1 uint AMP = 0;
63 1 ST = 0;
64 1 ST = 0;
65 1 ST = 1;
66 1 for(i=200; i>0; i--)
67 1 {;}
68 1 ST = 1;
69 1 ST = 1;
70 1 ST = 0;
71 1 EOC = 0;
72 1 i = 100;
73 1 while((!EOC) & (i>0))//等待轉換完成
74 1 // while(!EOC)
75 1 {
76 2 i--;
77 2 }
78 1 OE = 1;
79 1 DATAPORT = 0xFF;
80 1 AMP = DATAPORT;
81 1 OE = 0;
82 1 EOC = 0;
83 1 AMPIN0 = AMP;
84 1 // AMPIN0 = 0;
85 1 AMPIN0 = AMP*20;//轉換出來的單位為MV,最大值為5000,最小值為20(1/51*1000=19.6
86 1 }
87
88 void SystemTest(void)
89 {
90 1
91 1 uchar i,j;
92 1 j = 0;
93 1 // WORDPORT = 0xFF;
94 1 // SELECTPORT = 0xFF;
95 1
96 1 while(j<4)
97 1 {
98 2 i = 100;
99 2 while(i--)
100 2 {
101 3 DisplaySingleLED(0,16+j);
102 3 DisplaySingleLED(1,17+j);
103 3 DisplaySingleLED(2,18+j);
104 3 DisplaySingleLED(3,19+j);
105 3 }
106 2 j++;
107 2 }
108 1
109 1 }
110
111
112 void Delay5ms(void)
113 {
114 1 unsigned char i,j,k;
115 1 for(i=5; i>0; i--)
116 1 for(j=2;j>0;j--)
117 1 for(k=124;k>0;k--);
C51 COMPILER V7.06 AD0809 01/10/2008 00:32:10 PAGE 3
118 1 }
119
120 void AD0809Init(void)
121 {
122 1 ST = 0;
123 1 EOC = 0;
124 1 OE = 0;
125 1 }
126
127 void keyscan(void)
128 {
129 1 KEY1 = 1;
130 1 KEY2 = 1;
131 1 if(!KEY1)
132 1 {
133 2 while(!KEY1)
134 2 {
135 3 KEY1 = 1;
136 3 }
137 2 drop = !drop;
138 2 }
139 1
140 1 if(!KEY2)
141 1 {
142 2 AMPIN0 = 0;
143 2 }
144 1
145 1 }
146
147 uchar i;
148 void main(void)
149 {
150 1 SystemTest();
151 1 AD0809Init();
152 1 while(1)
153 1 {
154 2 ReadAD0809();
155 2 for(i=25;i>0;i--)
156 2 {
157 3 // keyscan();
158 3 Display();
159 3 }
160 2 // DisplaySingleLED(0,13);
161 2 // DisplaySingleLED(1,14);
162 2 // DisplaySingleLED(2,15);
163 2 // DisplaySingleLED(3,12);
164 2 }
165 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 306 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 37 3
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -