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