单片机习题解答.docx_第1页
单片机习题解答.docx_第2页
单片机习题解答.docx_第3页
单片机习题解答.docx_第4页
单片机习题解答.docx_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目1 单片机最小系统1. MCS-51系列的单片机怎么分类的,各类型的区别在哪些方面?答:该系列分类可分为8051子系列,8052子系列,80C51子系列。各系列的区别主要在于使用的片内ROM的类型和容量大小的不同。2. 简述80C51单片机的内部结构和引脚功能。答:1)内部结构:由一个8位CPU、128B片内RAM、21个特殊功能寄存器、4个8位并行I/O口、两个16位定时/计数器、一个串行输入输出口和时钟电路等组成。2)引脚功能:共有40个引脚。包括电源线Vcc、地线Vss,时钟线XTAL1、XTAL2,P1口-P3四个八位口共32根I/O口线,4个控制引脚:ALE(地址锁存允许)、/PSEN(外ROM读选通信号)、RST(复位信号)、/EA(内外ROM选择信号)。3. 简述80C51单片机存储器空间配置及功能。答:80C51有三个不同的存储空间,分别是最高64KB的ROM、最高64KB的外RAM和最高256B的片内RAM。用不同的指令可控制信号实现操作。1) ROM共64KB,60KB在片外,4KB在片内。ROM主要用于存放程序,CPU读ROM中程序以程序计数器PC作为16位地址指针;用户读ROM中数据用MOVC指令,控制信号是/PSEN和/EA。2) 外RAM共64KB,读写外RAM用MOVX指令,控制信号是P3口中的/WR和/RD。3) 内RAM共128B,可分为工作寄存器区(00H1FH)、位寻址区(20H2FH)和数据缓冲区(30H7FH)。4) 特殊功能寄存器(SFR)共21个,离散的分布在128B片内RAM的80HFFH中。均有不同的用途和功能。常用的有累加器Acc、程序状态字PSW、堆栈指针SP及数据指针DPTR等。5) 程序计数器PC不属于特殊功能寄存器,不可访问,主要用于CPU读ROM16为地址指针。4. 单片机的并行I/O口在使用上有什么特点?答:P0端口既可以作为通用的I/O口进行数据的输入/输出,也可以作为单片机系统的低8位地址/数据线使用。P1端口为准双向I/O端口,可作为通用I/O口使用,又能使用第二功能复用,具体功能可见表2-2。P2端口可以作为通用I/O口使用,P2端口又能作为高8位地址线使用。P3端口是一个准双向的I/O端口,作为通用I/O口使用,又能使用第二功能复用。P3口的第二功能见下表。80C51单片机P3口第二功能表引脚名称符号功能P3.0RXD串行口输入P3.1TXD串行口输出P3.2INT0外部中断0P3.3INT1外部中断1P3.4T0计数器T0输入P3.5T1计数器T1输入P3.6WR外部存储器写选通P3.7RD外部存储器读选通5. 单片机复位后各寄存器的状态如何?答:单片机复位后,相关寄存器的状态如下表所示。单片机复位后部分特殊功能寄存器的状态表专用寄存器复位后地址专用寄存器复位后地址PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0P3FFHSCON00HIPxxx00000BSBUF不定IE0xx00000BPCON0xxx0000B注:x表示无关位。6. 单片机的寻址方式有哪些?答:单片机的指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址等。7. 单片机的指令分为哪几类?答:(1) 按功能可分为5类:数据传送类指令(共29条) 算数运算类指令(共24条) 逻辑运算及移位类指令(共24条) 控制转移类指令(共17条) 布尔变量操作类指令(共17条)(2) 按字节数可以分为3类:单字节指令(49条)双字节指令(46条)三字节指令(16条)(3) 按指令执行的时间可分为3类:单机器周期指令(64条)双机器周期指令(45条)四机器周期指令(2条)8. 编写程序段实现交换内部RAM 20H单元和30H单元的内容答:程序如下:MOV A,20HXCH A,30HMOV 20H,A9. 编写计算1234H+ABCDH的程序段,并将结果存入内部RAM 30H31H单元(30H存低位)。解:参考程序如下:MOV A,#0CDHADD A,#34HMOV 30H,AMOV A,#0ABHADDC A,#12HMOV 31H,A10. 请写出完成下列操作的指令:(1) 使累加器A的低4位清0,其余位不变。ANL A,#0F0H(2) 使累加器A的低4位置1,其余位不变。ORL A,#0FH(3) 使累加器A的低4位取反,其余位不变。XRL A,#0FH(4) 使累加器A中的内容全部取反。CPL A11. 无条件长转移指令、无条件绝对转移指令、无条件相对转移指令和条件转移指令的转移范围有什么不同?答:LJMP addr16可以转移到64 KB程序存储器中的任意位置。AJMP addr11转移范围2 KB内绝对转移SJMP rel转移范围是以本指令的下一条指令为中心的-128+127字节以内。条件转移指令转移范围是以本指令的下一条指令为中心的-128+127字节以内。12. 将一个字节内的两个BCD码十进制数拆开并变成相应的ASCII码的程序段如下,给下面每条指令加上注释。MOVR0,#32H;R0指向内部RAM 32H单元MOVA,R0 ;将32H单元的内容送入AANL A,#0FH ;屏蔽A的高4位,剩下个位数ORLA,#30H ;个位加上30H, 以转换为它的ASCIIMOV 31H,A ;个位数的ASCII存放在31H单元MOV A,R0 ;将32H单元的内容送入ASWAPA ;将A的个位数和十位数交换ANL A,#0FH ;屏蔽A的高4位,剩下十位数ORLA,#30H ;十位加上30H, 以转换为它的ASCIIMOV32H,A ;十位数的ASCII存放在32H单元13. 已知两数分别存放在R6和R7单元中,编程求其乘积,并存入R4R5寄存器中。解:编程如下:MOV A , R6MOV B , R7MUL ABMOV R5, A;乘积低八位存入R5中MOV R6 , B;乘积高八位存入R4中14. 编写程序,把外部RAM中1000H100FH中的16个数,传送到内部RAM30H3FH中去。解:参考程序如下:MOV R7,#16MOV DPTR,#1000HMOV R1,#30HLOOP: MOVX A, DPTRMOV R1,AINC DPTRINC R1DJNZ R7,LOOPSJMP $15. 编写程序,把内部RAM30H和31H两个单元的低4位二进制数,合并为一个字节,存放到40H单元中(30H的低4位,合并后放到高4位)。解:参考程序如下:CHANGE:MOV A , 30H;取第一个数据ANL A , #0FH;屏蔽高四位,保留低4位SWAP A;转移至高四位MOV B , A;暂存MOV A , 31H;取第二个数据ANL A , #0FHORL A , B; 合并MOV 40H , A;存数16. 编写一个子程序,找出外部RAM 2000H200FH数据区的最大值,并放入内部RAM 30H单元中。解:参考程序如下:SECH:MOV DPTR , #2000H;置外部RAM数据区首地址MOV R7 , 0FH;置外部RAM数据区长度MOVX A , DPTR;读第一个数据MOV B , A;假设第一个数据为最大值SLOP:INC DPTR;指向下一个数据MOVX A , DPTR;读下一个数据CJNE A , B , SLP1;新数据与最大值比较SLP1:JC SLP2;新数据小于旧数据,转下一个数比较MOV B , A;存新的最大值SLP2:DJNZ R7 , SLOP;判循环结束否?MOV 30H , B;存最大值到30H单元RET项目2 交通灯控制系统习题1. 什么叫中断?中断有什么特点?答:中断是通过硬件来改变CPU的运行方向的。单片机在执行程序的过程中,当CPU运行当前程序时,CPU之外的其它硬件(例如定时器、串行口等)会出现某些特殊情况,这些特殊情况会以一定的方式向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。中断的特点:分时操作、实时处理、故障处理。2. 80C51单片机有几个中断源,几个中断优先级?各中断标志是如何产生的? CPU响应各中断时,其中断入口地址是多少?答:80C51单片机有5中断源,2级中断优先级。T0、T1的外部中断源根据电平触发或边缘触发后,置IE0/IE1=0;T0、T1的定时器溢出后,置TF0/TF1=1;串行口每发送或接收一帧数据后置中断标志ES=1。CPU响应中断时,各中断源的中断入口地址如下表所示。中断源中断服务入口地址0003HT0000BH0013HT1001BH串行口0023HT2002BH3. 外部中断有哪两种触发方式?对触发脉冲或电平有什么要求?如何选择和设定?答:外部中断触发方式有电平触发或边缘触发。电平触发方式为了让CPU能够检测到下降沿,的高、低电平必须保持1个机器周期以上。当IT1 = 0时,外部中断1控制为电平触发方式;当IT1 = 1时,外部中断1控制为边沿触发,即下降沿触发。4. 涉及80C51单片机中断控制的有哪几个特殊功能寄存器?答:有中断请求、中断允许和中断优先级控制3个方面的特殊功能寄存器。1) 中断请求:定时和外中断控制寄存器TCON、串行口控制寄存器SCON;2) 中断允许控制寄存器IE;3) 中断优先级控制寄存器IP。5. 简述中断的过程,并说明是什么中断嵌套?答:系统的中断处理有以下几个步骤:1) 中断响应的条件2) 中断响应的过程3) 关闭中断4) 保护现场5) 打开中断6) 中断服务程序7) 中断服务程序8) 恢复现场9) 打开中断10) 恢复断点中断嵌套:当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU会中断正在进行的中断服务程序,并保留这个程序的断点,响应高级中断。高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套6. 利用中断设计一个应用系统,实时显示P3.2引脚上出现负跳变脉冲的个数(设此脉冲数255,可直接调用显示子程序DISPLAY)。解:参考程序如下:ORG 0LJMP MAINORG 0003HLJMP PINT0;外中断0服务程序入口地址ORG 0100HMAIN:MOV SP , #60H;调整堆栈指针SETB IT0;置外中断0为边沿触发方式MOV IP , #01H;外中断0为高优先级MOV R7 , #00H;脉冲计数器清0SETB EA;开放外中断0SETB EX0LOOP:LCALL DISPLAY;调用显示子程序SJMP LOOP;循环显示并等待中断PINT0:INC R7;脉冲计数器加1RETI;中断返回7. 定时/计数器工作于定时和计数方式时有何异同点?答:设置为定时工作方式时,计数器对内部机器周期进行计数,每过一个机器周期,计数器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,适当选择定时器的初值可获取各种定时时间。设置为计数工作方式时,计数器对来自输入引脚T0(P3.4),T1(P3.5)和T2 (P1.0)的外部信号进行计数,外部脉冲的下降沿将触发计数。8. 80C51单片机定时/计数器相关的寄存器有哪些?简述它们每位的功能。答:定时/计数器T0、T1的初始化通过定时/计数器的方式寄存器TMOD和控制寄存器TCON来完成。(1) 定时/计数器T0、T1的方式寄存器TMOD1) GATE:门控位。2) C/:功能选择位。3) M1和M0: T0、T1的工作方式选择位(2) 定时/计数器T0、T1的控制寄存器TCON1) TCON.7(TF1):T1溢出标志位。2) TCON.6(TR1):T1运行控制位。3) TCON.5(TF0):T0溢出标志位。4) TCON.4(TR0):T0运行控制位。5) TCON.3(IE1):外部中断()请求标志位。6) TCON.2(IT1):外部中断1触发方式选择位。7) TCON.1(IE0):外部中断0()请求标志位。8) TCON.0(IT0):外部中断0触发方式选择位。9. 利用定时/计数器T0,编程产生定时时钟从P1.1输出周期为0.5s的正脉冲信号,晶振频率为12MHz。解:参考程序如下:START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP STARTDELAY: MOVR5,#28H ;置25 ms计数循环初值40D MOVR6,#64H ;置250 ms计数循环初值100DMOVTMOD,#20H ;置T1为方式2MOVTH1,#06H ;置定时器初值MOVTL1,#06HSETBTR1 ;启动定时器T1LP1: JBC TF1,LP2 ;查询计数溢出SJMPLP1 ;无溢出则继续计数LP2: DJNZR6,LP1 ;未到25 ms继续循环MOVR6,#64HDJNZR5,LP1 ;未到1 s继续循环RET10. 利用定时/计数器T0,编程产生定时时钟,由P2口控制8个LED,使8个指示灯依次循环闪动,每个led闪动的间隔为1s。LED为共阳极, 晶振频率为12MHz。解:参考程序如下:MOV A, #01111111bLOOP:MOV P2,AACALL DELAYRR ASJMP LOOPDELAY: MOVR5,#28H ;置25 ms计数循环初值40D MOVR6,#64H ;置250 ms计数循环初值100DMOVTMOD,#02H ;置T1为方式2MOVTH1,#06H ;置定时器初值MOVTL1,#06HSETBTR1 ;启动定时器T1LP1: JBC TF1,LP2 ;查询计数溢出SJMPLP1 ;无溢出则继续计数LP2: DJNZR6,LP1 ;未到25 ms继续循环MOVR6,#64HDJNZR5,LP1 ;未到1 s继续循环RET11. LED数码管的静态显示方式和动态扫描显示方式各有何特点?分别适用于什么场合?答:LED静态显示方式下,每一位显示器的字段需要一个8位I/O口控制,而且该I/O口须有锁存功能,N位显示器就需要N个8位I/O口,每一位字段码分别从I/O控制口输出,保持不变直至CPU刷新显示为止,也就是各字段的亮灭状态不变。静态显示方式编程较简单,但占用I/O口线多,硬件成本较高,一般适用于显示位数较少的场合。动态扫描显示是将各位的所有相同字段线连在一起,每一位的a段连在一起,b段连在一起,dp段连在一起,共8段,由一个8位I/O口控制,而每一位的公共端(共阳或共阴com)由另一个I/O口控制。数码管采用扫描方式轮流点亮。动态扫描显示电路的特点是占用I/O端口线少,电路简单,硬件成本低,但编程较复杂,CPU要定时刷新扫描。适用于显示位数较多的应用系统。12. AT89C51单片机扩展一片8255A,若把8255A的PA口用作输入,每一位接一个开关;PA口用作输出,每一位接一个发光二极管。请画出出电路原理图,并编写出PA口某一位开关接高电平时,PB口相应位发光二极管被点亮的程序。参考电路:由图8255A与单片机的连接方式分析可得I/O口地址为:A口:7CFFH;B口:7DFFH;C口:7EFFH;控制口:7FFFH。子程序清单如下:MOV DPTR,#7FFFHMOV A , #98H;设置A口为方式0输入口,B口为方式0输出口,MOVX DPTR,AMOV DPTR,# 7CFFH MOVX A,DPTR;从A口输入数据MOV DPTR,#7DFFHMOVX DPTR,A;从B口输出数据END13. 参考教材图2-24,按下列要求修改后,画出电路并编制数码管显示子程序。(1) 用4片74LS164连接4位LED数码管;(2) 用P1.7控制串行口输出;(3) 4位显示符已存放在以70H(低位)为首址的内部RAM中。解:参考电路设计参考程序如下: DIR2: SETB P1.7 ;允许串行输出 MOV R7 , #04H ;置显示位数 MOV R0 , #70H ;置显示缓冲区首址 MOV DPTR , #TAB ;置字段码表首址LP: MOV A,R0 ;取显示数 MOVC A,A+DPTR ;读相应字段码 MOV SBUF,A ;串口输出 JNB T1,$ ;等待串行传送结束 CLR T1 ;清串口中断标志 INC R0 ;修改显示数据区地址 DJNZ R7 , LP ;判别显示完毕否? CLR P1.0 ;停止串行输出 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;09共阳字段码表 DB 92H,82H,0F8H,80H,90H14. 参考教材图2-27,按下列要求修改相关连线,画出电路并编制数码管动态扫描子程序。(1) 用单片机P0口做段控口,采用74LS240所反相驱动器;用P1.0P1.3做位控输出线,采用74LS07做同相驱动,扩展4位LED共阴极数码管。(2) 显示缓冲区设置在30H33H,对应从右到左的4位数码管。(3) 编制数码管动态扫描子程序,每调用一次子程序,对数码管从右到左扫描2次。解:参考电路:参考程序设计:显示子程序如下:;*;动态扫描子程序;功能: 将30H33H显示缓冲区的值取出送LED数码管显示 ;*ORG 0D50HSSEE:SETB RS1换工作区MOV R5,#02H;扫描5遍SSE2:MOV 30H,#0FEH;设置位控码,从右往左扫描MOV 31H,#30H;从最高位开始扫描MOV R7,#04H;扫描6个数码管SSE1:MOV A,30H;取位控码MOV P1 , ,A;输出位控码MOV R0,31HMOV A,R0MOV DPTR,#DDFFMOVC A,A+DPTRMOV P0 , A;输出段控码MOV A,30HRL A;位控码左移一位MOV 30H,AINC 31HMOV A,#0FFH;数码管全灭MOVX R1,ADJNZ R7,SSE1;6位数码管扫描完否?DJNZ R5,SSE2;5遍扫描完否?CLR RS1;恢复工作区RETDDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH;数码管代码表09,AB,灭,P.,H,特定提示符;*项目3 电子钟1. 为什么会有“键抖动”?如何消除? 答:由于按键开关的结构为机械弹性元件,在按键按下和断开时,触点在闭合和断开的瞬间会产生接触不稳定,引起输出电平不稳定,即出现“键抖动”现象。键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次按键操作进行多次处理,从而可能产生错误,因此必须消除抖动的不良后果。消除“键抖动”不良后果的方法主要有硬件和软件去抖动两种方法。硬件去抖动通常有双稳去抖电路、单稳去抖电路和RC滤波去抖电路。其中RC去抖电路简单实用。软件去抖动的原理是根据按键抖动的特性,在第一次检测到按键按下后,执行10ms左右的延时子程序后再确认该键是否确实按下,从而消除抖动。2. 键盘扫描控制方式有几种?各有何优缺点?答:单片机应用系统中,对键盘的处理工作仅是CPU工作内容的一部分,CPU好要进行数据处理、显示和其他输入输出操作,因此键盘处理工作既不能占用CPU太多时间,又需要CPU对键盘操作能及时作出响应。CPU对键盘处理控制的工作方式有以下几种:程序控制扫描方式。程序控制扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号要求。程序控制扫描方式的键处理程序固定在主程序的某个程序段。当主程序运行到该程序段时,每次扫描键盘,判断是否键输入,若有,则计算按键编号,执行相应键功能子程序。这种工作方式,对CPU工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。定时控制扫描方式。利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。定时控制扫描方式与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时/计数器定时控制,定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。中断控制方式。中断控制方式是利用外部中断源,响应键输入信号。当无键按下时,CPU执行正常工作程序。当有键按下时,CPU立即产生中断,在中断服务子程序中扫描键盘,判断是哪一个键被按下,然后执行该键的功能子程序。这种控制方式克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。3. 用单片机扩展8155 I/O口,连接一个3行6列键盘,试画出电路图并编制键盘扫描程序。解:36矩阵键盘扩展电路如下键盘扫描程序如下:KEY1: ACALL KS1 ;调用判断有无键闭合子程序 JNZ LK1 ;有键闭合时,(A)0,转消抖动 AJMP KEY1 ;无键闭合时,转起始LK1: ACALL D12MS ;调用12ms延时程序 ACALL KS1 ;再次判断有无键闭合 JNZ LK2 ;确认有键闭合,转逐列逐行扫描 AJMP KEY1 ;否转起始LK2: MOV R2,#0FEH ;送首列扫描字 MOV R4,#00H ;送首列号LK4: MOV DPTR,#7F01H ;选中8155PA口 MOV A,R2 MOVX DPTR,A ;送列扫描字 INC DPTR INC DPTR MOVX A,DPTR ;读8155PC口 JB ACC.0,LONE ;第0行无键闭合,转查第1行 MOV A,#00H ;第0行有键闭合,该行首键号送A AJMP LKP ;转去求键号LONE: JB ACC.1,LTWO ;第1行无键闭合,转查第2行 MOV A,#06H ;第1行有键闭合,该行首键号送A AJMP LKPLTWO: JB ACC.2 , NEXT ;第2行无键闭合,转查第3行 MOV A,#0CH ;第2行有键闭合,该行首键号送A LKP: ADD A , R4 ;键号=行首键号+列号 PUSH ACC ;键号进栈保护LK3: ACALL KS1 JNZ LK3 ;等待键释放 POP ACC ;键释放,键号送A RET ;键扫描结束,(A)=键号NEXT: INC R4 ;指向下一列 MOV A,R2 ;判断8列扫描完否 JNB ACC.5 , KEY1 ;8列扫描完,未查到闭合键,转开始 RL A ;未扫描完,列扫描字左移一位 MOV R2,A AJMP LK4 ;转下一列扫描KS1: MOV DPTR,#7F01H ;判断有无键闭合子程序 MOV A,#00H MOVX DPTR,A ;从PA口送出全0 INC DPTR INC DPTR MOVX A,DPTR ;读入PC口状态 CPL A ANL A,#00000111B ; 保留低3位,(A)0,有键闭合 RETD12MS: MOV R7,#18H ;延时12ms子程序(晶振12MHz)D12A: MOV R6,#0F8H DJNZ R6,$ DJNZ R7,D12A RET4. 编写图3-4所示独立式键盘输入子程序。参考程序如下:;主程序部分如下ORG0000HSTART:LJMPMAIN;跳转到主程序ORG0003HLJMPINT0;转向中断服务程序ORG0030HMAIN:;初始化LOOP:LCALL KEY;调键盘扫描子程序;省略的主程序SJMPLOOP;键盘输入子程序如下:KEY:SETB P2.7;打开三态门,允许键盘输入 MOV P0 , #0FFH ;置P1口为输入方式 MOV A , P0 ;读键值 CPL A ANL A , #07H ;屏蔽高5位 JZ KEYRET ;无键闭合,返回 ACALL D12MS ;延时12ms,去抖动 MOV A , P0 ;再测有无键闭合 CPL A ANL A , #07H JZ KEYRET; 真的没有键闭合,返回 JB ACC.0 , A0 ;判闭合键键号,;转相应程序入口 JB ACC.1 , A1 JB ACC.2 , A2KEYRET:RETA0: CLR P2.7;关闭三态门LCALL K0 ; 执行K0键功能程序RETA1: CLR P2.7;关闭三态门LCALL K1 ; 执行K1 键功能程序RETA2: CLR P2.7;关闭三态门LCALL K2; 执行K2键功能程序RET5. 编写图3-11所示矩阵式键盘输入子程序。键盘输入子程序如下:ORG0000HSTART:LJMPMAIN;跳转到主程序ORG0003HLJMPINT0;转向中断服务程序ORG0030HMAIN:SETBIT0;设置中断SETBEASETB EX0;省略的主程序ORG0200H;中断服务程序INT0:PUSH PSW;保护现场PUSHACCNOPNOPSMKEY: MOVP1,#0FH;置p1口高4位为0 ,低4位为输入状态MOVA,P1;读P1口ANLA,#0FH;屏蔽高4位CJNEA,#0FH,HKEY;有键按下,转HKEYSJMPSMKEY;无键按下返回HKEY:LCALLDELAY10;延时10ms,去抖MOVA,P1ANLA,#0FHMOVB,A;行线状态存放在B的低4位CJNEA,#0FH,WKEY;确认有键按下,转判哪一键按下SJMPSMKEY;是抖动转回WKEY:MOVP1,#0F0H;置p1口高4位为输入 ,低4位为0MOVA,P1;ANLA,#0F0H;屏蔽高4位ORLA,B ;列线状态在高4位,与行线状态合成于A中;省略的键处理程序POPACC ;恢复现场POPPSW;RETI ;中断返回项目4 串行通信技术1. 简述同步通信和异步通信的区别。答:在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据均是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。在同步通信中,通信时发送和接收双方建立时钟直接控制,使双方达到完全同步。它是采用串行传送数据的通信方式,一次通信只传输一帧信息。2. 简述并行通信和串行通信的优缺点。答:并行通信的速度快,传输线多,成本高,适合近距离的场合。串行通信的速度慢,传输线少,特别适合分级、分层和分布式控制系统及远程通信。串行通信具有简单易行控制方便灵活通信可靠等特点并在硬件实现上具有经济性和实用性所以在很多场合得到了应用。3. 串行通信有哪几种工作方式?它们有什么特点? 答:P89C5x单片机的串行口有四种工作方式,通过SCON中的SM1、SM2位来定义。在方式0下,串行口作为同步移位寄存器使用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口。在方式1下,串行口为波特率可调的10位通用异步接口UART。发送或接收的一帧信息包括1位起始位“0”,8位数据位和1位停止位“1”。方式2下和方式3,串行口为11位UART,传送波特率与SMOD1有关。方式2的波特率固定为晶振频率的1/64或1/32;方式3的波特率由T1、T2的溢出率和PCON中的SMOD1位决定。发送或接收的一帧数据包括1位起始位“0”,9位数据位(1位附加的第9位,发送时SCON中的TB8,接受时为RB8)和1位停止位“1”。4. 串行通信的RS-232C总线有什么特点?答:RS-232C是一种异步串行通信总线标准。它是由EIA(美国电子工业协会)制定的数据终端设备(DTE)与数据连接设备(DCE)间的物理接口标准。标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。RS-232C总线为25根,采用D型25芯插头座(或总线为9根,采用D型9芯插头座)。5. 设单片机串行口工作于方式1,晶振频率为12MHz,定时器T1工作于方式2作为波特率发生器,要求波特率为2400b/s,SMOD为0。计算T1的时间常数和波特率误差,并编写初始化程序。解:波特率=,X为计数初值计算得:X=F3H=243实际波特率=波特率误差:4 b/s初始化程序:START:MOV TMOD , #20H;T1工作方式2MOV TL1 , %0F3H;T1计数初值MOV TH1, #0F3HCLR ET1;禁止T1中断SETB TR1;启动T1MOV SCON , #40H;串行方式1,禁止接收MOV PCON , #00H;置SMOD=0CLR ES;禁止串行口中断6. 设单片机以串行口方式1进行数据传送。晶振频率为12MHz,波特率为2400b/s(SMOD为0)。发送片外RAM首址2000H存放的16个数据,先发送数据长度,再发送16个数据。编写发送子程序。解:本题波特率计算和5题一样,不再复述。发送子程序编写如下:TXDA:MOV TMOD , #20H;T1工作方式2MOV TL1 , %0F3H;T1计数初值MOV TH1, #0F3HCLR ET1;禁止T1中断SETB TR1;启动T1MOV SCON , #40H;串行方式1,禁止接收MOV PCON , #00H;置SMOD=0CLR ES;禁止串行口中断MOV DPTR , #2000H;发送数据区首地址MOV R7 , #10H;发送16个数据MOV SBUF , #10H;先发送数据长度JNB TI , $;等待数据发送完毕CLR TI;清发送中断标志TXDA1:MOVX A , DPRT;读一个数据MOV SBUF , A;发送JNB TI , $;等待数据发送完毕CLR TI;清发送中断标志INC DPTR;指向下一个字节单元DJNZ R7 , TXDA1;所有数据发送完否?未完,继续RET7. 条件同上题,数据长度未知,先接收数据长度,后接收数据。编写接收子程序,接收数据放在内部RAM 30H开始的区域。解:接收子程序编写如下:RXDB:MOV TMOD , #20H;T1工作方式2MOV TL1 , %0F3H;T1计数初值MOV TH1, #0F3HCLR ET1;禁止T1中断SETB TR1;启动T1MOV SCON , #40H;串行方式1,禁止接收MOV PCON , #00H;置SMOD=0CLR ES;禁止串行口中断MOV R0 , #30H;设置接收数据区首地址SETB REN;启动接收JNB RI , $;等待接收数据长度CLR RI;清接收中断标志,并重新启动串行接收MOV R7 , SBUFRXDB1:JNB RI , $;读接收数据长度CLR RI;清接收中断标志MOV A , SBUF;读接收数据INC R0;指向下一个数据存储单元DJNZ R7 , RXDB1;判数据接收完否?未完继续RET8. 设计并编程,完成单片机的双机通信程序,将甲机片外RAM的2100H211FH单元中的数据块通过串行口传送到乙机的80H9FH单元。发送子程序如下: MOV SCON,#80H ;设置串行口为方式2 MOV PCON,#80H ;SMOD=1 MOV DPTR,#2100H ;设数据块指针 MOV R7,#20H ;设数据块长度START: MOVX A,DPTR ;取数据给A MOV C,P MOV TB8,C ;奇偶位P送给TB8 MOV SBUF,A ;数据送SBUF,启动发送WAIT: JBC TI,CONT ;判断一帧是否发送完。若发送完,则清TI,;取下一数据 AJMP WAIT ;未完等待CONT: INC DPTR ;更新数据单元 DJNZ R7,START ;循环发送至结束 RET接收子程序如下: MOV SCON,#80H ;设置串行口为方式2 MOV PCON,#80H ;SMOD=1MOV R0,#80H ;设置数据块指针MOV R7,#20H ;设置数据块长度S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论