《单片机原理及应用》
除非特别声明,编程题可以使用汇编语言编写,也可以使用C语言编写
1、分析程序的执行结果,将结果填写到空格中。
ORG0000H
MOV30H50H
MOVR030H
MOVAR0
A50H
MOVA79H
MOVB20H
A79HB20H
DIVAB
A03HB19H
PUSHB
MOVB0AH
MULAB
A1EHB00H
POPB
ADDAB
A37HB19H
MOV30HA
30H单元的内容37H
MOV20H30H
CLR01H
20H单元的内容37H
MOVA20H
PSW中P的内容1
CPLA
RRA
PSW中C的内容0
SWAPA
A46H
ADDCA0F0H
A36H
PSW中P的内容0
PSW中C的内容1
RLA
A6CH
PSW中P的内容0
PSW中C的内容0
LOOPAJMPLOOP
2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。使用汇编语言编写
MAIN:MOVR060HMOVR26MOVDPTR0090H
HASC
fMOVAR0
ANLA0FH
;屏蔽高四位
ADDA0DH
MOVCAAPC
查表低四位转换为ASCII码
MOVXDPTRA;送如外部RAM
INCDPTR
MOVAR0
ANLA0F0H
SWAPA
ADDA6
MOVCAPC高四位转换为ASCII码
MOVXDPTRA
INCR0
INCDPTR
DJNZR2HASC
END
ASCTABDB30H31H32H33H34H35H36H37H38H39H
DB41H42H43H44H45H46H
3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿。没有故障时,线路1为低电平,线路2为高电平。出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。
4、用MSC1211的T0定时计数器,设计程序,实现在P10输出周期为200ms的占空比为11的方波,输出500个方波后停止输出。
解:ORG
0000H
LJMPMAIN
ORG
000BH;T0口中断服务程序入口地址
LJMPINT_T0
MAIN:MOVTMOD,00H;T0工作于方式0定时
MOVTL0,0CH
MOVTH0,1EH;设定秒中断周期为1ms
MOVA,200;设定输出周期为200ms
MOVR2,1000;输出500个方波
SETBTR0
fSETBSETBSETBSJMPINT_T0:MOVMOVCPLDECJZRETIENDP:END
ET0EAP10TL0,0CHTH0,1EH;T0重装时间常数P10P10位取反R2ENDP;若R2为0,则结束程序,否则返主程序继续输出;返主程序
5、利用MSC1211的AD构成数据采集系统。使用模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(应在适当的地方加程序注释)。
解:i
cludeREG1211H
i
cludestdioh
exter
voidautobaudvoid声明外部函数
exter
voidbipolarvoid
floata1000w80i
tout0lo
gresulttempi
tj
i
tAUXi
terruptsr