📄 da.lst
字号:
C51 COMPILER V8.12 DA 04/09/2009 16:11:43 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE DA
OBJECT MODULE PLACED IN DA.OBJ
COMPILER INVOKED BY: d:\KeilC51\C51\BIN\C51.EXE DA.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /***************************************************************
2 功能:实现DAC模拟信号输出,由T4定时控制DAC0输出DTMF信号
3 作者:ZDP
4 时间:2005-11-30
5 版本:V1.0
6 ***************************************************************/
7
8 #include <c8051f020.h> // SFR declarations
9 //-----------------------------------------------------------------------------
10 // Global CONSTANTS
11 //-----------------------------------------------------------------------------
12 #define SYSCLK 22118400 // SYSCLK frequency in Hz
13 //-----------------------------------------------------------------------------
14 // 函数定义
15 //-----------------------------------------------------------------------------
16 sbit DAC0=P1^1;
17 sbit DAC1=P1^2;
18 sbit DACS=P1^3;
19 sbit EMC1=P1^7;
20 sbit EMC2=P1^6;
21 sbit EMC3=P1^5;
22 sbit EMC4=P1^4;
23 unsigned char Work_fre=1;
24 unsigned char status=1;
25 void main (void);
26 void SYSCLK_Init (void);
27 void PORT_Init (void);
28 unsigned long count=0;
29 unsigned long time_count=0;
30
31 //-----------------------------------------------------------------------------
32 // 全局变量
33 //-----------------------------------------------------------------------------
34 //-----------------------------------------------------------------------------
35 // 主函数
36 //-----------------------------------------------------------------------------
37 void ADC0_Init (void)
38 {
39 1 ADC0CN = 0x80; // 软件启动转换
40 1 // REF0CN = 0x07; // 启用内部基准源
41 1 AMX0SL = 0 ; // 选择采样输入源
42 1 ADC0CF = (SYSCLK/2500000) << 3; // ADC conversion clock = 2.5MHz
43 1 // ADC0CF |= 0x01; // PGA gain = 2
44 1
45 1 // EIE2 |= 0x02; // 启用 ADC 中断
46 1 }
47 void TIM0_Init(void)
48 {
49 1 CKCON=0x00;
50 1 TMOD=0x01;
51 1 TH0 = 0X00;
52 1 TL0 = 0X00;
53 1 }
54 void main (void) {
55 1
C51 COMPILER V8.12 DA 04/09/2009 16:11:43 PAGE 2
56 1 unsigned int i=0;
57 1 WDTCN = 0xde; // 关闭WDT
58 1 WDTCN = 0xad;
59 1
60 1 SYSCLK_Init ();
61 1 IE=0X81; //开总中断和INT0中断
62 1 PORT_Init ();
63 1 ADC0_Init();
64 1 TIM0_Init();
65 1 REF0CN = 0x03; // 启用内部的电压基准源
66 1 DAC0CN = 0x80; // 启用 DAC0
67 1 DAC1CN = 0x80;
68 1 DAC0L=0X00;
69 1 DAC0H=0X0f;
70 1 DAC1L=0X00;
71 1 DAC1H=0X0f;
72 1 IT0=1;
73 1 IE = 0x97;
74 1 TR0=1;
75 1 DACS=1;
76 1 while (1)
77 1 {
78 2 DAC0=1;
79 2 DAC1=0;
80 2 for(i=0;i<1000;i++)
81 2 {
82 3 };
83 2 DAC0=0;
84 2 DAC1=0;
85 2 DAC0=0;
86 2 DAC1=1;
87 2 for(i=0;i<1000;i++)
88 2 {
89 3 };
90 2 DAC0=0;
91 2 DAC1=0;
92 2 /* while(AD0BUSY ==0)
93 2 {
94 2 AD0BUSY=1;
95 2 count++;
96 2 } */
97 2 }
98 1
99 1 }
100
101 //-----------------------------------------------------------------------------
102 // SYSCLK_Init
103 //-----------------------------------------------------------------------------
104
105 void SYSCLK_Init (void)
106 {
107 1 int i; // delay counter
108 1
109 1 OSCXCN = 0x67; // start external oscillator with
110 1 // 22.1184MHz crystal
111 1
112 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
113 1
114 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
115 1
116 1 OSCICN = 0x88; // select external oscillator as SYSCLK
117 1 // source and enable missing clock
C51 COMPILER V8.12 DA 04/09/2009 16:11:43 PAGE 3
118 1 // detector
119 1
120 1 }
121
122 //-----------------------------------------------------------------------------
123 // PORT_Init
124 //-----------------------------------------------------------------------------
125 void PORT_Init (void)
126 {
127 1 XBR0 = 0x04;
128 1 XBR1 = 0x0E;
129 1 XBR2 = 0x40;
130 1 }
131
132 void timer0_ISR(void) interrupt 1
133 //运行屏幕自动更新以及按键延时中断
134 {
135 1 if(time_count==28) //当屏幕处在运行屏幕状态,则启动更新计数器计数
136 1 {
137 2 time_count=0;
138 2 }
139 1 TH0=0X00;
140 1 TL0=0X00;
141 1 TF0=0; //中断标志复位
142 1 time_count++;
143 1
144 1 }
145 void Int0_ISR(void) interrupt 0
146 {
147 1 status=0;
148 1 if(Work_fre==1&&status==0)
149 1 {
150 2 EMC2=0;
151 2 EMC1=1;
152 2 EMC3=0;
153 2 EMC4=1;
154 2 Work_fre=2;
155 2 status=1;
156 2 }
157 1 if(Work_fre==2&&status==0)
158 1 {
159 2 EMC4=0;
160 2 EMC3=1;
161 2 EMC1=0;
162 2 EMC2=1;
163 2 Work_fre=1;
164 2 status=1;
165 2 }
166 1
167 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 345 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 2
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 + -