位为所需数值,所以在保留时应注意将结果的低6位去除,取出高10位有效数字。
四,实验程序
本实验程序设置 DSP 采用连续采集的方式工作,同时采集两个通道(ADCIN0,
ADCIN1)的模拟量输入;使用片内通用定时器 1 产生定时中断,用以定时保存转换数据。
#include "2407c.h"
#define ADCNUMBER 256
void interrupt gptime1(void); /* 中断服务程序,用于设置保存标志 */
void ADInit(void); /* 初始化A/D转换模块和通用定时器1 */
ioport unsigned char port000c; /* I/O 端口用于设置 ICETEK-2407-A 板上指示灯 */
unsigned int uWork,uWork1,nADCount,nLed,*pResult1,*pResult2;
int nNewConvert,nWork;
unsigned int nADCIn0[ADCNUMBER]; /* 存储区1,保存通道ADCIN0的转换结果,
循环保存 */
unsigned int nADCIn1[ADCNUMBER]; /* 存储区2,保存通道ADCIN1的转换结果,
循环保存 */
int *z;
main()
{
asm(" CLRC SXM"); /* 清标志,关中断 */
asm(" CLRC OVM");
asm(" CLRC CNF");
pResult1=RESULT0;
pResult2=RESULT1;
nNewConvert=0;
*WDCR=0x6f;
*WDKEY=0x5555;
哈尔滨工业大学——DSP 原理与应用实验指导书
III-17
*WDKEY=0xaaaa; /* 关闭看门狗中断 */
*SCSR1=0x81fe; /* 打开所有外设,设置时钟频率为40MHz */
uWork=(*WSGR); /* 设置I/O等待状态为0 */
uWork&=0x0fe3f;
(*WSGR)=uWork;
ADInit(); /* 初始化A/D相关设备 */
*IMR=3; /* 使能定时器中断 */
*IFR=0xffff; /* 清所有中断标志 */
asm(" clrc INTM"); /* 开中断 */
while ( 1 )
{
if ( nNewConvert ) /* 如果保存标志置位,以下开始转换和保存转换结果 */
{
nNewConvert=0; /* 清保存标志 */
uWork=(*pResult1); /* 取ADCINT0通道转换结果 */
uWork>>=6; /* 移位去掉低6位 */
nADCIn0[nADCount]=uWork;/* 保存结果 */
uWork=(*pResult2); /* 取ADCINT1通道转换结果 */
uWork>>=6; /* 移位去掉低6位 */
nADCIn1[nADCount]=uWork;/* 保存结果 */
nADCount++;
if ( nADCount>=ADCNUMBER ) /* 缓冲区满后设置指示灯闪烁 */
{
nADCount=0; /* 中断位置 */
nWork++;
if ( nWork>=16 )
{
nWork=0;
哈尔滨工业大学——DSP 原理与应用实验指导书
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-29489-80.html
中国人在汉朝就已确立一夫一妻
今天才知道可口可乐的实力这么nb降了4%还能排第三
想骚扰一下