这是网上找的关于C8051F020利用自身的DAC输出1K HZ的正弦波的程序。我已经用示波器把波形显示出来了,非常完美。程序和示波器的波形已经上传网上了。
但是针对这个程序我有太多的疑问,请高手帮我看一下:
第一:sfr16 RCAP4 = 0xE4; // Timer4 capture/reload
sfr16 TMR4 = 0xF4; // Timer4
sfr16 DAC0 = 0xd2; // DAC0 data
sfr16 DAC1 = 0xd5; // DAC1 data
程序有这个定义,我想知道是干什么用的?好像没看到有什么作用。
第二:#define SAMPLE_RATE_DAC 100000L // DAC sampling rate in Hz
这是DAC的采样率,请问L 是什么单位。
// <PHASE_ADD> is the change in phase between DAC samples; It is used in
// the set_DACs routine.
unsigned int PHASE_ADD = FREQUENCY * PHASE_PRECISION / SAMPLE_RATE_DAC;
这时两个dac的相位变化,我想知道为什么是这个公式,怎么来的。
第三:TIMER4_Init(SYSCLK/SAMPLE_RATE_DAC);// Initialize Timer4 to overflow
定时器4的溢出为什么是 SYSCLK/SAMPLE_RATE_DAC ?
第四: DAC0 = SIN_temp ^ 0x8000;
DAC1 = COS_temp ^ 0x8000; // Write to DAC1
为什么要或上8000?
最后附上程序和波形图
C8051F020程序:
正弦波输出.zip
(36 KB, 下载次数: 39)
视频:
正弦波视频.zip
(4.47 MB, 下载次数: 26)
|