目录实验一系统认识实验 (2)实验二多字节加、减运算实验 (3)实验三多字节乘、除法运算实验 (4)实验四代码转换实验 (5)实验五布尔操作实验 (6)实验六中断系统实验 (7)实验七定时器/计数器实验 (9)实验八串行通讯接口实验 (12)实验九串并转换实验 (16)实验十存储器扩展实验 (18)实验十一8155键盘及显示接口实验 (20)实验十二ADC0809(模/数转换) (24)实验十三 DAC0832(数/模转换) (26)实验十四步进电机实验 (29)实验十五直流电机调速控制实验 (32)附录Windows版Wmd51 3.0使用说明 (34)实验一系统认识实验一.实验目的和要求1.学习和掌握本实验系统的基本操作;2.总结汇编程序的形成和调试过程;3.掌握循环程序的设计;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.软件延时若系统时钟为6MHZ,要求实现每隔250毫秒将P1.0口取反。
2.无符号数加法计算N个数据的和,即Y=∑Xi (i=1--6)。
若六个数据放在片内RAM的50H——55H地址单元中,求和的结果Y放在内部RAM的03H(高位)、04H (低位)地址单元中。
1).32H+41H+01H+56H+11H+03H2).95H+01H+02H+44H+48H+12H3).54H+0F6H+1BH+20H+04H+0C1H3.数据排序将内部RAM地址单元30H—3FH中的16个数据按小到大的顺序重新排序。
实验二多字节加、减运算实验一.实验目的和要求1.掌握多字节数的加、减法运算;2.进一步熟悉实验系统的使用方法;3.进一步熟悉汇编程序的调试过程;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.多字节无符号数的加法2.多字节无符号数减法入口:被减数低字节地址在R0,减数低字节数地址在R1,字节数在R2;出口:差的低字节地址在R0。
字节数在R3。
3.多字节十进制BCD码减法入口:被减数低字节地址在R1,减数低字节地址在R0,字节数在R2。
出口:差(补码)的低字节地址在R0,字节数在R3(07H为符号位。
“0”为正,“1”为负)。
实验三多字节乘、除法运算实验一.实验目的和要求1.掌握多字节数的乘、除法运算;2.进一步熟悉MCS-51指令,了解编程方法;3.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.多字节无符号数乘法入口:被乘数低字节地址在R3,乘数低字节地址在R4,字节数在R5;出口:积低字节地址在R6,字节数在R2。
2.多字节无符号BCD码数除法入口: 30H为被除数低字节地址,40H为除数低字节地址,R3存字节数;出口:50H为商低字节地址,30H为余数低字节地址,74H存商字节数;实验四代码转换实验一.实验目的和要求1.熟悉不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解;2.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.BCD码转十进制将累加器A中的8位二进制数转换成3位BCD码格式的十进制。
其中,百位数的BCD码放在21H单元中,十位和个位数放在22H单元中。
2.将累加器A中存放的两个BCD码拆开,求它们的乘积,并把乘积以压缩的BCD码形式送回A中。
实验五布尔操作实验一.实验目的和要求1.熟悉MCS-51指令,了解编程方法;2.掌握布尔指令的使用方法;3.了解8051位寻址的地址划分方法;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容编程实现存放在位地址单元里的两个数进行异或运算,运算的结果放在位地址为02H的单元。
实验六中断系统实验一.实验目的和要求1.掌握单片机中断的原理及使用方法;2.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.通过定时器T1来产生中断控制P1.0线上的脉冲输出,并经三极管驱动扬声器,发出音调信号。
2.实验线路连接示意图ORG 0000HLJMP MAINORG 001BHCPL P1.0RETIORG 1000HMAIN: MOV R1,#00MOV R0,#23HMOV TMOD,#20HMOV IE,#88HL1: MOV DPTR,#3FFFHMOV A,R0INC R0MOVC A,@A+PCJZ MAINMOV R2,AMOV A,#0FFHCLR CSUBB A,R2RL AMOV TH1,ASETB TR1L2: CLR CMOV A,DPLSUBB A,#01MOV DPL,AMOV A,DPHSUBB A,#00MOV DPH,AORL A,DPLJNZ L2CLR TR1SJMP L1DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33HDB 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45HDB 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26HDB 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39HDB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DH DB 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26HDB 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45HDB 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DHDB 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39HDB 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00H, 00HEND实验七定时器/计数器实验一.实验目的和要求1.掌握定时器/计数器的定时方法;2.掌握定时器/计数器的计数方法;3.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.设定两个定时器/计数器工作都为定时模式0,分别控制从P1.0和P1.2发出一个方波,用示波器测量其周期。
2.将定时器/计数器T1设定为计数器工作模式,计数容量为10,计数到后产生中断,中断服务产生一个方波由P1.1输出(计数脉冲由T1输入)。
实验线路连接示意图:ORG 0000HLJMP MAINORG 000BHCPL P1.1MOV TH0,#0F8HMOV TL0,#06HRETIORG 001BHCPL P1.2MOV TH1,#0F8HMOV TL1,#06HRETIORG 1000H MAIN: MOV TH0,#0F8H MOV TL0,#06H MOV TH1,#0F8H MOV TL1,#06H MOV TMOD,#00H MOV TCON,#50H MOV IE,#8AHL1: SJMP L1END3.测量脉冲的宽度。
设定定时器/计数器T1以模式1方式工作、外部中断INT1下降沿中断,测量INT1端的脉冲宽度。
实验线路连接示意图:实验八串行通讯接口实验一.实验目的和要求1.掌握8031单片机串行口的工作方式;2.画出程序流程图,编制程序并上机调试通过。
二.实验内容分别采用查询和中断的不同工作方式,按照自发自收的连接方式(将8031的TXD 和RXD连接起来),把内部RAM的30H-3FH中的数据通过串行口发出,再通过串行口接收,存放在内部RAM的40H-4FH单元中。
实验程序如下:;查询串行传输方式SUART1.ASM;本程序是将内部RAM30H~3AH单元中的数据转存到内部RAM40H~4AH单元;ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60HMOV 30H,#00H ;设置要发送的数据MOV 31H,#11HMOV 32H,#22HMOV 33H,#33HMOV 34H,#44HMOV 35H,#55HMOV 36H,#66HMOV 37H,#77HMOV 38H,#88HMOV 39H,#99HMOV 3AH,#0AAHMOV 3BH,#0BBHMOV 3CH,#0CCHMOV 3DH,#0DDHMOV 3EH,#0EEHMOV 3FH,#0FFHMOV SCON,#50H ;串行口工作于方式1(0101 0000 B),即十位异步收发方式,;允许接收MOV TMOD,#20H ;T1工作于方式2,作为波特率发生器波特率=2SMOD/32 X T1 MOV TH1,#0F3H ;自动再装载数据MOV TL1,#0F3H ;加1计数器MOV 87H,#80H ;设定PCON波特率加倍MOV R2,#00H ;设置发送数据计数器MOV R0,#30H ;设置发送数据首地址MOV R1,#40H ;设置接收数据首地址SETB TR1 ;启动波特率发生器SEND: MOV A,@R0 ;取发送数据MOV SBUF,A ;启动发送SEND1:JBC TI,NEXT1 ;判TI位变量并清零TI,数据发送完毕则转NEXT1SJMP SEND1NEXT1:JBC RI,NEXT2 ;判RI位变量并清零RI,一个数据接收完毕则转NEXT2 SJMP NEXT1NEXT2:MOV A,SBUF ;读取数据GOOD: MOV @R1,A;INC R0 ;指向下一个发送数据存储单元INC R1 ;指向下一个接收数据存储单元INC R2 ;计数器加1CJNE R2,#10H,SEND;十六个数据发送完毕吗?未完转SEND继续SJMP $END;中断串行传输方式--自发自收SUART2.ASM;本程序是将内部RAM30H~3AH单元中的数据转存到内部RAM40H~4AH单元;;主程序ORG 0000HLJMP MAINORG 0023HLJMP L4ORG 0100HMAIN:MOV SP,#60H ;设置堆栈MOV 30H,#0CCH ;初始化数据MOV 31H,#11HMOV 32H,#22HMOV 33H,#33HMOV 34H,#44HMOV 35H,#55HMOV 36H,#66HMOV 37H,#77HMOV 38H,#88HMOV 39H,#99HMOV 3AH,#0AAHMOV 3BH,#0BBHMOV 3CH,#0CCHMOV 3DH,#0DDHMOV 3EH,#0EEHMOV 3FH,#0FFHMOV SCON,#50H ;设置串行口为方式1,允许接收MOV TMOD,#20H ;波特率发生器为方式2MOV TH1,#72H ;计数重装值MOV TL1,#72H ;计数初值MOV 87H,#00 ;PCON中的SCON=0SETB TR1 ;启动计数SETB EA ;开放中断SETB ESMOV R1,#30H ;发送数据首地址MOV SBUF,@R1 ;启动发送INC R1 ;指向下一单元MOV R0,#40H ;设置接收首地址L1: SJMP L1 ;L2: MOV A,SBUFCLR RIMOV @R0,AINC R0CJNE R0,#50H,L3CLR ESRETIL3: MOV SBUF,@R1 INC R1RETI;;中断服务程序;L4: JNB SBUF,L2 CLR TIRETIEND实验九串并转换实验一.实验目的和要求3.掌握串行口扩展I/O的方法4.掌握串行口模式的使用方法5.画出程序流程图,编制程序并上机调试通过。