📄 cpld.lst
字号:
C51 COMPILER V7.06 CPLD 07/22/2005 20:23:23 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CPLD
OBJECT MODULE PLACED IN CPLD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CPLD.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 P1_0=P1^0;
14 bit enter=0;
15 char keynum; //按键号
16 char ledcursor=7; //保存光标当前位置
17 char distab[8]={0x13,0x13,0x10,0x10,0x10,0x10,0x10,0x10} ; // 要显示的内容 hello-pp
18 char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
19 //0, 1, 2, 3, 4, 5, 6, 7
20 0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
21 //8 ,9 ,a ,b ,c ,d ,e ,f
22 0x80,0xbe,0x8b,0xee,0x84 };
23 //熄灭 H L P -
24 void delay200ms()
25 {
26 1 int i=8000,j=10000;
27 1 for(j;j>0;j--)
28 1 for(i;i>0;i--);
29 1 }
30 void display()
31 {
32 1 unchar i;
33 1 DisCmd=scode; //采用软件译码
34 1 for(i=0;i<8;i++) //将distab中的数据送如7218
35 1 {
36 2 DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
37 2
38 2 }
39 1
40 1 }
41
42 //**************************************************************************************
43
44 void keyprg(unchar key) //键盘键值执行的程序
45 {
46 1 unchar i;
47 1 if((key<=9)&enter)
48 1 {
49 2 distab[ledcursor]=keynum; //键值送入distab最低位保存
50 2 if(ledcursor>0) //光标移位
51 2 ledcursor--;
52 2 else
53 2 ledcursor=7;
54 2 }
55 1
C51 COMPILER V7.06 CPLD 07/22/2005 20:23:23 PAGE 2
56 1 else
57 1 {
58 2 switch(key)
59 2 {
60 3 case 0x0D: //加
61 3 if(distab[ledcursor]<0x09)
62 3 distab[ledcursor]++;
63 3 else
64 3 distab[ledcursor]=0;
65 3 break;
66 3 case 0x0E: //减
67 3 if(distab[ledcursor]>0)
68 3 distab[ledcursor]--;
69 3 else
70 3 distab[ledcursor]=9;
71 3 break;
72 3 case 0x0A:
73 3 //KeyprgF1();
74 3 for(i=0;i<8;i++) //将distab中的数据送如7218
75 3 {
76 4 distab[i]=0;
77 4 }
78 3 ledcursor=7;
79 3 break;
80 3 case 0x0B: //功能键F2
81 3 //KeyprgF2();
82 3 break;
83 3 case 0x0C:
84 3 //KeyprgClear();
85 3 if(ledcursor<7) //光标移位
86 3 ledcursor++;
87 3 else
88 3 ledcursor=0;
89 3 break;
90 3 case 0x0F:
91 3 enter=!enter;
92 3 //KeyprgEnter();
93 3 break;
94 3 default:
95 3 break;
96 3 }
97 2 }
98 1 display(); //显示键值
99 1 }
100 //**************************************************************************************
101 void intt0() interrupt 0
102 {
103 1 char xdata *cpld;
104 1 unchar j=0,a;
105 1 cpld=0xA000;
106 1 EX0=0; //关键盘中断,禁止相应其他按键
107 1 keynum=P1; //从p1口读入键盘值
108 1 keynum=keynum&0x0f; //取低四位;
109 1 //keyprg(keynum);
110 1 if(keynum==0x0f)
111 1 {
112 2 a=*cpld;
113 2 distab[0]=a&0x0f;
114 2 distab[1]=(a&0xf0)/16;
115 2 display();
116 2 }
117 1 else
C51 COMPILER V7.06 CPLD 07/22/2005 20:23:23 PAGE 3
118 1 {
119 2 *cpld=keynum;
120 2 }
121 1
122 1 EX0=1;
123 1 }
124
125 //**************************************************************************************
126 void flink()
127 {
128 1 unchar i;
129 1 while(enter) //光标位置闪烁
130 1 {
131 2 DisCmd=scode; //采用软件译码
132 2 for(i=0;i<8;i++) //将distab中的数据送如7218
133 2 {
134 3 if(i==ledcursor)
135 3 DisData=0x80; //查表转化并将字型送入7218
136 3 else
137 3 DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
138 3 }
139 2 delay200ms();
140 2 DisCmd=scode;
141 2 display();
142 2 delay200ms();
143 2 }
144 1 }
145 //***************************************************************************************
146 void main()
147 {
148 1
149 1 EX0=1;
150 1 EA=1;
151 1 display();
152 1 while(1);
153 1
154 1 }
155
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 391 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 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 + -