单片机原理及应用练习题,第一章 基础知识 第二章 MCS-51结构及引脚 第三章 MCS-51指令系统 第四章 汇编语言程序设计 第五章 MCS-51片内接口 第六章 MCS-51系统扩展 第七章 单片及应用设计实例,第一章 基础知识,1写出-120的原码、反码、补码的16进制值答案: 120=1111000B 120 -120 原码01111000B(78H) 11111000(F8H) 反码01111000B(78H) 10000111(87H) 补码01111000B(78H) 10001000(88H),2.十进制数105,化成二进制数是__________,化成十六进 制数是__________答案:01101001 , 69,3.十进制数-43,在八位计算机中的表示__________答案:10101011,4.将八进制数75615转换成二进制数是答案:111101.110001101,6.将十进制数06875转换成二进制数是 答案:01011,5.将十六进制数BA45转换为二进制数是 ______答案:101110100100.0101,7.与二进制01010100对应的十进制数是。
答案:84,第二章 MCS-51结构及引脚,1什么是单片机?其主要特点是什么?,答案:单片机具有体积小、可靠性高、控制功能强、使用方便、性能价格比高、容易产品化等特点2.MCS-51系列的典型产品8051、8751和8031的区别是什么?,答案:8051、8751和8031均为8位单片机,其内部结构是基本相同的 其不同为:8051内部有4KBROM,8751内部有4KBEPROM,而8031内部无程序存储器3单片机主要应用在什么领域?,答案:单片机主要应用在:智能仪表、机电一体化、实时控制、分布式多机系统、家用电器等,对各个行业的技术改造和产品的更新换代起重要的推动作用4.单片机包括哪两种复位方式?在单片机应用系统中为何需要系统复位?,答案:单片机可通过上电自动复位和人工复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作答案: 64K字节程序存储器空间(0-0FFFFH)立即寻址和基寄存器加变址寄存器间接寻址 256字节内部RAM空间(0-0FFH)、(00-7FH)寄存器间接寻址和直接寻址,(80-8FH)寄存器间接寻址 128字节内部特殊功能寄存器空间(80-0FFH)直接寻址,位寻址空间(0-0FFH)位寻址 64K字节数据存储器空间(0-0FFFFH)寄存器间接寻址,5什么是指令周期?8051的指令周期一般由几个机器周期构成?,答案:CPU取出一条指令至该指令执行完所需要的时间称为指令周期。
大多数8051指令执行时间为一个机器周期或两个机器周期68051的一个机器周期包括几个状态、几个时钟周期(振荡器频率)?机器周期与时钟周期(振荡器频率)的关系是怎样的?,答案:一个机器周期由六个状态组成,每个状态为二个时钟周期,即一个机器周期由六个状态构成,所以一个机器周期T=12/ f0sc,7MCS-51的存储器空间分为哪些部分(五个独立的存储空间的划分)?各空间的寻址范围、寻址方式是什么?,字节地址 20H 2FH 既可作为普通的字节寄存器,也可作为位寻址区,每个字节均可分为 8 个可位寻址的存储元( bit ,位),此区间 128 个存储元按位另外统一编址(即位地址),分别从 00H 7FH ,常用来存放实际控制中的各种状态信息 字节地址 30H 7FH 普通的字节寄存器,常用来存放临时数据,又称数据缓冲区其中最高端的若干字节常用于教学开发机各 LED 数码管的数据缓冲区,配合监控程序中的显示模块使用例如江苏启东厂的教学开发机就是将 7EH 79H 这 6 个存储单元当做 LED 显示缓冲区,无论用户,预制内容是 BGD 码还是七段代码,都可以在监控程序中找到对应的显示模块,通过调用来完成用户所需的数值显示。
片内高端 l28 字节的 RAM 区只有 2 1 个字节有效,这 21 个字节既有地址,又有各自独特的名称,且用途各异,因此称为特殊功能寄存器( SFR )空间,其中凡字节地址能被 8 整除的 SFR 均可实现位寻址,其也有独立的位地址,且编号规律与低端位寻址区不同,与各自所在 SFR 字节地址相关10内部RAM低128B从功能和用途方面,可划分为哪三个区域?,答案:工作寄存器区、位寻址区、堆栈和数据缓冲区,118051内部RAM有几组工作寄存器?每组工作寄存器有几个工作寄存器?寄存器组的选择由什么决定?,答案: 01FH为四组工作寄存器区,寄存器组的选择由PSW中的RS1、RS0两位决定,每组有8个工作寄存器R0 R712什么是特殊功能寄存器?分布在哪里?,答案: 8051内部的I/O口锁存器以及定时器、串行口、中断等各种控制积存器和状态积存器都称为特殊功能积存器分布在80HFFH的地址空间138051的外部RAM和I/O口是如何编址的?其寻址空间在哪里?,答案:是统一编址的,均在64KB的外部数据存储器空间,CPU对它们具有相同的操作功能14MCS-51的程序存储器的寻址空间是多少?如何区别片内程序存储器和片外程序存储器的?,答案:为64K字节。
若 接VCC,则程序PC的值在0至0FFFFH之间时,CPU取指令时访问内部的程序存储器,PC的值大于0FFFH时,访问外部的程序存储器;若 接VSS,则内部的程序存储器被忽略,CPU总是从外部的程序存储器中取指令158051的位寻址区在哪里?位寻址空间是多少?,答案:内部RAM的202FH为位寻址区,这16个单元的每一位(16*8)都有一个位地址,它们占据位地址空间的07FH16什么是SP?什么是堆栈?,答案: SP是堆栈指针,指出栈顶位置后进先出的缓冲器称为堆栈178051的堆栈开辟在什么地方?其堆栈指针是什么?复位后堆栈指针初值是多少?一般将SP设置为多少?,答案:堆栈设在307FH的范围内SP是堆栈指针复位后是07H一般设置为6FH188051的数据缓冲区一般在什么地方?,19. 在计算机中,为什么要采用多级结构的存储器系统?它的应用是建立在程序的什么特性之上的?,答案:为了缓解主存储器读写速度慢,不能满足CPU运行速度需要的矛盾,另一方面又要解决主存储器容量小,存不下更多规模更大的程序与更多的数据难题,当前计算机系统中,广泛采用了多级结构的存储器体系结构,建立在程序运行的局部性原理之上。
答案:在内部的07FH,除了实际用到的工作寄存器、位标志和堆栈区以外的单元,都可以作为数据缓冲器使用,存放输入的数据或运算的结果第三章 MCS-51指令系统,1什么是指令?什么是指令系统?什么是伪指令?,答案: 指令是指示计算机执行某种操作的命令,指令是以一组二进制码表示的,称为机器指令计算机只能 识别和执行机器指令通常把一台计算机所能执行的全部指令的集合称为指令系统伪指令也称为汇编命令,大多数伪指令汇编时不产生机器语言指令,仅提供汇编控制信息2什么是总线?总线有哪些分类?,答案: 总线是计算机中各个功能部件之间传送信息的公用通道,是连接各个功能部件并为它们服务的一组信息传递导线,总线可分为单向总线和双向总线,并行总线和串行总线,若按传递信息的属性不同,可分为地址总线、数据总线和控制总线3立即寻址,其操作数是在存储器中这句话是否正确?,答案:错误操作数是在程序存储器中4.一条指令通常由哪两部分组成?指令的操作码一般有几种组织方式?各自应用在什么场合?各自的缺点是什么?,答案:一条指令由操作码和操作数地址码两部分组成对操作码的组织与编码有以下三种:,5.计算机指令字中要用的操作数一般来自那些部件?如何在指令中表示这些操作数的地址?通常使用那些寻址方式?,答案:(1)CPU内部的同用寄存器:给出用到的寄存器编号,寄存器内容可以是运算用的数据或操作数地址。
(2)外围设备(接口)中的一个寄存器:用设备编号或设备入出端口地址或设备映像地址表示 (3)内存储器的一个存储单元:存储单元地址 寻址方式:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、基地址寻址、间接寻址、堆栈寻址,6.什么是形式地址?简述对变址寻址、相对寻址、基地址寻址应在指令中给出些什么信息?如何得到相应的实际(有效)地址?各自有什么样的主要用法?,答案: 表示在指令中的操作数地址称为形式地址 (1)变址寻址:应在指令中给出一个数值(称为变址偏移量)及一个寄存器(称为变址寄存器)的编号 实际地址(又称有效地址)=变址寄存器的内容+变址偏移量 主要用于处理数组型数据 (2)相对寻址:应在指令中给出一个数值(称为相对寻址偏移量) 实际地址(又称有效地址)=程序计数器PC的内容+相对寻址偏移量 主要用于相对转移指令 (3)基地址寻址:应在指令中给出一个寄存器(称为基址寄存器)的编号 实际地址(又称有效地址)=程序中的地址+基址寄存器 主要用于多道程序或浮动地址程序定位存储器空间答案: 寄存器寻址:在指令字中直接给出操作数所在的通用寄存器的编号 寄存器间接寻址:在寄存器中给出的不是一个操作数,而是操作数地址。
7.寄存器寻址和寄存器间接寻址的区别?,说明下列指令中源操作数采用的寻址方式MOV R5,R7 MOV A,55H MOV A,55H JMP A+DPTR MOV 30H,C MOV A,R0 MOVX A,R0,寄存器寻址方式,直接寻址方式,立即寻址方式,变址寻址方式,位寻址方式,间接寻址方式,间接寻址方式,判断以下各条指令是否正确(LL1和PROC为标号) (1)MOV R0,R7 () (2)XCHD A,30H () (3)MOVX A,R3 () (4)ADD A,R7 () (5)SUB R1,R2 () (6)ANL 36H,#99H () (7)MOV C,ACC.0 () (8)ORL P1.0,C () (9)JBC 20H.0,LL1 () (10)LCALL PROC (),下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH,(DPTR)=2000H,(2000H)=AAH,(2019H)=23H (1)MOV A,#48H (2)ADD A,60H (3)ANL A,R0 (4)XCHD A,R0 (5)MOVX A,DPTR (6)MOV A,R0 (7)MOVC A,A+DPTR,(A)=48H 立即寻址,(A)=4EH 直接寻址,(A)=09H 寄存器间接寻址,(A)=1FH,(30H)=09H寄存器间接寻址,(A)=0AAH寄存器间接寻址,(A)=30H寄存器寻址,(A)=23H基变址寻址,阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能? (1)MOV R1,#30H ;(R1)= MOV A,#64H ;(A)= ADD A,#47H ;(A)= DA A ;(A)= MOV R1,A ;(R1)= (2)阅读程序:若(A)=80H,(R0)=17H,(17H)=34H,执行下列程序段后,(A)=? ANL A,#17H (A)= ORL 17H,A (17H)= XRL A,R0 (A)= CPL A (A)=,30H,64H,0ABH,11H,30H ,(30H)= 11H,00H,34H,34H,0CBH,设 (A)=0FH , (R0)=30H 内部RAM (30H)=0AH, (31H)=0BH (32H)=0CH 请写出在执行各条列指令后,所示单元的内容 MOV A,R0 ;(A)= MOV R0,32H ;(30H)= MOV 32H, A ;(32H)= MOV R0,#31H ;(R0)= MOV A, R0 ;(A)=,第四章 汇编语言程序设计,将内部RAM的40H4FH单元置初值A0HAFH。
用循环程序),MOV R7,#10H MOV A,#0A0H MOV R0,#40H LOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP RET,MOV DPTR, #2000H MOVX A,DPTR XCH A,B MOV DPTR,#3000H MOVX A,DPTR XCH A,B MOVX DPTR,A MOV DPTR,#2000H XCH A,B MOVX DPTR,A RET,题目:试编程实现外部RAM2000H单元的内容与3000H单元内容互换题目:编写程序,把外部RAM 1000H10FFH区域 内的数据逐个搬到从2000H开始的区域MOV DPL,#00H MOV R7, #0FFH LOOP: MOV DPH,#10H MOVX A, DPTR MOV DPH,#20H MOVX DPTR,A INC DPL ;此题中DPL可公用 DJNZ R7,LOOP END,题目:分析下面个程序段中指令的执行结果 (1) MOV SP,#50H MOV A,#0F0H MOV B,#0FH PUSH ACC ;(SP)= ;(51H)= PUSH B ;(SP)= ;(52H)= POP B ;(SP)= ;(B)= POP ACC ;(SP)= ;(A)=,(2) MOV A , #30H MOV B , #0AFH MOV R0, #31H MOV 30H,#87H XCH A , R0 ;(A)= ;(R0)= SWAP A ;(A)=,题目:编写一循环程序,求出内部RAM 20H单元二进制数中含1的个数,并将结果存入21H单元。
MOV 21H,#00H MOV A, 20H MOV R7, #08H LOOP: RLC A ;左循环一位,最高位到C JNC NEXT ;C为0 INC 21H ;C为1,21H内容1 NEXT: DJNZ R7,LOOP END,题目:编写一循环程序,查找内部RAM 30H50H单元中出现FFH个数,并将查找搭结果存入51H单元MOV R0, #30H ;数据区首地址 MOV R7, #20H ;数据个数 MOV 51H,#00H ;先设只有0个0ffh LOOP: MOV A, R0 INC R0 CJNE A,#0FFH,NEXT ;比较,不等于0ffh转NEXT ;等于0ffh,继续执行 INC 51H NEXT: DJNZ R7,LOOP END,题目:查表程序设计,1. 用DPTR查表(查09平方表) 1000 C083 TA: PUSH DPH 1002 C082 PUSH DPL 1004 902000 MOV DPTR, #TAB 1007 93 MOVC A, A+DPTR 1008 D082 POP DPL 100A D083 POP DPH 100C 22 RET ORG 2000H TAB: DB 00H, 01H, 04H, 09H 2000 00 2001 01 2002 04 2003 09,题目:用PC查表(查09平方表),ORG 1000H 1000 C083 TA: ADD A, #01H ; # 01H 为偏移量 1002 83 MOVC A, A+PC 1003 22 RET 1004 00 DB 00H, 01H, 04H, 09H 1005 01 END 1006 04 1007 09 偏移量表首地址(查表指令下一条指令地址) 1004H 1003H 01H,题目:循环程序设计,延时50ms程序 DEL: MOV R7, #200 DEL1: MOV R6, #125 DEL2: DJNZ R6, DEL2 ;125*2=250us DJNZ R7, DEL1 ; 0.25ms*20050ms RET 使用12MHz晶振时,一个机器周期为1us, 执行DJNZ指令为2us,加其他指令的时间 (25012)*200150.301ms,题目:计算几个数据的和,例题:对内部RAM 50h开始的10个无符号数求和。
源程序:,ADD1: MOV R7, #10 ;循环次数n10 MOV R3, #0 ;存放结果的高8位 MOV R4, #0 ;存放结果的低8位 MOV R0, #50H ;求和的数据存放在从内部RAM 50h开始的 ;单元中,注意:(50h)?不知道 LOOP: MOV A, R4 ; ADD A, R0 ;(R4)+(5?H)A MOV R4, A ; 结果送回R4 CLR A ; ADDC A, R3 ; 把进位位C加到高8位去 MOV R3, A INC R0 ; 为下一轮循环作准备 DJNZ R7, LOOP END,解释:,高8位 低8位 (R3) (R4) + (50h) C (A),,,,,MOV A, R4 ADD A, R0 MOV R4, A,CLR A ADDC A, R3 MOV R3, A,(50h)中是什么,不知道, 不能用ADD A,50H,题目:分支程序设计,基本分支程序: (1)若(A) 14H, 转NEXT, 否则继续执行,(A) 14H 相当于(A) < 15H,CJNE A, #15H, LOOP LOOP: JC NEXT ,(A) 14H 相当于(A) 15H,CJNE A, #15H, LOOP LOOP: JNC NEXT ,CJNE A, #14H, LOOP LOOP: JNC NEXT ,CJNE A, #14H, LOOP LOOP: JC NEXT ,CJNE A,#data,rel;(A)=#data,继续 Cy0 (A)#data, 转 Cy0 (A)#data, 转 Cy1 特点:只有时,Cy1,,例1:按下面公式编写程序, x为无符号数,存在20h单元 y存放在21h单元。
ORG 0030H MOV A, 20H CJNE A, #21H, LOOP1 LOOP1: JC NEXT1 CJNE A, #40H, LOOP2 LOOP2: JNC NEXT2 MOV B, #2 MUL AB AJMP NEXT2 NEXT1: CPL A NEXT2: MOV 21H, A END 最终结果存在 21h中,,题目:分支程序例,题目:分支程序例,从内部RAM 22h单元开始存有一个无符号数数据块,长度n存于21h中求出数据块中的最小数,存于20h中ORG 0030H MOV R0, #22H ;数据块起始地址 MOV R1, 21H ;数据个数n MOV 20H,#0FFH ; 最大数 LOOP: MOV A, R0 ; 取新数 INC R0 ; 为取下一个新数作准备 CJNE A, 20H, LOOP1 ; 与原最大数比较 LOOP1:JNC NEXT ; 大,原最小数保留 MOV 20H, A ; 小,改变最小数 NEXT: DJNZ R1, LOOP ;循环 END,FRT: MOV A,40H ;取行李重量G放在40H MOV R3,A MOV B,#03H;M=G3 MUL AB MOV R2,A;暂存3 G在R2 MOV A,R3;取回G CJNE A,#06H,L1;G5 ? L1: JC WETC;是,转至WETC SUBB A,#05H;否则M=3G+2(G-5) RLC A ADD A,R2 WETC:MOV 41H,A ;最后结果M存41H end,题目:行李计价:当G5,M=G3; 当G5,M=G3+(G-5)(5-3),题目:散转程序设计,根据R7中的内容,转向各个子程序。
R70,转入Prog0 R71,转入Prog1 R72,转入Prog2 R7n,转入Progn,ORG 0030H JUMP1: MOV DPTR, #TAB CLR A MOV A, R7 ADD A, R7 AJMP A+DPTR ORG 0100H TAB: AJMP Prog0 AJMP Prog1 AJMP Prog2 ,*AJMP 即把PC指向子程序的起始地址; *R7 x 2 是AJMP A+DPTR的机器码匹配;此处 n<127; *如用LJMP A+DPTR,则R7 x 3, 程序还要作相应修改题目:数制转换程序设计,例:8位二进制转换成BCD码用十进制表达的二进制码),;程序名:BINBCD1 ;功能: 0FFH内的二进制数转换为BCD数 ;入口: A存要转换的二进制数 ;出口: R0 存放BCD数 百、十、个位数的地址 BINBCD1: MOV B, #100 DIV AB MOV R0, A INC R0 MOV A, #10 XCH A, B ;(A)原(B),(B)=10 DIV AB MOV R0, A INC R0 XCH AB MOV R0, A RET,题目:设内部RAM (30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,请注释每条指令执行后的结果 MOV R0,#30H ;(R0)= MOV A, R0 ;(A)= MOV R1, A ;(R1)= MOV B, R1 ;(B)= MOV R1, P1 ;(5AH)= MOV A, P1 ;(A)= MOV 40H, #20H ;(40H)= MOV 30H, 40H ;(30H)=,题目:阅读程序,指出程序功能,MOV R0,#31H MOV R3,#3 MOV R1,#00H MOV R2,#00H LOOP: MOVX A,R0 ;取一个加数 ADDC A, R2 ;单字节数 MOV R2, A ;和低位送R2 JNC LOOP1 ;无进位转移 INC R1 ;有进位高位加1 LOOP1: INC R0 ;指向下一单元 DJNZ R3,LOOP ;次数减1,不为0转移,功能: 存储在外部数据存储器31H开始的3个字节数相加,结果低字节送R2,高字节送R1。
第五章 MCS-51片内接口,,1.通用可编程接口的作用是什么?各自的功能是什么?,,答案: (1)命令寄存器:存放CPU发来的控制命令 (2)状态寄存器:供CPU通过读操作来了解设备的运行状态 (3)数据缓冲器:解决CPU与输入输出设备运行速度不匹配的矛盾 (4)处理中断请求、屏蔽和判优等逻辑线路,外设可申请中断,CPU可屏蔽中断及判断优先级3.计算机中有哪些常用的输入输出控制方式?各自的优缺点是什么?,2.开中断,关中断,中断屏蔽是何含义?他们的作用是什么?,答案: 开中断:中断允许触发器置“1”,关中断:中断允许触发器清“0” 中断屏蔽:中断屏蔽触发器置1,答案:(1)程序直接控制方式 指在用户程序中直接使用I/O指令完成输入输出操作,它是由CPU通过查询设备的运行状态,来控制数据传送过程 缺点:严重影响系统运行性能2)程序中断传送方式 由被读写的设备主动“报告”CPU它是否已进入准备好状态,这样,CPU就不必花费时间去循环测试,大大解脱了CPU在执行输入/输出过程中的负担,从而提高了系统的总体运行性能 (3)直接存储器存取方式 主要用于快速设备和主存储器成批交换数据的场合,把数据的传输过程交由一块专用的接口卡(DMA接口)来控制,让DMA卡代替CPU控制在快速设备与主存储器之间直接传输数据,每传输一个数据只需一个总线周期即可。
(4)I/O通道控制方式 使用从属于CPU 的、专用于处理I/O操作的处理器(通道)协助CPU完成输入输出操作的运行方式 (5)外围处理机输入出方式 主要用于大型高性能的计算机系统中,是使用微、小型通用计算机协助处理机完成输入输出操作4.简述一次中断处理的完整过程?,答案:(1)中断请求: 是由中断源发出并送给CPU的控制信号,由中断源设备通过置“1”设置在接口卡上的中断触发器完成中断屏蔽触发器置“1”,表示要屏蔽该设备的中断请求 (2)中断响应 条件:当CPU接到中断请求信号时,如果下面几个条件都具备,就会响应中断请求允许中断(允许中断触发器为“1”状态)CPU结束一条指令的执行过程 新请求的中断优先级更高 (3)中断处理 包括: 关中断:保证在此之后的一小段时间内CPU不能响应新的中断请求 保存断点(PC的内容,程序状态字的内容) 判别中断源:找到中断服务程序的入口地址 开中断执行中断服务程序 关中断恢复现场,恢复断点 开中断返回断点,5 8051应用系统只设置一个中断优先级定时器T0中断和串行口的TI中断同时产生,CPU响应哪一个中断?为什么?若CPU已经在响应串行口TI中断,又有T0中断申请产生,问CPU是否会暂停对TI中断的响应而转去响应T0中断?为什么? 答案:响应T0中断,原因外部中断INT0 最高 定时器/计数器T0 外部中断INT1 定时器/计数器T1 串行口的中断RI/TI。
最低 会,原因同前68051应用系统有二个中断优先级,其中串行口的RI中断设置为高优先级,定时器T1设置为低优先级若CPU正在响应RI中断,现在T1产生中断,问T1中断是否可以打断正在响应的RI中断?为什么?,答案:不能原因CPU先处理RI高优先级中断,,8若8051的晶振频率fosc为6MHZ,定时器/计数器T0工作在工作方式1,要求产生10ms定时,写出定时器的方式控制字和计数初值(分别写出TH0与TL0值)7.设8031晶振频率fosc为6MHZ,利用定时器T0方式2,产生500ms定时0每隔500ms产生一次跳变即输出周期为1ms的方波编写定时器T0的初始化程序和方波实现程序答案: a=6 程序: MOV TMOD,#2 MOV TH0,#6 MOV TL0,#6 SETB TR0 MOV IE,#82H CPL P1.0 RET,答案: TMOD:#01H;TH0:3CH;TL0:0B0H 方式0:a=213-T*fosc/12 高8位 低5位 00 00 方式1:a=216-T*fosc/12 高8位 低8位 01 10 方式2: a=28-T*fosc/12 相同 02 20,9. SBUF的含义及作用是什么?,答案:SBUF串行口缓冲寄存器是可直接寻址的专用寄存器。
它对应两个寄 存器,一个发送寄存器,一个接收寄存器,CPU写SBUF,就是修改发送寄存器;读SBUF,就是读接收寄存器10“MCS-51有一个全双工的同步串行通信接口”,这句话是否正确?,错误:有一个全双工的异步串行通信接口,11MCS-51的串行口有几种工作方式?,答案:串行口控制器SCON有四种工作模式:模式0下,串行口作为同步移位寄存器,其波特率是固定的为fosc/12,其中fosc是振荡器频率模式1下,传输的是10位信息:1位起始位(0),8位数据(低位在先)和1位停止位(1),由TXD发送,由RXD接收,波特率可变,取决于定时器1或2的溢出速度模式2和模式3下,发送和接收得都是11位数据:1位起始位(0),8位数据(低位在先),1位可编程位(第9数据位)和1位停止位(1)12“由于MCS-51的串行口的数据发送和接收缓冲器都是SBUF,所以其串行口不能同时发送和接收数据,即不是全双工的串行口这句话是否正确?如果不正确,错在哪里?,错误:串行口可以同时发送和接收数据,是全双工的串行口,13“8051串行口的波特率可以由定时器T0的溢出率决定这句话是否正确?,错误:由T1的溢出率决定,14波特率加倍位SMOD的作用是什么?,答案:串行口中模式0下的波特率是固定的为fosc/12,模式2的波特率是fosc/32或fosc/64,取决于POCN寄存器的SMOD位的值,若SMOD=0波特率为fosc/64,若 SMOD=1波特率为fosc/32。
15.MCS-51定时器/计数器的四种工作方式?,1. 定时工作方式0 方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成当TL0的低5位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位 在方式0下,当为计数工作方式时,计数值的范围是18192(213) 当为定时工作方式时,定时时间的计算公式为: (213计数初值)晶振周期12 或 (213计数初值)机器周期 其时间单位与晶振周期或机器周期相同(ms) 例题:当某单片机系统的外接晶振频率为6MHz,该系统的最小定时时间为: 213(2131)1/(6106)1221062(ms) 最大定时时间为: (2130)1/(6106)121638410616384(ms) 或: 最小定时单位21316384(ms),第六章 MCS-51系统扩展,1.DMA传输方式的优点是什么?DMA接口中通常应包括那些逻辑部件?各自的功能是什么?,答案: 优点:速度快,不须CPU参与,满足高速I/O设备的要求,有利于CPU发挥效率 DMA接口包括: (1)主存地址计数器:存放读写主存用到的主存地址。
(2)数据数量计数器:存放传送数据的数量 (3)DMA的控制状态逻辑,用于修改主存地址计数器和数据数量计数器,指定传送功能,协调CPU和DMA信号的配合与同步 (4)DMA请求触发器:接收并记忆设备送来的请求传送的信号 (5)数据缓冲寄存器:用于存放高速设备与主存之间交换的数据 (6)中断机构:与通用接口中的中断逻辑电路的组成完全相同2.DMA控制传送一批数据,从使用总线的角度区分,有那两种主要运行方式?各自的优缺点是什么?,答案: (1)独占总线方式: 从传送第一个字节开始直到这批数据传输完成的整个过程,DMA都把住总线不放,使总线只为本DMA使用 缺点:CPU和其它DMA等bus masters都要停止运行,影响系统运行效率 (2)周期挪用方式 优点:即实现了I/O传送,又较好的发挥了内存和CPU的效率,3.解释下列术语,总线周期:,通常指的是通过总线完成一次内存读写操作或完成一次输入输出设备的读写操作所必需的时间同步传输控制:,(同步通信:)在总线上传送数据时,通信双方使用同一个时钟信号进行同步MOV A,#01H LOOP: MOV P1,A ACALL DELY RL A SJMP LOOP RET DELY: MOV R1,#50 LOOP2:MOV R2,#25 ; T=2us*2*25*50=5ms LOOP1:DJNZ R2,LOOP1 ;6MHZ:2us 12 MHZ:1us DJNZ R1,LOOP2 RET,4.在8031的P1口接8个共阴极LED显示器,请编程实现每隔5ms 点亮一个LED显示器,循环点亮8个LED,从P1.0所接LED开始点亮,同一时刻只有一个LED 亮。
设fosc=6MHZ.,要求:延时用软件实现,延时程序DELAY为子程序,并画出接线图5. 用三片6264构成单片机的数据存储区,地址译码采用全地址译码法6.使用定时/计数器0以工作方式2实现定时,在P1.0输出周期为200s的连续方波已知晶振频率fosc=6MH求计数初值,方式控制字,编制相应程序.(查询方式),计数初值X=256-50=206=0CEH TMOD=02H,MOV IE,#00H MOV TMOD #02H MOV TH0,#0CEH MOV TL0,#0CEH SET TR0 LOOP:JBCTF0,LOOP1 AJMP LOOP LOOP1:CPL P1.0 AJMP LOOP,7.数据通信的传输方式?,答案:常用于数据通信的传输方式有单工、半双工、全双工和多工方式 单工方式:数据仅按一个固定方向传送因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集 半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换 全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。
多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能,我们盛之为多工传输方式8.串行数据通信的传输速率?,答案:串行数据传输速率有两个概念,即每秒转送的位数bps(Bit per second)和每秒符号数波特率(Band rate),在具有调制解调器的通信中,波特率与调制速率有关MCS-51的串行口和控制寄存器,串行数据通信两种形式,异步通信: 在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位,图2是传输45H的数据格式 同步通信: 同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可 同步传输方式比异步传输方式速度快,这是它的优势但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。
第七章 单片机及应用设计实例,1.设某单片机系统的外接晶振频率为6MHz,使用定时器1以方式0产生周期为500ms的等宽正方波连续脉冲,并由P1.0输出以查询方式完成解题:计算计数初值 欲产生500ms的等宽正方波脉冲,只需在P1.0端以250ms为周期交替输出高低电平即可实现,为此定时时间应为250ms使用6MHz晶振,根据上例的计算,可知一个机器周期为2ms方式0为13位计数结构设待求的计数初值为X,则: (213-X)210-625010-6 求解得: X213(2502)8067十六进制表示,高8位为FCH,放入TH1,即TH1FCH;低5位为03H放入TL1,即TL103H由定时器控制寄存器TCON中的TR1位控制定时的启动和停止 TR11启动,TR10停止程序设计: MOV TMOD,00H ;设置T1为工作方式0 MOV TH1,OFCH ;设置计数初值 MOV TL1,03H MOV IE,00H ;禁止中断 LOOP: SETB TR1 ;启动定时 JBC TF1,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:MOV TH1,FCH ;重新设置计数初值 MOV TL1,03H CLR TF1 ;计数溢出标志位清0 CPL P1.0 ;输出取反 AJMP LOOP ;重复循环,2.定时器/计数器与中断综合应用举例 题(1):时钟计时程序设计。
MCS-51单片机实现时钟计时显示的基本方法 首先要计算计数初值 时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MMCS-51的定时器/计数器进行定时,即使按工作方式,其最大定时时间也只能达到131毫秒,离1秒还差好远为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125毫秒,这样当计数溢出8次就可得到1秒,而8次计数可用软件方法实现 为得到125ms定时,我们可使用定时器/计数器0,以工作方式进行,当设定单片机为6MHz晶振,设计数初值为X,则有如下等式: (216X)2us125000us 计算得计数初值X3036, 二进制表示为0000101111001101,十六进制表示为0BCDH 定时器定时采用中断方式完成,以便于通过中断服务程序进行溢出次数(每次125毫秒)的累计,计满8次即得到秒计时 通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时 设置时钟显示及显示缓冲区 假定时钟时间在六位LED数码管(LED5LED0)上进行显示(时、分、秒各占两位)为此,要在内部RAM中设置显示缓冲区,共6个单元(79H7EH),与数码管的对应关系为: LED57EH、LED47DH、LED37CH、LED27BH、LED17AH、LED079H。
即显示缓冲区从左向右依次存放时、分、秒的数值 假定已有LED显示程序为SMXS可供调用,ORG 8000H START:AJMP MAIN ORG 800BH AJMP PITO ORG 8100H MAIN:MOV SP, 60H ;确立堆栈区 MOV R0, 79H ;显示缓冲区首地址 MOV R7, 06H ;显示位数 ML1:MOV R0, #00H ;显示缓冲单元清0 INC R0 DJNZ R7, ML1 MOV TMOD, 01H ;定时器0,工作方式 MOV TL0, 0CDH ;装计数器初值 MOV TH0, 0BH,SETB 8CH ;TR0置1,定时开始 SETB AFH ;EA置1,中断总允许 SETB A9H ;ET0置1,定时器0中断允许 MOV 30H, 08H ;要求的计数溢出次数,即循环次数 ML0:LCALL SMXS ;调用显示子程序 SJMP ML0 PITO:PUSH PSW ;中断服务程序,现场保护 PUSH ACC SETB PSW.3 ;RS1RS0=01,选1组通用寄存器 MOV TL0, 0CDH ;计数器重新加载 MOV TH0, 0BH MOV A, 30H ;循环次数减1 DEC A MOV 30H, A,JNZ RET0 ;不满8次,转RET0返回 MOV 30H, 08H ;满8次,开始计时操作 MOV R0, 7AH ;秒显示缓冲单元地址 ACALL DAAD1 ;秒加1 MOV A, R2 ;加1后秒值在R2中 XRL A, 60H ;判是否到60秒 JNZ RET0 ;不到,转RETO返回 ACALL CLR0 ;到60秒显示缓冲单元清0 MOV R0, 7CH ;分显示缓冲单元地址 ACALL DAAD1 ;分加1 MOV A, R2 XRL A, 60H ;判是否到60分 JNZ RET0 ACALL CLR0 ;到60分,分显示缓冲单元清0 MOV R0, 7EH ;时显示缓冲单元地址,ACALL DAAD1 ;时加1 MOV A, R2 XRL A, 24H ;判是否到24时 JNZ RET0 ACALL CLR0 ;到24时,时显示缓冲单元清0 RET0:POP ACC ;现场恢复 POP PSW RETI ;中断返回 DAAD1:MOV A, R0 ;加1子程序,十位数送A DEC R0 SWAP A ;十位数占高4位 ORL A, R0 ;个位数占低4位 ADD A, 01H ;加1 DAA ;十进制调整 MOV R2, A ;全值暂存R2中 ANL A, 0FH ;屏蔽十位数,取出个位数,MOV R0, A ;个位值送显示缓冲单元 MOV A, R2 INC R0 ANL A, F0H ;屏蔽个位数取出十位数 SWAP A ;使十位数占低4位 MOV R0, A ;十位数送显示缓冲单元 RET ;返回 CLR0:CLR A ;清缓冲单元子程序 MOV R0, A ;十位数缓冲单元清0 DEC R0 MOV R0, A ;个位数缓冲单元清0,题(2):用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。
串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据无论采用什么方式,在开始通讯之前,都要先对控制寄存器SCON进行初始化在方式0中将,将00H送SCON就可以了ORG 2000H START: MOV SCON,#00H ;置串行口工作方式0 MOV A,#80H ;最高位灯先亮 CLR P1.0 ;关闭并行输出(避象传输过程中,各LED的暗红现象) OUT0: MOV SBUF,A ;开始串行输出 OUT1: JNB TI,OUT1 ;输出完否 CLR TI ;完了,清TI标志,以备下次发送 SETB P1.0 ;打开并行口输出 ACALL DELAY ;延时一段时间 RR A ;循环右移 CLR P1.0 ;关闭并行输出 JMP OUT0 ;循环,org 0000H AJMP START ORG 30H START: MOV SP,#5fh ; MOV TMOD,#20h ;T1: 工作模式2 MOV PCON,#80h ;SMOD=1 MOV TH1,#0FDH ;初始化波特率(参见表) MOV SCON,#50h ;Standard UART settings MOV R0,#0AAH ;准备送出的数 SETB REN ;允许接收 SETB TR1 ;T1开始工作WAIT: MOV A,R0 CPL A MOV R0,A MOV SBUF,A,LCALL DELAY JBC TI,WAIT1 ;如果TI等于1,则清TI并转WAIT1 AJMP WAIT WAIT1: JBC RI,READ ;如果RI等于1,则清RI并转READ AJMP WAIT1 READ: MOV A,SBUF ;将取得的数送P1口 MOV P1,A LJMP WAIT DELAY: ;延时子程序 MOV R7,#0ffH DJNZ R7,$ RET END,。