电气工程及其自动化《单片机原理及应用》模拟题及答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机原理及应用》
1、分析程序的执行结果,将结果填写到空格中。
ORG0000H
MOV30H,#50H
MOVR0,#30H
MOVA,@R0;(A= 50H )
MOVA,#79H
MOVB,#20H;(A= 79H B= 20H )
DIVAB;(A= 03H B= 19H )
PUSHB
MOVB,#0AH
SETBTR0
SETBET0
SETBEA
SETBP1.0
SJMP$
INT_T0:MOVTL0,#0CH
MOVTH0,#1EH;T0重装时间常数
CPLP1.0P1.0位取反
DECR2
JZENDP;若R2为0,则结束程序,否则返主程序继续输出
RETI;返主程序
ENDP:END
5、利用MSC1211的A/D构成数据采集系统。使用模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(应在适当的地方加程序注释)。
{
PDCON&=~0X48;
ADCON0=0X30;
DACSEL=6;
DACSEL=4;
DACL=0X24;
DACSEБайду номын сангаас=5;
DACH=0x24;
while(1)
{
DACSEL=0;DAC=0x8000;
for(j=0;j<100;j++)
DAC=0;
for(k=0;k<151;k+=10)
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:DB30H 31H 32H 33H 34 H 35H36H37H 38H 39H
DB41H 42H 43H 44H 45H 46H
6、变量k从0变到150,变化步长为10。对于每一个值,使用整形数算术运算计算8*k,k*k*k和(40*k/150)^3。这三个值通过MSC1211的D/A转换后同步输出(均使用电压输出模式)。试编写程序实现。
解:include<Reg1211.h>
data unsignedint k,j,i;
void main(void)
ADCON3=(decimation>>8)&0x07;//写入抽取因子高字节
AIE=&0x20;
autobaud();
//等待校准
for(i=0;i<4;i++)
{
while(!(AIE&0X20))
{
dummy=ADRESL;
}
SSCON=0;//清除求和寄存器
EAI=1;
While(1);
}
}
解:#include<REG1211.H>
#include<stdio.h>
extern void autobaud(void);//声明外部函数
extern void bipolar(void);
float a[100]={0},w[8]={0};int out=0;long result,temp;int j;
3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿。没有故障时,线路1为低电平,线路2为高电平。出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。
4、用MSC1211的T0定时/计数器,设计程序,实现在P1.0输出周期为200ms的占空比为1:1的方波,输出500个方波后停止输出。
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;//抽取因子
解:ORG0000H
LJMPMAIN
ORG000BH;T0口中断服务程序入口地址
LJMPINT_T0
MAIN:MOVTMOD,#00H;T0工作于方式0定时
MOVTL0,#0CH
MOVTH0,#1EH;设定秒中断周期为1ms
MOVA,200;设定输出周期为200 ms
MOVR2,1000;输出500个方波
PDCON&=0x77;//打开ADC
ACLK=9;//模拟采样频率
ADMUX=0;//使用通道0
ADCON0=0x30;//内部基准2.5V,缓冲器关,BOD关,PGA=0
ADCON1=0x01;//双极性,自动稳定模式,偏移增益自校准
ADCON2=decimation&0xff;//写入抽取因子低字节
MULAB;(A= 1EH B= 00H )
POPB
ADDA,B;(A= 37H B= 19H )
MOV30H,A;(30H单元的内容= 37H )
MOV20H,30H
CLR01H;(20H单元的内容= 37H )
MOVA,20H;(PSW中P的内容= 1 )
CPLA
RRA;( PSW中C的内容= 0 )
SWAPA;(A= 46H )
ADDCA,#0F0H;(A= 36H )
;(PSW中P的内容= 0 )
;( PSW中C的内容= 1 )
RLA;(A= 6CH )
;(PSW中P的内容= 0 )
;( PSW中C的内容= 0 )
LOOP:AJMPLOOP
2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。[使用汇编语言编写]
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;
相关文档
最新文档