电气工程及其自动化《单片机原理及应用》山东大学网络教育模拟题及答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理及应用》

1、分析程序的执行结果,将结果填写到空格中。

ORG 0000H

MOV 30H,#50H

MOV R0,#30H

MOV A,@R0 ;(A= 50H )

MOV A,#79H

MOV B,#20H ;(A= 79H B= 20H )

DIV AB ;(A= 03H B= 19H )

PUSH B

MOV B,#0AH

MUL AB ;(A= 1EH B= 00H )

POP B

ADD A,B ;(A= 37H B= 19H )

MOV 30H,A ;(30H单元的内容= 37H )

MOV 20H,30H

CLR 01H ;(20H单元的内容= 37H )

MOV A,20H ;(PSW中P的内容= 1 )

CPL A

RR A ;( PSW中C的内容= 0 )

SWAP A ;(A= 46H )

ADDC A,#0F0H ;(A= 36H )

;(PSW中P的内容= 0 )

;( PSW中C的内容= 1 )

RL A ;(A= 6CH )

;(PSW中P的内容= 0 )

;( PSW中C的内容= 0 ) LOOP: AJMP LOOP

2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,

放到0090H单元开始的外部RAM中。[使用汇编语言编写]

MAIN:

MOV R0,#60H

MOV R2,#6

MOV DPTR, #0090H

HASC:

MOV A,@R0

ANL A,#0FH ;屏蔽高四位

ADD A,#0DH

MOVC A,@A+PC ;查表低四位转换为ASCII码

MOVX @DPTR,A ;送如外部RAM

INC DPTR

MOV A,@R0

ANL A,#0F0H

SWAP A

ADD A,#6

MOVC,@A+PC ;高四位转换为ASCII码

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R2,HASC

END

ASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39H

DB41H 42H 43H 44H 45H 46H

3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2

时,线路2上出现下降沿。没有故障时,线路1为低电平,线路2为高电平。

出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。

4、用MSC1211的T0定时/计数器,设计程序,实现在P1.0输出周期为200ms

的占空比为1:1的方波,输出500个方波后停止输出。

解:ORG 0000H

LJMP MAIN

ORG 000BH ;T0口中断服务程序入口地址

LJMP INT_T0

MAIN:MOV TMOD,#00H ;T0工作于方式0定时

MOV TL0,#0CH

MOV TH0,#1EH ;设定秒中断周期为1ms

MOV A,200 ;设定输出周期为200 ms

MOV R2,1000 ;输出500个方波

SETB TR0

SETB ET0

SETB EA

SETB P1.0

SJMP $

INT_T0:MOV TL0,#0CH

MOV TH0,#1EH ;T0重装时间常数

CPL P1.0 P1.0位取反

DEC R2

JZ ENDP ;若R2为0,则结束程序,否则返主程序继续输出

RETI ;返主程序

ENDP:END

5、利用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//中断服务程序

{

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))

{

dummy=ADRESL;

}

SSCON=0;//清除求和寄存器

EAI=1;

While(1);

}

}

6、变量k从0变到150,变化步长为10。对于每一个值,使用整形数算术运算

计算8*k,k*k*k和(40*k/150)^3。这三个值通过MSC1211的D/A转换后同

相关文档
最新文档