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