📄 ddfstest1.lst
字号:
C51 COMPILER V7.06 DDFSTEST1 08/24/2005 18:34:01 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DDFSTEST1
OBJECT MODULE PLACED IN ddfstest1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ddfstest1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*mcu向cpld写一个字节,再读出来
2 //*7218在硬件译码的时候,低四位数据进行译码,最高位控制小数点,其余三位无效*/
3 // distab保存要显示的8位数据(每一位为一个字节)
4 // ledtab为7218软件译码字型表
5 #include<AT89X51.h>
6 //#include<intrins.h>
7 #include<absacc.h>
8 #define DisCmd XBYTE [0xC100] //7218控制字地址
9 #define DisData XBYTE [0xC000] //7218数据口地址
10 #define LedMode P1_5
11 #define scode 0xb0 //7218软件译码方式命令字
12 #define bcode 0x90 //B码译码方式命令字
13 #define hexcode 0xd0 //软件译码方式命令字
14 #define unchar unsigned char
15 bit enter=0;
16 char keynum; //按键号
17 char ledcursor=7; //保存光标当前位置
18 char distab[8]={0x12,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
19 char temp[8];
20 char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
21 //0, 1, 2, 3, 4, 5, 6, 7
22 0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
23 //8 ,9 ,a ,b ,c ,d ,e ,f
24 0x80,0xbe,0x8b,0xee,0x84,0xca,0xf6 };
25 //熄灭 H L P - r q
26 unsigned int phase=0;
27 unsigned int fre=0;
28 //***************************************************************************************
29 //void KeyprgF1(void){}
30 // void KeyprgF2(void ){}
31 //void KeyprgClear(void){}
32 //void KeyprgEnter(void){}
33 //***************************************************************************************
34
35 void display()
36 {
37 1 unchar i;
38 1 LedMode=1;
39 1 DisCmd=scode; //采用软件译码
40 1 LedMode=0;
41 1
42 1 for(i=0;i<8;i++) //将distab中的数据送如7218
43 1 {
44 2
45 2 DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
46 2 }
47 1
48 1 }
49 //**************************************************************************************
50 void KeyprgF2() //在光标当前位置设置小数点
51 {
52 1 unchar i;
53 1 DisCmd=scode; //采用软件译码
54 1 for(i=0;i<8;i++) //将distab中的数据送如7218
55 1 {
C51 COMPILER V7.06 DDFSTEST1 08/24/2005 18:34:01 PAGE 2
56 2 if(i=ledcursor)
57 2 temp[i]=ledtab[distab[i]]+0x80;
58 2 temp[i]=ledtab[distab[i]]; //查表转化并将字型送入7218
59 2 DisData=temp[i];
60 2 }
61 1
62 1
63 1 }
64 //**************************************************************************************
65
66 void keyprg(unchar key) //键盘键值执行的程序
67 {
68 1 unchar i;
69 1 if((key<=9)&enter)
70 1 {
71 2 distab[ledcursor]=keynum; //键值送入distab最低位保存
72 2 if(ledcursor>0) //光标移位
73 2 ledcursor--;
74 2 else
75 2 ledcursor=7;
76 2 display(); //显示键值
77 2 }
78 1
79 1 else
80 1 {
81 2 switch(key)
82 2 {
83 3 case 0x0D: //加
84 3 if(distab[ledcursor]<0x09)
85 3 distab[ledcursor]++;
86 3 else
87 3 distab[ledcursor]=0;
88 3 display(); //显示键值
89 3 break;
90 3 case 0x0E: //减
91 3 if(distab[ledcursor]>0)
92 3 distab[ledcursor]--;
93 3
94 3 else
95 3 distab[ledcursor]=9;
96 3 display(); //显示键值
97 3
98 3 break;
99 3 case 0x0A: //KeyprgF1();
100 3
101 3 for(i=0;i<8;i++) //将distab中的数据送如7218
102 3 {
103 4 distab[i]=0;
104 4 }
105 3 ledcursor=7;
106 3 display(); //显示键值
107 3 break;
108 3 case 0x0B: //功能键F2
109 3 KeyprgF2();
110 3 break;
111 3 case 0x0C: //KeyprgBack();
112 3 if(ledcursor<7) //光标移位
113 3 ledcursor++;
114 3 else
115 3 ledcursor=0;
116 3 display(); //显示键值
117 3 break;
C51 COMPILER V7.06 DDFSTEST1 08/24/2005 18:34:01 PAGE 3
118 3 case 0x0F: //KeyprgEnter();
119 3 enter=!enter;
120 3 display(); //显示键值
121 3 break;
122 3 default:
123 3 break;
124 3 }
125 2 }
126 1
127 1 }
128 //**************************************************************************************
129 void intt0() interrupt 0
130 {
131 1 char xdata *cpld;
132 1 EX0=0; //关键盘中断,禁止相应其他按键
133 1 keynum=P1; //从p1口读入键盘值
134 1 keynum=keynum&0x0f; //取低四位;
135 1 // keyprg(keynum);
136 1 if(keynum==0x0f)
137 1 {
138 2 enter=!enter;
139 2 if(enter)
140 2 {
141 3 distab[7]=0x13;
142 3 distab[6]=0x11;
143 3 distab[5]=0x0a;
144 3 distab[4]=0x05;
145 3 distab[3]=0x0e;
146 3 distab[2]=0x10;
147 3 distab[1]=0x10;
148 3 }
149 2 else
150 2 {
151 3 distab[7]=0x0f;
152 3 distab[6]=0x15;
153 3 distab[5]=0x0e;
154 3 distab[4]=0x16;
155 3 distab[3]=0x10;
156 3 distab[2]=0x10;
157 3 distab[1]=0x10;
158 3 }
159 2
160 2 }
161 1 if(keynum==0x0d)
162 1 {
163 2 if(enter)
164 2 {
165 3 phase++;
166 3 cpld=0xA0ff;
167 3 *cpld=phase;
168 3 distab[0]=phase;
169 3 }
170 2 else
171 2 {
172 3 fre++;
173 3 cpld=0xA0fe;
174 3 *cpld=fre;
175 3 distab[0]=fre;
176 3 }
177 2 }
178 1 if(keynum==0x0e)
179 1 {
C51 COMPILER V7.06 DDFSTEST1 08/24/2005 18:34:01 PAGE 4
180 2 if(enter)
181 2 {
182 3 phase--;
183 3 cpld=0xA0ff;
184 3 *cpld=phase;
185 3 distab[0]=phase;
186 3 }
187 2 else
188 2 {
189 3 fre--;
190 3 cpld=0xA0fe;
191 3 *cpld=fre;
192 3 distab[0]=fre;
193 3 }
194 2 }
195 1 display();
196 1 EX0=1;
197 1 }
198
199 void main()
200 {
201 1 EX0=1;
202 1 EA=1;
203 1 display();
204 1 while(1);
205 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 503 ----
CONSTANT SIZE = 23 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 ----
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 + -