📄 ad114read.lst
字号:
C51 COMPILER V7.06 AD114READ 07/22/2005 14:12:58 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AD114READ
OBJECT MODULE PLACED IN AD114Read.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD114Read.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*7218在硬件译码的时候,低四位数据进行译码,最高位控制小数点,其余三位无效*/
2 // distab保存要显示的8位数据(每一位为一个字节)
3 // ledtab为7218软件译码字型表
4 #include<reg52.h>
5 #include<absacc.h>
6 #define DisCmd XBYTE [0xC100] //7218控制字地址
7 #define DisData XBYTE [0xC000] //7218数据口地址
8 #define scode 0xb0 //7218软件译码方式命令字
9 #define bcode 0x90 //B码译码方式命令字
10 #define hexcode 0xd0 //软件译码方式命令字
11 #define unchar unsigned char
12 sbit P3_0=P3^0;
13 sbit P3_1=P3^1;
14 sbit P1_0=P1^0;
15 bit enter=0;
16 char keynum; //按键号
17 char ledcursor=7; //保存光标当前位置
18 char distab[8]={0x13,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
19 char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
20 //0, 1, 2, 3, 4, 5, 6, 7
21 0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
22 //8 ,9 ,a ,b ,c ,d ,e ,f
23 0x80,0xbe,0x8b,0xee,0x84 };
24 //熄灭 H L P -
25 void cpld();
26 void delay200ms()
27 {
28 1 int i=1000,j=5000;
29 1 for(j;j>0;j--)
30 1 for(i;i>0;i--);
31 1 }
32 void display()
33 {
34 1 unchar i;
35 1 DisCmd=scode; //采用软件译码
36 1 for(i=0;i<8;i++) //将distab中的数据送如7218
37 1 {
38 2 if(i==3)
39 2 DisData=ledtab[distab[i]]+0x80;
40 2 else
41 2 DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
42 2 }
43 1 for(i=10000;i>0;i--);
44 1 }
45
46 //**************************************************************************************
47
48 void keyprg(unchar key) //键盘键值执行的程序
49 {
50 1 unchar i;
51 1 if((key<=9)&enter)
52 1 {
53 2 distab[ledcursor]=keynum; //键值送入distab最低位保存
54 2 if(ledcursor>0) //光标移位
55 2 ledcursor--;
C51 COMPILER V7.06 AD114READ 07/22/2005 14:12:58 PAGE 2
56 2 else
57 2 ledcursor=7;
58 2 }
59 1
60 1 else
61 1 {
62 2 switch(key)
63 2 {
64 3 case 0x0D: //加
65 3 if(distab[ledcursor]<0x09)
66 3 distab[ledcursor]++;
67 3 else
68 3 distab[ledcursor]=0;
69 3 break;
70 3 case 0x0E: //减
71 3 if(distab[ledcursor]>0)
72 3 distab[ledcursor]--;
73 3 else
74 3 distab[ledcursor]=9;
75 3 break;
76 3 case 0x0A:
77 3 //KeyprgF1();
78 3 for(i=0;i<8;i++) //将distab中的数据送如7218
79 3 {
80 4 distab[i]=0;
81 4 }
82 3 ledcursor=7;
83 3 break;
84 3 case 0x0B: //功能键F2
85 3 //KeyprgF2();
86 3 break;
87 3 case 0x0C:
88 3 //KeyprgClear();
89 3 if(ledcursor<7) //光标移位
90 3 ledcursor++;
91 3 else
92 3 ledcursor=0;
93 3 break;
94 3 case 0x0F:
95 3 enter=!enter;
96 3 distab[7]=enter;
97 3 //while(enter)
98 3
99 3 //KeyprgEnter();
100 3 break;
101 3 default:
102 3 break;
103 3 }
104 2 }
105 1 display(); //显示键值
106 1 }
107 //**************************************************************************************
108 void intt0() interrupt 0
109 {
110 1
111 1 EX0=0; //关键盘中断,禁止相应其他按键
112 1 keynum=P1; //从p1口读入键盘值
113 1 keynum=keynum&0x0f; //取低四位;
114 1 //keyprg(keynum);
115 1 if(keynum==0x00)
116 1 enter=!enter;
117 1 //if(keynum==0x01)
C51 COMPILER V7.06 AD114READ 07/22/2005 14:12:58 PAGE 3
118 1 // P3_1=0;
119 1 EX0=1;
120 1 }
121
122 //**************************************************************************************
123 void flink()
124 {
125 1 unchar i;
126 1 while(enter) //光标位置闪烁
127 1 {
128 2 DisCmd=scode; //采用软件译码
129 2 for(i=0;i<8;i++) //将distab中的数据送如7218
130 2 {
131 3 if(i==ledcursor)
132 3 DisData=0x80; //查表转化并将字型送入7218
133 3 else
134 3 DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
135 3 }
136 2 delay200ms();
137 2 DisCmd=scode;
138 2 display();
139 2 delay200ms();
140 2 }
141 1 }
142 //***************************************************************************************
143 void cpld()
144 {
145 1
146 1 unchar xdata *cpld;
147 1
148 1 long adin;
149 1 unsigned int d,voltage;
150 1
151 1 cpld=0xA000;
152 1 while(enter)
153 1 {
154 2 adin=*cpld;
155 2 //distab[0]=adin&0x0f;
156 2 //distab[1]=(adin&0xf0)/16;
157 2 d=(adin*4930)/255; //实际电压值为4.935v;左边参考电压如为2.375,就换成2375
158 2 voltage=d;
159 2 distab[3]=d/1000;
160 2 d=d%1000;
161 2 distab[2]=d/100;
162 2 d=d%100;
163 2 distab[1]=d/10;
164 2 d=d%10;
165 2 distab[0]=d;
166 2 // distab[7]=0x10;
167 2 distab[6]=0x10;
168 2 distab[5]=0x10;
169 2 distab[4]=0x10;
170 2 display();
171 2 delay200ms();
172 2 }
173 1 }
174 void main()
175 {
176 1 EX0=1;
177 1 EA=1;
178 1 display();
179 1 while(1)
C51 COMPILER V7.06 AD114READ 07/22/2005 14:12:58 PAGE 4
180 1 {
181 2 // while(1)
182 2 //while(enter)
183 2 cpld();
184 2 delay200ms();
185 2 }
186 1
187 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 539 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 8
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -