电气工程及其自动化《单片机原理及应用》山东大学网络教育模拟题及答案
- 格式:doc
- 大小:98.50 KB
- 文档页数:19
《单片机原理及应用》除非特别声明,编程题可以使用汇编语言编写,也可以使用 C 语言编写1、分析程序的执行结果,将结果填写到空格中。
ORG 0000HMOV 30H,#50HMOV R0,#30HMOV A,@R0 ;(A= 50H )MOV A,#79HMOV B,#20H ;(A= 79H B= 20H )DIV AB ;(A= 03H B= 19H )PUSH BMOV B,#0AHMUL AB ;(A= 1EH B= 00H )POP BADD A,B ;(A= 37H B= 19H )MOV 30H,A ;(30H 单元的内容= 37H ) MOV20H,30HCLR 01H ;(20H 单元的内容= 37H )MOV A,20H ;(PSW 中P的内容= 1 )CPL ARR 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 LOOP2、将MCS51 内部RAM60H ~65H 单元存放的12 个16 进制数变为ASCII 码,放到0090H单元开始的外部RAM 中。
[使用汇编语言编写]MAIN :MOV R0,#60HMOV R2,#6MOV DPTR, #0090HHASC: 标准MOV A,@R0ANL A,#0FH ;屏蔽高四位ADD A,#0DHMOVC A,@A+PC ;查表低四位转换为ASCII 码MOVX @DPTR,A ;送如外部RAMINC DPTR MOVA,@R0ANL A,#0F0H SWAPA ADD A,#6MOVC,@A+PC ;高四位转换为ASCII 码MOVX @DPTR,AINC R0INC DPTR DJNZR2,HASCENDASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39HDB41H 42H 43H 44H 45H 46H3、某一故障检测系统,当出现故障 1 时,线路1 上出现上升沿;当出现故障 2时,线路2 上出现下降沿。
1:一个机器周期是()。
1.一条指令所执行的时间2.一段程序需要的时间3.振荡脉冲周期的12倍4.振荡脉冲周期的24倍2:在下列MCS-5l单片机各条指令中,错误的是()。
1.MOVC @A+DPTR,A2.MOV A, @R03.MOV 20H, A4.MOV B, A3:PSW中的RS1和RS0用来()。
1.指示复位2.选择定时器3.选择工作寄存器区号4.选择工作方式4:LU表示()。
1.累加器2.程序状态字寄存器3.计数器4.算术逻辑部件5:INTEL8031的P0口,当使用外部存贮存器时它是一个()。
1.传输高8位地址口2.传输低8位地址口3.传输高8位数据口4.传输低8位地址/数据口6:MCS-51汇编语言指令格式中,唯一不可缺少的部分是。
1.标号2.操作码3.操作数4.注释7:在MCS-51指令中,下列指令中()是无条件转移指令。
1.LCALL addr162.DJNZ direct,rel3.SJMP rel4.ACALL addr118:假定设置堆栈指针SP的值为37H,在进行子程序调用时把断点地址进栈保护后,SP的值为()。
1.6H2.37H3.38H4.39H9:8031单片机的定时器T1用作定时方式时是()。
1.由内部时钟频率定时,一个时钟周期加12.由内部时钟频率定时,一个机器周期加13.由外部时钟频率定时,一个时钟周期加14.由外部时钟频率定时,一个机器周期加110:在下列寄存器中,与定时/计数控制无关的是()。
1.TCON(定时控制寄存器)2.TMOD(工作方式控制寄存器)3.SCON(串行控制寄存器)4.IE(中断允许控制寄存器)11:MCS-51单片机定时器工作方式2是指的()工作方式。
1.8位2.8位自动重装3.13位4.16位12:MCS?51的串行数据缓冲器SBUF用于()。
1.存放运算中间结果2.暂存数据和地址3.存放待调试的程序4.存放待发送或已接收到的数据13:在MCS-51中()。
单片机原理及应用(山东联盟-山东师范大学)知到章节测试答案智慧树2023年最新绪论单元测试1.在家用电器中使用单片机应属于微计算机的()。
参考答案:测量、控制应用2.计算机中最常用的字符信息编码是()。
参考答案:ASCII3.51单片机PC的值是()。
参考答案:当前正在执行指令的下一条指令的地址4.在51单片机系统中,下列哪种是输出设备:参考答案:显示屏5.MCS-51 系列单片机采用的是 RISC 结构。
参考答案:错第一章测试1.MCS-51的并行I/O口读-改-写操作,是针对该口的:参考答案:内部锁存器2.当 80C51上电复位时,下列说法正确的是参考答案:PC=00H3.80C51寻址外设端口地址的方法是:参考答案:统一编址4.AT89C51 单片机有6个中断优先级。
()参考答案:错5.MCS-51 系列单片机的十进制调整指令只适用运算。
()参考答案:对第二章测试1.在编写程序的过程中,使用的语言有多种,其中C语言是计算机的()语言。
参考答案:高级语言2.在使用C语言编写80C51的程序时,定义的数据区xdata是指:参考答案:片外可寻址的64KB空间。
3.C51可直接对特殊功能寄存器区进行访问。
只要将各SFR的地址通过sfr或sfr16定义一个名字,便可通过此名字对各SFR进行操作。
参考答案:对4.在程序设计中,程序的执行顺序有顺序结构、分支结构、循环结构。
参考答案:对5.存储器类型是idata,指的是:参考答案:间接寻址的内部数据区。
第三章测试1.80C51单片机的P0口功能是:参考答案:可以作为通用输入/输出口,也作为地址/数据总线 ,接外围芯片时分时输出低8位地址及数据信号。
2.80C51P0、P1、P2、P3口读端口输入数据时,应:参考答案:相应端口先置13.80C51 P3口只能作为基本输入输出口使用。
()参考答案:错4.当MCS-51上电复位时,P3=00H。
()参考答案:错5.MCS-51 单片机的 P0 口做为 I/O 口时,需要外接上拉电阻。
长风破浪会有时,直挂云帆济沧海。
住在富人区的她吉林大学智慧树知到“电气工程及其自动化”《单片机原理及应用》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共10题)1.堆栈的使用包括()和自动方式。
A、指令方式B、公式方式C、中断方式D、都不正确正确答案:A2.MCS-51是单片机发展第二阶段的代表机型()。
A、错误B、正确正确答案:B3.程序计数器PC不能为用户编程时直接使用,因为它没有地址()。
A、错误B、正确正确答案:B4.下列的指令正确的是()。
A、CPL R5B、MOV R0,R1C、PUSH DPTRD、MOV F0,C正确答案:D5.8051单片机有()个中断源。
A、三B、四C、五D、六正确答案:C6.串行口每一次传送( )字符。
A、1B、2C、3D、4正确答案:A7.在单片机中,主要使用的串行通信是()。
A、同步通信B、异步通信C、并发通信D、都不正确正确答案:B8.12根地址线可选()个存储单元。
A、4KBB、8KBC、16KBD、32KB正确答案:A9.在串行通信中,按照数据传送方向分为3种制式单工、半双工、全双工()。
A、错误B、正确正确答案:B10.8051的P3口与P2口特点差不多()。
A、错误B、正确正确答案:A长风破浪会有时,直挂云帆济沧海。
住在富人区的她第1卷参考答案一.综合考核。
⼭东⼤学单⽚机原理与应⽤期末试卷与答案⼀、填空1、MCS51 单⽚机的控制信号线有2、MCS51 单⽚机内部RAM 的位寻址空间有位,位寻址空间对应的字节地址为,位地址为3、MCS51 单⽚机并⾏⼝P0的⽤途是P2 ⼝的⽤途是4、指令MOV P1,@R0 中两操作数的寻址⽅式分别是5、2764 为芯⽚,地址线条,可扩展K 空间,地址从0000H ⾄H6、外部中断INT1 的中断⼊⼝地址为,在同级优先级中串⾏⼝中断的优先级排在第位。
7 定时/ 计数器有四种⼯作⽅式:⽅式0 的功能为:,⽅式 1 的功能为:,⽅式2 的功能为:,⽅式3 的功能为:8、若晶振为12MHz,则⼀个机器周期为:,⼀条双字节单周期指令的执⾏时间是。
9、MCS51 单⽚机的堆栈设置在区内,堆栈的最深深度为字节。
⼆、请写出完成下列功能的指令(可⽤多条语句实现)1、将R0 内容送⼊R72、将位地址50H 内容送⼊SMOD 位3、将外部EPROM 1000H 单元内容送⼊外部RAM 3000H 单元4、⽤单条指令完成累加器ACC 清零,有⼏种⽅法。
5、设RS1=0,RS0=1,将R1 内容⼊栈三、读程序,填写执⾏结果1、MOV 40H,#36HMOV R0,#40HMOV A,@R0SETB CADDC A,#0F9H C AC F0 RS1 RS0 OV P2、MOV SP,#50HMOV DPTR,#1050HMOV A,#88HPUSH DPLPUSH DPHPUSH ACCPOP DPLPOP DPHPOP ACC3、MOV A,#40HSWAP AINC AMOVC A,@A+PCS0: AJMP S0TAB: DB 10H,11H,12H,13H,14H,15HDB 16H,17H,18H,1AH,19H,1BH四、程序设计编程序完成下列逻辑功能 F ABC ( A C) B五、甲⼄联机通信,两机晶振均为 6MHz ,甲机将内部 RAM 40H —4FH 单元数据顺序向⼄机发送,⼄机接收这 16 字节数据依次存放在内部 RAM 30H —3FH 单元中,要求波特率为 400bit/s ,串⾏⼝⼯作在⽅式 1,定时器 1 ⼯作在⽅式 2,⽤中断⽅式读取数据。
《单片机原理及应用》除非特别声明,编程题可以使用汇编语言编写,也可以使用C语言编写1、分析程序的执行结果,将结果填写到空格中。
ORG 0000HMOV 30H,#50HMOV R0,#30HMOV A,@R0 ;(A= 50H )MOV A,#79HMOV B,#20H ;(A= 79H B= 20H )DIV AB ;(A= 03H B= 19H )PUSH BMOV B,#0AHMUL AB ;(A= 1EH B= 00H )POP BADD A,B ;(A= 37H B= 19H )MOV 30H,A ;(30H单元的内容= 37H )MOV 20H,30HCLR 01H ;(20H单元的内容= 37H )MOV A,20H ;(PSW中P的内容= 1 )CPL ARR 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 LOOP2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。
[使用汇编语言编写]MAIN:MOV R0,#60HMOV R2,#6MOV DPTR, #0090HHASC:MOV A,@R0ANL A,#0FH ;屏蔽高四位ADD A,#0DHMOVC A,@A+PC ;查表低四位转换为ASCII码MOVX @DPTR,A ;送如外部RAMINC DPTRMOV A,@R0ANL A,#0F0HSWAP AADD A,#6MOVC,@A+PC ;高四位转换为ASCII码MOVX @DPTR,AINC R0INC DPTRDJNZ R2,HASCENDASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39HDB41H 42H 43H 44H 45H 46H3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿。
绪论单元测试1.在家用电器中使用单片机应属于微计算机的()。
A:测量、控制应用B:数值计算应用C:数据处理应用D:辅助设计应用答案:A2.计算机中最常用的字符信息编码是()。
A:循环码B:ASCIIC:余3码D:BCD码答案:B3.51单片机PC的值是()。
A:当前正在执行指令的前一条指令的地址B:当前正在执行指令的地址C:当前正在执行指令的下一条指令的地址D:控制器中指令寄存器的地址答案:C4.在51单片机系统中,下列哪种是输出设备:A:A/D转换器B:DS18B20传感器C:显示屏D:小键盘答案:C5.MCS-51 系列单片机采用的是 RISC 结构。
A:对B:错答案:B第一章测试1.MCS-51的并行I/O口读-改-写操作,是针对该口的:A:内部锁存器B:片选信号C:引脚D:地址信号答案:A2.当 80C51上电复位时,下列说法正确的是A:P0=00HB:SBUF=0FFHC:SP=10HD:PC=00H答案:D3.80C51寻址外设端口地址的方法是:A:动态编址B:独立编址C:混合编址D:统一编址答案:D4.AT89C51 单片机有6个中断优先级。
()A:错B:对答案:A5.MCS-51 系列单片机的十进制调整指令只适用运算。
()A:错B:对答案:B第二章测试1.在编写程序的过程中,使用的语言有多种,其中C语言是计算机的()语言。
A:机器语言B:高级语言C:低级语言D:汇编语言答案:B2.在使用C语言编写80C51的程序时,定义的数据区xdata是指:A:芯片内部可以位寻址的16个字节。
B:片外可寻址的128B空间。
C:片外可寻址的64KB空间。
D:芯片内部128个字节。
答案:C3.C51可直接对特殊功能寄存器区进行访问。
只要将各SFR的地址通过sfr或sfr16定义一个名字,便可通过此名字对各SFR进行操作。
A:错B:对答案:B4.在程序设计中,程序的执行顺序有顺序结构、分支结构、循环结构。
大连理工大学智慧树知到“电气工程及其自动化”《单片机原理及应用》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共10题)1.MCS-51单片机有()个优先级。
A.1B.2C.3D.52.等值指令EQU表示EQU两边的量等值,用于为标号或标识符赋值。
()A.正确B.错误3.静态显示占用的I/O口线较少,显示稳定可靠。
()A.正确B.错误4.立即寻址是指指令中直接给出操作数地址的寻址方式。
()A.正确B.错误5.异步通信和同步通信都属于并行通信。
()A.正确B.错误6.单片机正在向多功能、高性能、高速度、高电压、低功耗、低价格等方向发展。
()A.正确B.错误7.计数器方向控制由TIMx_CR1中的()位控制。
A.APREB.DIRC.OPMD.CEN8.若(50H)=3AH,指令“MOV A,50H”执行后,累加器A的内容为()。
A.0HB.3AHC.E5HD.E8H9.MCS-51单片机的地址总线宽度为()位。
A.4B.8C.16D.3210.以下不属于汇编语言特点的是()。
A.生成的目标程序占存储空间少、运行速度快B.效率高、实时性强C.程序的阅读和修改比较容易D.编程复杂繁琐第1卷参考答案一.综合考核1.参考答案:B2.参考答案:A3.参考答案:B4.参考答案:B5.参考答案:B6.参考答案:B7.参考答案:B8.参考答案:B9.参考答案:C10.参考答案:C。
电气工程及其自动化单片机原理及应用山东大学网络教育模拟题及答案《单片机原理及应用》1、分析程序的执行结果,将结果填写到空格中。
ORG 0000HMOV 30H,#50HMOV R0,#30HMOV A,@R0 ;(A= 50H )MOV A,#79HMOV B,#20H ;(A= 79H B= 20H )DIV AB ;(A= 03H B= 19H )PUSH BMOV B,#0AHMUL AB ;(A= 1EH B= 00H )POP BADD A,B ;(A= 37H B= 19H )MOV 30H,A ;(30H单元的内容= 37H )MOV 20H,30HCLR 01H ;(20H单元的内容= 37H )MOV A,20H ;(PSW中P的内容= 1 )CPL ARR 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 LOOP2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。
[使用汇编语言编写]MAIN:MOV R0,#60HMOV R2,#6MOV DPTR, #0090HHASC:MOV A,@R0ANL A,#0FH ;屏蔽高四位ADD A,#0DHMOVC A,@A+PC ;查表低四位转换为ASCII码MOVX @DPTR,A ;送如外部RAMINC DPTRMOV A,@R0ANL A,#0F0HSWAP AADD A,#6MOVC,@A+PC ;高四位转换为ASCII码MOVX @DPTR,AINC R0INC DPTRDJNZ R2,HASCENDASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39H DB41H 42H 43H 44H 45H 46H3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿。
湘潭大学2011年上学期2008级《单片机原理及应用》课程考试(A卷)参考解答及评分标准适用年级专业自动化_________________考试方式(闭卷)考试时间120 分钟得一、填空题(每空1分,共20分)分1. MCS-51单片机的P0-P3 口均是8位I/O 口,其中的PO 口和P2 口除了可以进行数据的输入、输出外,通常还用来构建系统的地址总线和数据总线,在PO-P3 口中,PO为真正的双向口: Pl 为准双向口: P3 口具有第二引脚功能。
2.定时器/计数器的工作方式3是指得将TO 拆成两个独立的8位计数器。
而另一个定时器/计数器此时通常只可作为波特率发生⅜⅜使用。
3.假定(SP) =40H , (3FH)=30H, (40H) =60Ho 执行下列指令:POP DPHPOP DPL后,DPTR的内容为603OH , SP的内容是一3EH .4.指令MOVX A, @DPTR,源操作数的寻址方式是寄存器间接寻址执行本条指令时产生的控制信号是」有效。
5. MCS-51单片机共有5个中断源,分别为外部中断0 , 外部中断1 , 定时能中触,定时器中断1 , 串口中断U6.在查询和中断两种数据输入输出控制方式中,CPU效率较高的是中断。
7.通过堆栈操作实现子程序调用,首先要把的内容压入堆栈,以进行断点保护。
调用返回时进行出栈操作,把保护的断点送回PC °得二、选择(每小题2分,共20分)U J ---------- 1. MCS-51的并行I/O 口读-改-写操作,是针对该口的(D )(A)引脚(B)缓冲器(C)地址线(D)内部锁存器2.假定设置堆栈指针SP的值为36H,在执行指令PUSH 20H后SP的值为(C )(D) 20H3 .若MCS-51单片机的晶振频率为6MHz,定时器/计数器作计数器使用时,其最高的 (D) 125KHz4 .在MCS —51中,需要外加电路实现中断撤除的是(D ) A)定时中断 B)脉冲方式的外部中断 O 串行中断 D)电平方式的外部中断5 .中断查询,查询的是(C )6 . MCS-51单片机堆栈是按 方向伸展的。
《单片机原理及应用》1、分析程序的执行结果,将结果填写到空格中。
ORG 0000HMOV 30H,#50HMOV R0,#30HMOV A,@R0 ;(A= 50H )MOV A,#79HMOV B,#20H ;(A= 79H B= 20H )DIV AB ;(A= 03H B= 19H )PUSH BMOV B,#0AHMUL AB ;(A= 1EH B= 00H )POP BADD A,B ;(A= 37H B= 19H )MOV 30H,A ;(30H单元的内容= 37H )MOV 20H,30HCLR 01H ;(20H单元的内容= 37H )MOV A,20H ;(PSW中P的内容= 1 )CPL ARR 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 LOOP2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。
[使用汇编语言编写]MAIN:MOV R0,#60HMOV R2,#6MOV DPTR, #0090HHASC:MOV A,@R0ANL A,#0FH ;屏蔽高四位ADD A,#0DHMOVC A,@A+PC ;查表低四位转换为ASCII码MOVX @DPTR,A ;送如外部RAMINC DPTRMOV A,@R0ANL A,#0F0HSWAP AADD A,#6MOVC,@A+PC ;高四位转换为ASCII码MOVX @DPTR,AINC R0INC DPTRDJNZ R2,HASCENDASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39HDB41H 42H 43H 44H 45H 46H3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿。
没有故障时,线路1为低电平,线路2为高电平。
出现故障时,相应的指示灯变亮。
故障消失后,指示灯熄灭。
试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。
4、用MSC1211的T0定时/计数器,设计程序,实现在P1.0输出周期为200ms的占空比为1:1的方波,输出500个方波后停止输出。
解:ORG 0000HLJMP MAINORG 000BH ;T0口中断服务程序入口地址LJMP INT_T0MAIN:MOV TMOD,#00H ;T0工作于方式0定时MOV TL0,#0CHMOV TH0,#1EH ;设定秒中断周期为1msMOV A,200 ;设定输出周期为200 msMOV R2,1000 ;输出500个方波SETB TR0SETB ET0SETB EASETB P1.0SJMP $INT_T0:MOV TL0,#0CHMOV TH0,#1EH ;T0重装时间常数CPL P1.0 P1.0位取反DEC R2JZ ENDP ;若R2为0,则结束程序,否则返主程序继续输出RETI ;返主程序ENDP:END5、利用MSC1211的A/D构成数据采集系统。
使用模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。
写出完整的程序清单(应在适当的地方加程序注释)。
解:#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;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;//打开ADCACLK=9;//模拟采样频率ADMUX=0;//使用通道0ADCON0=0x30;//内部基准2.5V,缓冲器关,BOD关,PGA=0ADCON1=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转换后同步输出(均使用电压输出模式)。
试编写程序实现。
解:include<Reg1211.h>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;}}}7、利用MSC1211或8051设计应答方式下的多机通讯程序。
通讯参数:晶振为11.0592MHz,9600,n,8,1。
通讯过程如下:主机首先发送从机地址,从机收到地址后进行比较,如果地址相符,则将从机地址回发给主机作为应答信号。
主机收到从机的地址应答信号后,将内存单元中的120个数据发送给从机,并进行数据块校验(将各个数据进行异或),若校验正确,则从机发送00H给主机,否则发送0FFH给主机,主机重新发送数据。
(应在适当的地方加程序注释)解:主机程序如下:ORG 0000HLJMP MAINT ;跳至主程序入口地址ORG 0023H ;串行口中断服务程序入口LJMP INTSTMAINT:MOV SCON,#90H ;置工作方式2,并允许接收MOV TMOD,#20H ;置T1工作方式2MOV TH1,#0FDHMOV TL1,#0FDHMOV DPTR,#ADDR ;设置数据块首址ADDR的地址指针MOV R0,#120 ;设置发送字节数MOV R1,#00H ;设置校验和的初值MOV R2,#NAMESETB TB8 ;置位TB8位,作为发送地址桢信息特征SETB TR1SETB EA ;CPU开中断SETB ES ;允许串行口中断MOV A,R2 ;发送地址桢信息MOV SBUF,ASJMP $;中断服务程序INTST: MOV A,TB8 ;判断是发送地址还是数据,若为数据则转LOOP0 CJNE A,01H,LOOP0CLR TI ;地址桢信息发送完后清发送中断LOOP0:JB RI,LOOP1 ;检查是否是接受中断?若RI=1则转入接受乙机发送应答信息CLR TI ;因RI=0,表明是甲机发送中断数据的中断请求。
CPU响应中断,在中断服务程序中应清中断标志MOV A,TB8;CJNE A,#01H,LOO3 ;若为发送数据中断则转LOOP3继续发送数据LJMP ENDT ;甲机发送一数据完毕跳至中断返回程序LOOP1:CLR RI ;清接受中断标志MOV A,TB8 ;判断是发送地址还是数据,若为数据则转LOOP2CJNE A,#01H,LOOP4;若TB8为0则接受的为乙机数据校验应答MOV A,SBUF ;取乙机的应答数据CJNE A,@R2,LOOP2 ;若乙机应答信息不是从机地址,则地址传送不正确,则转LOOP2程序重新发送地址信息,否则清TB8,发送数据CLR TB8LOOP3:MOVX A,@DPTR ;取下一个数MOV SBUF,A ;启动串行口,发送新的数据XRL A,@R1MOV @R1,AINC DPTR ;修改地址指针DEC R0 ;修改发送字节数记数值CJNE R0,#00H,ENDT ;判别120个字节数据都发送完没有。
如果没有发送完则跳至中断返回程序。
继续发送MOV A,@R1MOV SBUF,A ;数据全部发送完毕则发送校验和LJMP ENDTLOOP4:MOV A,SBUF ;取乙机的应答数据CJNE A,#00H,LOOP5 ;若数据发送不正确,则转LOOP5重新发送CLR ES ;全部发送完毕,禁止串行口中断LOOP5:MOV DPTR,#ADDR ;设置数据块首址ADDR的地址指针MOV R0,#120 ;设置发送字节数MOV R1,#00H ;设置校验和的初值LJMP LOOP2LOOP2:MOV A,R2 ;发送地址桢信息MOV SBUF,ARETIENDT: RETIEND从机程序如下:ORG 0000HLJMP MAINR ;跳至主程序入口地址ORG 0023H ;串行口中断服务程序入口LJMP INTSRMAINR:MOV SCON,#0B0H ;置工作方式2,并允许接收MOV TMOD,#20H ;置T1工作方式2MOV TH1,#0FDHMOV TL1,#0FDHMOV DPTR,#ADDR ;设置数据块接收首址为ADDRMOV R0,#120 ;设置接收字节数MOV R2,#NAMEMOV R1,#00H ;设置校验和的初值SETB RB8 ;置位RB8位,作为接受地址信息特征SETB TR1SETB EA ;CPU开中断SETB ES ;允许串行口中断SJMP $;中断服务程序INTSR: MOV A, RB8 ;判断是接收地址还是数据,若为数据则转LOOP0CJNE A,01H,LOOP0CLR RI ;地址桢信息接受完后清接收中断MOV A,SBUFXRL A,@R2JZ LOOP ;若地址相符则转LOOP,否则中断返回LJMP ENDRLOOP:CLR SM2CLR RB8MOV A,@R2MOV SBUF,A ;想主机发送从机地址LJMP ENDRLOOP0:JB RI,LOOP1 ;检查是否是接受中断?若RI=1则转入接受甲机发送的数据CLR TI ;因RI=0,表明是乙机发送中断数据的中断请求。