单片机原理及应用模拟题1(2)

2020-03-27 02:18

SETB TR1 SETB ES SETB EA SJMP $ S_S: PUSH ACC JNB RI,$ CLR RI JNB RB8,D_COMN MOV A,SBUF CJNE A,#0FFH,S_ADDR SETB SM2 CLR 7FH SJMP S_RET S_ADDR: CJNE A,#01H,S_RET MOV SBUF,A CLR SM2 AJMP S_RET D_COMN: MOV A,SBUF MOV @R0,A INC R0 DJNZ R7,S_RET; 判断接收是否完毕 SETB SM2 S_RET: POP ACC RETI END

6、利用MSC1211的A/D构成数据采集系统。使用模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(应在适当的地方加程序注释)。 解:#include

#include

extern void autobaud(void);//声明外部函数 extern void bipolar(void);

float a[100]={0},w[8]={0};int out=0;long result,temp;int j; int AUXinterrupts(void)interrupt6 using1//中断服务程序

- 6 -

{

if(PAI==6) //处理AD中断 {

w[out++]=bipolar();

temp=w[out]; SUMR0=temp&0xff; SUMR1=(temp>>8)&0xff; SUMR2=(temp>>16)&0xff; SUMR3=(temp>>24)&0xff; if(out==8) {

SUM=SUMR3<<24+SUMR2<<16+SUMR1<<8+SUMR0; } SUM/=8; a[j++]=SUM; if(j>=100) {j=0;} }

}

min(void) { float dummy; int decimation; decimationg=1440;//抽取因子 PDCON&=0x77;//打开ADC ACLK=9;//模拟采样频率

ADMUX=0;//使用通道0

ADCON0=0x30;//内部基准2.5V,缓冲器关,BOD关,PGA=0 ADCON1=0x01;//双极性,自动稳定模式,偏移增益自校准 ADCON2=decimation&0xff;//写入抽取因子低字节

ADCON3=(decimation>>8)&0x07;//写入抽取因子高字节 AIE=&0x20; autobaud(); //等待校准 for(i=0;i<4;i++) { while(!(AIE&0X20))

{

- 7 -

}

}

dummy=ADRESL; }

SSCON=0;//清除求和寄存器 EAI=1; While(1);

7、变量k从0变到150,变化步长为10。对于每一个值,使用整形数算术运算计算8*k,k*k*k和(40*k/150)^3。这三个值通过MSC1211的D/A转换后同步输出(均使用电压输出模式)。试编写程序实现。

解:include

data unsigned int k,j,i; void main(void) { PDCON&=~0X48; ADCON0=0X30; DACSEL=6; DACSEL=4; DACL=0X24; DACSEL=5;

DACH=0x24; while(1) { DACSEL=0;DAC=0x8000; for(j=0;j<100;j++) DAC=0; for(k=0;k<151;k+=10) { DACSEL=1;DAC=8*k; DACSEL=2;DAC=k*k*k; DACSEL=3;i=40*k/150;DAC=i*i*i; DACSEL=6;DACL=0Xfc;

} } }

- 8 -


单片机原理及应用模拟题1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:物理化学课后习题答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: