机电一体化《单片机原理与应用》山东大学网络教育考试模拟题与问题详解

合集下载

单片机原理与应用模拟考试题(附参考答案)

单片机原理与应用模拟考试题(附参考答案)

单片机原理与应用模拟考试题(附参考答案)一、单选题(共60题,每题1分,共60分)1、下列指令能使P1口的最低位置1的是( )。

A、ANL P1,#80HB、SETB 90HC、ORL P1,#0FFHD、ORL P1,#80H正确答案:B2、在中断服务程序中,至少应有一条( )。

A、加法指法B、传送指令C、中断返回指令D、转移指令正确答案:C3、MCS-51单片机的中断源全部编程为同级时,优先级最高的是( )。

A、/INT1B、TIC、串行接口D、/INT0正确答案:D4、MCS-51单片机CPU开中断的指令是( )。

A、SETB EAB、SETB ESC、CLR EAD、SETB EX0正确答案:A5、在MCS-51单片机指令中,下列指令中( )是无条件转移指令。

A、LCALL addr16B、DJNZ direct,relC、SJMP relD、ACALL addr11正确答案:C6、用8051单片机的定时器/计数器T1作定时方式,用方式2,则初始化编程为( )。

A、TMOD=0x06B、TMOD=0x20C、TMOD=0x10D、TMOD=0x60正确答案:B7、若单片机的振荡频率为6MHz,设定时器/计数器工作在方式1需要定时1ms,则定时器/计数器初值应为( )。

A、500B、1000C、216-500D、216-1000正确答案:C8、Intel 8051单片机的CPU是( )。

A、16位B、4位C、8位D、准16位正确答案:C9、指令JB 0E0H,LP 中的0E0H是指( )。

A、累加器AB、累加器A的最高位C、累加器A的最低位D、一个单元的地址正确答案:C10、访问外部存储器或其它接口芯片时,作数据线和低8位地址线的是( )。

A、P1口B、P0口和 P2口C、P0口D、P2口正确答案:C11、单片机上电复位后,PC的内容和SP的内容为( )。

A、0000H,00HB、0000H,07HC、0003H,07HD、0800H,08H正确答案:B12、若要定时100ms(系统时钟频率为6MHz),则使用定时器/计数器的( )更合适。

单片机原理及应用(山东联盟-山东师范大学)知到章节答案智慧树2023年

单片机原理及应用(山东联盟-山东师范大学)知到章节答案智慧树2023年

单片机原理及应用(山东联盟-山东师范大学)知到章节测试答案智慧树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、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上出现下降沿。

单片机原理及应用模拟练习题含参考答案

单片机原理及应用模拟练习题含参考答案

单片机原理及应用模拟练习题含参考答案一、单选题(共100题,每题1分,共100分)1.在微型计算机中,负数常用()表示。

A、真值B、反码C、原码D、补码正确答案:D2.89C51单片机内有两个()位定时/计数器,它们都有定时和事件计数的功能。

A、4B、8C、16D、32正确答案:C3.M1M0=11时,定时器工作于方式()A、1B、3C、0D、2正确答案:B4.2字节为()位。

A、4B、32C、16D、8正确答案:C5.共阳极LED数码管显示字符“5”的显示码是()。

A、0x06B、0x7dC、0x82D、0x92正确答案:D6.下面哪一种传送方式适用于处理外部事件()A、DMAB、无条件传递进C、C05-中断D、条件传递正确答案:C7.在程序中a=2;b=a++;则b=()A、2B、4C、1D、3正确答案:A8.下面哪一项不是按照数据传送方向的进行的串行通信的分类()A、手动B、全双工C、单工D、半双工正确答案:A9.89C51单片机的数据指针DPTR是一个16位的专用地址指针寄存器,主要用来()A、存放指令B、存放16位地址,作间址寄存器使用C、存放下一条指令地址D、存放上一条指令地址正确答案:B10.行列式键盘的工作方式主要有()A、直接输入方式和直接访问方式B、中断扫描方式和直接访问方式C、编程扫描方式和中断方式D、独立查询方式和中断扫描方式正确答案:C11.SMOSM1=00时,串行口的工作状态为()A、0B、2C、3D、1正确答案:A12.蜂鸣器的声音强度由信号的()决定A、幅值B、电压C、频率D、占空比正确答案:D13.单片机的计数定时器为()和()A、TO,T1B、INT0,INT1C、INT0,T0D、INT1,T1正确答案:A14.定时计数器有4种操作模式,它们由()寄存器中的M1M0状态决定。

A、TCONB、TMODC、PCONDD、SCONE正确答案:B15.要89C51系统中,若晶振频率屡8MHz,一个机器周期等于()微秒A、1.5B、3C、1D、0.5正确答案:A16.设a=2,b=1,则a==b等于()A、2B、1C、3D、0正确答案:D17.定时器工作方式一的计数最大值是()A、200B、5000C、65536D、300正确答案:C18.TMOD寄存器的作用是()A、设置工作方式B、控制启动和中断申请C、计数D、计时正确答案:A19.计算机中最常用的字符信息编码是()A、ASCIIB、BCD码C、余3码D、循环码正确答案:A20.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为()A、64536B、500C、1000D、65036正确答案:D21.中断服务子程序interrupt 1{...}表示使用中断源()A、T0B、T1C、INT1D、INT0正确答案:A22.按键需要处理()问题A、死机B、飞键C、抖动D、颤动正确答案:C23.当8051单片机的RST引脚,上出现持续()个振荡周期以上的高电平时,系统复位。

单片机原理及应用模考试题与参考答案

单片机原理及应用模考试题与参考答案

单片机原理及应用模考试题与参考答案一、单选题(共54题,每题1分,共54分)1.当(IP)=04H时,优先级最高的中断源是():A、外部中断0B、定时计数器0C、外部中断1D、定时计数器1正确答案:C2.MSS-51单片机的PIO引脚有():A、32根B、24根C、44根D、40根正确答案:A3.3D.0AH转换成二进制数是()。

A、111101.0000101BB、111100.0000101BC、111101.101BD、111100.101B正确答案:A4.若要用T1方式2进行重复计数,TMOD应设置为():A、70HB、60HC、20HD、10H正确答案:B5.位寻址区的地址是():A、20H~2FHB、30H~7FHC、00H~07HD、08H~1FH正确答案:A6.波特的单位是()A、帧/秒B、字节/秒C、字符/秒D、位/秒正确答案:D7.若(A)=50H,(B)=A0H,执行MULAB后,(A)=(B)=A、(A)=02H(B)=33HB、(A)=00H(B)=33HC、(A)=02H(B)=32HD、(A)=00H(B)=32H正确答案:D8.能将A的内容向左循环移一位,第七位进第0位的指令是()。

A、RLCAB、RRCAC、RRAD、RLA正确答案:D9.以下不属于8051单片机的控制引脚的是():A、RSTB、ALEC、/PSEND、XTAL1正确答案:D10.下列指令能能使累加器A的最高位置1的是()。

A、ANLA,#7FHB、ANLA,#80HC、ORLA,#7FHD、ORLA,#80H正确答案:D11.若(SP)=40H,当执行一条LCALL指令后,SP的值为():A、41HB、42HC、38HD、3FH正确答案:B12.ALU表示()。

A、累加器B、程序状态字寄存器C、计数器D、算术逻辑部件正确答案:D13.CY(PSW.7)的定义是()A、进位标志位B、辅助进位标志位C、用户标志位D、寄存器组选择位E、溢出标志位F、奇偶标志位正确答案:A14.已知(A)=59H,(PSW)=80H,执行指令ADDCA,#4CH后CY和AC的内容为():A、0,1B、1,1C、0,0D、1,0正确答案:A15.单片机8051的XTAL1和XTAL2引脚是()引脚。

单片机原理及应用模拟题及参考答案

单片机原理及应用模拟题及参考答案

单片机原理及应用模拟题及参考答案一、单选题(共30题,每题1分,共30分)1、(A)=3BH,执行ANL A,#9EH指令后,(A)= ()A、1AHB、2AHC、3AHD、4AH正确答案:A2、MCS-51指令系统中,执行下列程序后,程序计数器PC的内容为(H)。

ORG 0000H MOV DPDR,#1000 MOV A,#00H MOV 20H,A LJMP 1500 ENDA、100B、1000C、1500D、0正确答案:C3、已知(A)=59H,(PSW)=80H,执行指令ADDC A,#4CH后CY和AC的内容为():A、0,1B、1,1C、0,0D、1,0正确答案:A4、DIV AB 是()A、数据传送指令B、算术运算指令C、逻辑运算指令D、控制转移指令E、位操作指令正确答案:B5、单片机应用程序一般存放在()。

A、RAMB、ROMC、寄存器D、CPU正确答案:B6、AC(PSW.6)的定义是()A、进位标志位B、辅助进位标志位C、用户标志位D、寄存器组选择位E、溢出标志位F、奇偶标志位正确答案:B7、16K程序存储器常用的芯片是EPROM是():A、2716B、2732C、2764D、27128E、27256F、27512正确答案:D8、用定时器T1方式2计数,要求每计满100次,向CPU发出中断请求,TH1、TL1的初始值是A、9CHB、20HC、64HD、A0H正确答案:A9、当CPU响应外部中断0的中断请求后,程序计数器PC的内容是A、0003HB、000BHC、00013HD、001BH正确答案:A10、JNZ REL指令的寻址方式是()A、相对寻址B、寄存器寻址C、位寻址D、立即寻址正确答案:A11、T0:定时方式,工作在方式1。

方式字TMOD=A、00HB、01HC、12HD、11H正确答案:B12、下列指令能使累加器A高4位不变,低4位置F的是()A、ANL A,#OFHB、ANL A,#OFOHC、ORL A,#OFHD、ORL A,#OF0H正确答案:C13、关于MCS-51的堆栈操作,正确的说法是( )A、先入栈,再修改栈指针B、先修改栈指针,再出栈C、先修改栈指针,在入栈D、以上都不对正确答案:C14、MOVX A , @R0指令中,源操作数采用()寻址方式,指令作用在()区间。

机电一体化《单片机原理与应用》山东大学网络教育考试模拟题与问题详解

机电一体化《单片机原理与应用》山东大学网络教育考试模拟题与问题详解

《单片机原理及应用》除非特别声明,编程题可以使用汇编语言编写,也可以使用 C 语言编写1、分析程序的执行结果,将结果填写到空格中。

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

《单片机原理及应用》除非特别声明,编程题可以使用汇编语言编写,也可以使用 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 为低电平,线路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 TR0标准SETB 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 ;判断是接收地址还是数据,若为数据则转LOOP0 CJNE 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 ,表明是乙机发送中断数据的中断请求。

相关文档
最新文档