📄 top.lst
字号:
C51 COMPILER V7.50 TOP 08/22/2008 20:37:26 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TOP
OBJECT MODULE PLACED IN top.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE top.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*电子综合设计实验箱测试程序
2 说明:此程序为51单片机系统模块,键盘LED模块,LCD1602显示模块,LCD12864显示模块
3 万能板模块测试程序
4 插上跳线冒J104确保总线给其他模块供电
5 技术支持:qq:190189667 胡玉贵
6 */
7 #include <reg51.h>
8 #include <absacc.h>
9 #include <string.h>
10 #include<INTRINS.H>
11 #include "lcd.h"
12 #include "serial.h"
13 //#include "lcd12864.h"
14
15
16
17 sbit sdata=P0^3;
18 sbit sclk=P0^4;
19 sbit load=P0^5;
20 sbit ldac=P0^6;
21 //注意跳线冒P13~P15插到右边
22 sbit ds=P1^3;
23 sbit sh=P1^4;
24 sbit st=P1^5;
25
26 //AD9850控制引脚,注意将P32~P35的跳线冒插到左边
27 sbit DDS_reset=P3^2;
28 sbit DDS_sclk=P3^3;
29 sbit DDS_load=P3^4; //FQUD
30 sbit DDS_sdata=P3^5; //DATA
31
32 typedef unsigned char uint8;
33 //extern uint8 code tab[13];
34 //extern uint8 d[8];
35 #define uchar unsigned char
36
37
38 /*************************AD9850初始化********************************/
39 void ad9850init()
40 {
41 1 DDS_reset=0;
42 1 DDS_reset=1;
43 1 DDS_reset=0;
44 1 DDS_load=0;
45 1 }
46
47 /*************************AD9850显示正弦波********************************/
48 AD9850(float freq)
49 {
50 1 float fw;
51 1 uchar temp;
52 1 uchar i,j;
53 1 uchar d[5];
54 1 // fw=freq*34.359738368; //d[4]中存放控制字最高位,即相位控制字
55 1 //Freq=MCLK*FW/2^32
C51 COMPILER V7.50 TOP 08/22/2008 20:37:26 PAGE 2
56 1 fw=freq*85.89934592;
57 1 d[4]=0;
58 1 d[0]=(unsigned long)fw;
59 1 d[1]=(unsigned long)fw>>8;
60 1 d[2]=(unsigned long)fw>>16;
61 1 d[3]=(unsigned long)fw>>24;
62 1 DDS_load=0;
63 1 DDS_sclk=0;
64 1 DDS_sclk=1;
65 1 DDS_sclk=0;
66 1 DDS_load=1;
67 1 DDS_load=0;
68 1 for(i=0;i<5;i++)
69 1 {
70 2 temp=d[i];
71 2 for(j=0;j<8;j++)
72 2 {
73 3 DDS_sclk=0;
74 3 if(temp&1) DDS_sdata=1;
75 3 else DDS_sdata=0;
76 3 DDS_sclk=1;
77 3 temp=temp>>1;
78 3 }
79 2 }
80 1
81 1 DDS_load=1;
82 1 DDS_load=0;
83 1 DDS_load=0;
84 1 DDS_load=0;
85 1 }
86
87
88 void WriteSIOByte(unsigned char led,unsigned char sel,unsigned char seg)
89 {
90 1 unsigned char i;
91 1 for (i=0;i<8;i++)
92 1 {
93 2 led=led<<1; ds=CY; sh=1; sh=0;
94 2 }
95 1 _nop_();//延时
96 1 for (i=0;i<8;i++)
97 1 {
98 2 sel=sel<<1; ds=CY; sh=1; sh=0;
99 2 }
100 1 _nop_();//延时
101 1 for (i=0;i<8;i++)
102 1 {
103 2 seg=seg<<1; ds=CY; sh=1; sh=0;
104 2 }
105 1
106 1 //SER=1;//释放数据总线
107 1 //以下3条指令若在多字节时,应该移入多字节全发送完后在执行此3条指令
108 1 st=0;
109 1 // #asm("nop");//延时
110 1 //delay(2);
111 1 st=1;//打入并行数据
112 1 }
113
114 main()
115 {
116 1 unsigned char xdata i,str[]="freq:1K ";
117 1 unsigned char xdata str2[]="KeyValue:";
C51 COMPILER V7.50 TOP 08/22/2008 20:37:26 PAGE 3
118 1 //unsigned int v;
119 1 ad9850init();
120 1 AD9850(1000);//AD9850输出1KHZ的正弦波
121 1 WriteSIOByte(1,0,0);//防止蜂鸣器乱叫
122 1 InitSerial();
123 1 //Timer0Init();
124 1 InitSerialBuffer();//初始化串口波特率:9600bps
125 1 LCDInit();
126 1 LCDWriteCommand(0x80);
127 1 for(i=0;i<strlen(str);i++)
128 1 LCDWriteData(str[i]);
129 1 LCDWriteCommand(0xC0);
130 1 for(i=0;i<strlen(str2);i++)
131 1 LCDWriteData(str2[i]);
132 1 while(1)
133 1 {
134 2
135 2 }
136 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 464 ----
CONSTANT SIZE = 19 ----
XDATA SIZE = ---- 33
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -