📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 09/10/2005 16:29:02 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN F:\菜单(并行)\MAIN.OBJ
COMPILER INVOKED BY: D:\Program\C51\BIN\C51.EXE F:\菜单(并行)\MAIN.C DB SB OE
line level source
1 #include<reg51.h>
2 #include <stdlib.h>
3 #include <intrins.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define ulong unsigned long
7 void lcd_write_ins(uchar i);
8 sbit data_in=P2^3;
9 sbit data_clk=P2^4;
10 sbit comtrol_oe=P2^5;
11 sbit comtrol_in=P2^6;
12 sbit comtrol_clk=P2^7;
13 sbit key_port0=P1^0;
14 sbit key_port1=P1^1;
15 sbit key_port2=P1^2;
16 sbit key_port3=P1^3;
17 sbit key_port4=P1^4;
18 sbit lcd_da=P1^5;
19 sbit lcd_clk=P1^6;
20 bit main_make=1;
21 uchar data line[9];
22 uchar p;
23 uchar up_down=1;
24 uchar all=0;
25 uchar code fre[]={"1.频率调节"};
26 uchar code am[]={"2.AM幅度调制"};
27 uchar code pa_sk[]={"3.产生psk,ask"};
28 uchar code fm[]={"4.FM频率调制"};
29 uchar code fre_mode_tab1[]={"请输入频率后按确"};
30 uchar code fre_mode_tab2[]={"定输出或按返回重"};
31 uchar code fre_mode_tab3[]={"新输入!"};
32 uchar code fre_mode_tab4[]={" (Hz)"};
33 uchar code am_mode_tab1[]={"请选择调制度Ma"};
34 uchar code am_mode_tab2[]={"10%"};
35 uchar code pa_sk_mode_tab1[]={"选择ASK/PSK.模式"};
36 uchar code pa_sk_mode_tab2[]={" ASK PSK "};
37 uchar code pa_sk_mode_tab3[]={"输入基带序列编码"};
38 uchar code pa_sk_mode_tab4[]={""};
39 uchar code fm_mode_tab1[]={"按左右键选择频偏"};
40 uchar code fm_mode_tab2[]={" 5K 10K"};
41 uchar code fm_mode_tab3[]={"请输入载波频率"};
42 uchar code fm_mode_tab4[]={" (Hz)"};
43 /******************************送控制DDS_AD9851控制字*************************************/
44 void rx_74164(unsigned char a) //通过74164把数据传给FPGA
45 {unsigned char i;
46 1
47 1 for (i=0;i<8;i++)
48 1 { a<<=1; data_in=CY;
49 2 data_clk=0;
50 2 data_clk=1;
51 2 data_clk=0;
52 2 }
53 1 }
54 void comtrol(unsigned char b)
55 { unsigned char i;
C51 COMPILER V7.20 MAIN 09/10/2005 16:29:02 PAGE 2
56 1
57 1 for (i=0;i<8;i++)
58 1 {b<<=1;comtrol_in=CY;
59 2 comtrol_clk=0;
60 2 comtrol_clk=1;
61 2 comtrol_clk=0;
62 2 }
63 1 comtrol_oe=1;
64 1 comtrol_oe=0;
65 1 comtrol_oe=1;
66 1 }
67 //--------------------------------------------------------------
68 void send_fre_data(void)
69 {
70 1 float y;
71 1 ulong z;
72 1 uchar i,b;
73 1 uchar x0,x1,x2,x3;
74 1 y=atof(line);
75 1 z=y*35.7913941;
76 1 x0=z/16777216;
77 1 x1=(z%16777216)/65536;
78 1 x2=((z%16777216)%65536)/256;
79 1 x3=(((z%16777216)%65536)%256)/1;b=0x0f;
80 1 comtrol(0x00);
81 1 rx_74164(x3);
82 1 lcd_write_ins(0x01);
83 1 comtrol(0xff);
84 1 rx_74164(x2);
85 1 lcd_write_ins(0x01);
86 1 comtrol(0x02);
87 1 comtrol(0xff);
88 1 rx_74164(x1);
89 1 comtrol(0x03);
90 1 comtrol(0xff);
91 1 rx_74164(x0);
92 1 comtrol(4);
93 1 comtrol(0xff);
94 1 rx_74164(1);
95 1 comtrol(5);
96 1 comtrol(0xff);
97 1 comtrol(6);
98 1 comtrol(7);
99 1 comtrol(0xff);
100 1 _nop_();
101 1 }
*** WARNING C280 IN LINE 72 OF F:\菜单(并行)\MAIN.C: 'i': unreferenced local variable
102 /**************************以下为液晶显示子程序***********************/
103 void lcd_delay(void) //显示延时1MS
104 {
105 1 uint i;
106 1 for(i=0;i<50;i++);
107 1 _nop_();
108 1 }
109 //------------------------------------发数据
110 void lcd_send_data(uchar mun)
111 {
112 1 uchar i;
113 1 for(i=0;i<8;i++)
114 1 {
115 2 lcd_clk=0;
116 2 if((mun&0x80)!=0)lcd_da=1;
C51 COMPILER V7.20 MAIN 09/10/2005 16:29:02 PAGE 3
117 2 else lcd_da=0;
118 2 lcd_clk=1;
119 2 mun=mun<<1;
120 2 }
121 1 }
122 //-----------------------------------------------写指令
123 void lcd_write_ins(uchar num)
124 {
125 1 uchar hdata,ldata;
126 1 hdata=num&0xf0;
127 1 ldata=((num<<4)&0xf0);
128 1 lcd_send_data(0xf8);
129 1 lcd_delay();
130 1 lcd_send_data(hdata);
131 1 lcd_delay();
132 1 lcd_send_data(ldata);
133 1 lcd_delay();
134 1 }
135 //-----------------------------------写数据
136 void lcd_write_da(uchar num)
137 {
138 1 uchar hdata,ldata;
139 1 hdata=num&0xf0;
140 1 ldata=((num<<4)&0xf0);
141 1 lcd_send_data(0xfa);
142 1 lcd_delay();
143 1 lcd_send_data(hdata);
144 1 lcd_delay();
145 1 lcd_send_data(ldata);
146 1 lcd_delay();
147 1 }
148 //-------------------------------------X表示第几个字,Y表示第几行,Z表示字符;
149 void lcd_show(uchar x,uchar y,uchar *z)
150 {
151 1 switch (y)
152 1 {
153 2 case 1:lcd_write_ins(0x80+x-1);break;
154 2 case 2:lcd_write_ins(0x90+x-1);break;
155 2 case 3:lcd_write_ins(0x88+x-1);break;
156 2 case 4:lcd_write_ins(0x98+x-1);break;
157 2 default:break;
158 2 }
159 1 while(*z)
160 1 {
161 2 lcd_write_da(*z++);
162 2 }
163 1 }
164 //--------------------------------------------
165 //12864液晶反白子程序
166 //X第几个字(1~8),Y第几行(1~4行),width反白的宽度(1~16)(单位:字符)
167 //若width==0则上次反白的位置变为正常显示,若width!=0,上次反白的位
168 //置变为正常显示,则这次反白的位置反白。
169 void fan(uchar lcd_x,uchar lcd_y,uchar width)
170 {
171 1 uchar xx,yy,i,j;
172 1 yy=0x80;xx=0x80; //下半屏绘图区X,y轴地址
173 1 lcd_write_ins(0x36); //扩展指令模式,形图开关开
174 1 for (i=0;i<32;i++) //上半屏处理显示空白
175 1 {
176 2 lcd_write_ins(yy++);lcd_write_ins(xx);
177 2 for (j=0;j<16;j++)
178 2 { lcd_write_da(0x00);}
C51 COMPILER V7.20 MAIN 09/10/2005 16:29:02 PAGE 4
179 2 }
180 1 yy=0x80;xx=0x88; //下半屏绘图区X,轴地址
181 1 for (i=0;i<32;i++) //下半屏处理显示空白
182 1 {
183 2 lcd_write_ins(yy++); lcd_write_ins(xx);
184 2 for (j=0;j<16;j++)
185 2 { lcd_write_da(0x00); }
186 2 }
187 1 lcd_write_ins(0x30); //基本指令模式
188 1
189 1 //-------------------------------------------
190 1 if(width!=0) //如果width不等0,则反白选中区域并存此次的参数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -