1452520502单片机期末复习题_第1页
1452520502单片机期末复习题_第2页
1452520502单片机期末复习题_第3页
1452520502单片机期末复习题_第4页
1452520502单片机期末复习题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

第 10 章 串行接口技术1. 8051 有一个全双工的串行口,下列功能中该串行口不能完成的是( D ) 。 (A)网络通信;(B)异步串行通信;(C)作为同步移位寄存器; (D )位地址寄存器。2判断下列说法是否正确: 答:(A)串行口通讯的第 9 数据位的功能可由用户定义。 (对) (B)发送数据的第 9 数据位的内容在 SCON 寄存器的 TB8 位中预先准备好的。 (对) (C)串行通讯帧发送时,指令把 TB8 位的状态送入发送 SBUF 中。 (错) (D)串行通讯接收到的第 9 位数据送 SCON 寄存器的 RB8 中保存。 (对) (E)串行口方式 1 的波特率是可变的,通过定时器/ 计数器 T1 的溢出率设定。 (对)3串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定? 答:串行口有 4 种工作方式:方式 0、方式 1、方式 2、方式 3;有 3 种帧格式:方式 0 为8 位数据,方式 1 为 8 位数据、起始位、终止位,方式 2 和 3 具有相同的帧格式,为 9 位数据、起始位、终止位;方式 0 的发送和接收都以 fosc/12 为固定波特率,方式 2 的波特率=2SMOD/64fosc,方式 1 和方式 3 的波特率=2SMOD/32定时器 T1 的溢出率,T1 的溢出率=(256-X)*12/fosc4为什么定时器/计数器 T1 用做串行口波特率发生器时,采用方式 2?若已知时钟频率、通讯波特率,如何计算其初值? 答:因为定时器/计数器在方式 2 下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了重装参数的操作。定时器 1 在工作方式 2 时的初始值为 X=256-(SMOD+1)/ (384*波特率)*fosc5为什么 MCS-51 串行口的方式 0 帧格式没有起始位(0)和停止位(1)? 答:因为串行口的方式 0 是同步移位寄存器方式,不是用于异步串行通讯的,所以收发双方不需要确定数据帧的起始和终止,所以没有起始位(0)和停止位(1) 。6.常用波特率及其参数选择 Fosc(MHZ) SMOD TH1 初值19200 11.0592 1 FDH9600 0 FDH4800 0 FAH2400 0 F4H1200 0 E8H例题 7.单片机主频 6MHz,波特率 4800bps 要把发送端的 30H3FH 发送到接收端的 40H4FH。写出初始化程序,接发程序,并写出设计过程:方式 1,3 X=256-Fosc*(SMOD+1)/(384*波特率)=256-6M*1/(384*4800)=251.6=FCH发送端:ORG 0000HAJMP MAIN_AORG 0023HAJMP SENDORG 0100HMAIN_A:MOV TMOD,#20HMOV TH1,#0FCHMOV TL1,#0FCHSETB TR1MOV SCON,#0C0H设置串口工作方式 3MOV PCON,#00H波特率不加倍MOV R0,#30HMOV R2,#10HSETB EASETB ESMOV A,R0MOV C,PMOV TB8,C奇偶校验MOV SBUF,ASJMP $-ORG 0200HSEND:CLR TIDJNZ R2,SEND1SJMP FHSEND1:INC R0MOV A,R0MOV C,PMOV TB8,CMOV SBUF,AFH: RETI-END接受端:ORG 0000HAJMP MAIN_B-ORG 0023HAJMP RECV-ORG 0100HMAIN_B:MOV TMOD,#20HMOV TH1,#0FCHMOV TL1,#0FCHSETB TR1MOV SCON,#0C0HMOV PCON,#00HMOV R0,#40HMOV R2,#10HSETB RENSETB EASETB ESSJMP $-ORG 0200HRECV:CLR RIMOV A,SBUFJNB PSW.0,PZJNB RB8,ERRSJMP RIGHTPZ:JB RB8,ERRRIGHT:MOVR0,AINC R0DJNZ R2,FHCLR F0FH: RETI-ERR:CLR RENCLR ESCLR EASETB F0RETI-END-第 9 章 D/A 转换和 A/D 转换例题 1用 DAC0832 作为波形发生器,请编制出连续梯形的程序,设 0832 的口地址为C004H. ORG O100HMAIN:MOV DPTR , #0C004CLR ALOOP1:MOVX,DPTR,ALCALL DELAYINC ACJNE A, #OFFH,LOOP1;MOV R2,#00HLOOP2:MOVX,DPTR,ALCALL DELAYINC R2CJNE R2, #OFFH,LOOP2;LOOP3:MOVX,DPTR,ALCALL DELAYDEC ACJNE A,#00H,LOOP3;MOV R2,#00HLOOP4:MOVX,DPTR,ALCALL DELAYINC R2CJNE R2, #OFFH, LOOP4;SJMP LOOP1DELAY:MOV R3, #XX1DEL1: MOV R4, #XX2DEL2: MOV R5, #XX3DEL3: DJNZ R5, DEL3DJNZ R4, DEL2 DJNZ R3, DEL1RETEND-例题 2若要求设计一数据采集系统,输入为 0-5V,由 IN1 输入,使用 AD0809 芯片每隔 20ms 采集一次,共采集 16 次,并将转换后的数据存入 30H 开始的单元中。(1) 设计有关电路图,含 A/D,译码及相关电路,接线清楚,写明信号名称;(2) 编制有关程序,设 AD 起始口地址为学号最后 2 位 X8,地址译码使用A9-A3 系统时钟为 12MHZ(提示:使用定时器定时中断,并写明定时器参数计算过程;74LS373GCLK2D0D7EOC11111STALEOEP0ALEINT1WRP2.0RDABCVref()Vref(-)IN0IN1IN2IN3IN4IN5IN6IN7A0A7A0 A1 A25 VGNDADC08098031修改上图中的 p2.0 用 A3 到 A9 译码,产生地址: 24x8,24=0011000 A3-A5接 ABC,A9-A6 产生 0011 逻辑选中译码器。x=216 - tfosc/12=216-20X12X1000/12=45536=B1E0HORG 0000HAJMP MAINORG 001BHAJMP T_1MAIN:MOV R4, #10HMOV R1,#30HMOV SP, #60HMOV TOMD, #10H MOV TH1, #0B1H MOV TL1, #0E0H 20ms 定时SETB EASETB ET1 开中断允许SETB TR1MOV DPTR, #XX+1MOV A, #00HMOVX DPTR, A;启动转换SJMP $-T_1: DJNZ R4 LP1SJMP EXITLP1:CLR TR1MOV DPTR, #XX+1MOVX A, DPTRMOV R1,AINC R1MOV TH1, #0B1H MOV TL1, #0E0H SETB TR1; 启动 20ms 定时SJMP OUT_1EXIT:CLR EA 关中断允许OUT_1:。RETIEND第 8 章 LED 显示器和键盘 键盘的按键按 MN 行列矩阵排列,故MN 个键的键盘只需要 M+N 条单片机的I/O 端口线。 48 行列式非编码键盘的接口如下页所示:监视键盘方法 行扫描法和反转法 CPU 通过程序监视非编码盘,在发现有按键按下时转入相应按键处理程序执行。地址偏移量 N = 行首值 + 列值 ,查键值表就可得被按键的键值1.行扫描法 1)判断有无按键令列输出(PA 口)全为零,读行值(PC口) ,若行值低 4 位为全 1,无按键。否则有按键。 2)判断哪一个键按下轮流扫描 PA 口,依次使每条列线变为低电平后,读行值,若非全 1,则按键在此列中,形成键值;否则扫描下一列。 由此,可确定按键的行首键号和列值,进而求得键值偏移量。 按键类型判别: 若被按键的键值=10H,被按键为功能键。2.反转法 1)设定 PA 为输出方式,PC 为输入方式。 2)使 PA 输出全 0,读 PC。 (PC=1101) 3)设定 PA 为输入方式,PC 为输出方式 4)将刚才读入的 PC 内容从 PC 输出。(PC=1101)5)读 PA。 (PA=11111011) 6)由 PA、PC 得到键值。共阴极(1 亮 0 不亮) ;共阳极(0 亮 1 不亮)例题 1. 用 8155 对共阴 LED 显示块进行控制,假设要显示:2012,1 字样,写出对应字型码,画流程图 8155 口地址是 9000H。 (图形:8155a 口输出数据 c 口输出六个控制位)共阳 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H 8-F 80H,90H,88H,83H,0c6H,0a1H,86H,8eH 共阴 3FH,06H,5BH,4FH,66H,6DH,7DH,07H 8-F7FH,6FH ,77H,7CH,39H,5EH,79H,71H,00HORG 1000HORG 0079H:显示的数据段DB 02H,00H,01H,02H,11H,02HORG 1000HDIS: MOV A,#0000 0011BMOV DPTR,#9000HMOVX DPTR,ALP1: MOV R0,#79HMOV R3,#0FEHDIS0: MOV DPTR, #9003HMOV A #0FFHMOVX DPTR,AMOV DPTR, #9003HMOV A,R0ADD A,#0CHMOVC A,A+PCMOVX DPTR,AMOV A,R3MOV DPTR,#9001HMOVX DPTR,AACALL DELAYMOV A,R3JNB ACC.5,LP1RL AMOV R3,AINC R0SJMP DIS0DIS_RET: RET;-TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,80H(小数点); -DELAY: MOV R7,#02HMOV R6,#0FFHDJNZ R6,$DJNZ R7,$-4RET ;-END例题 2. 用 8155 对键盘进行控制。键盘的布局如图,请根据电路图,可写 16 个键盘的编码,若按键为 A,则转打印程序 PRINT,画出键盘扫描的程序流程图。键值键名 0 1 2 3 4 5 6 7 8 9 A B C D E F键值 12 8 4 0 13 9 5 1 14 10 6 2 15 11 7 3键盘位置图 0 1 2 34 5 6 78 9 A BC D E F键盘扫描程序:R4 列号 R2 扫描码MAIN:ACALL KEYSUBB A,06HJZ PRINTSJMP MAIN ORG 0100HKEY: ACALL KSJNZ KEY_1ACALL DELAYAJMP KEYKEY_1: ACALL DELAYACALL DELAYACALL KSJNZ KEY_2AJMP KEYKEY_2: MOV R2, #11111110BMOV R4, #00HKEY_3: MOV DPTR, #0FF21HMOV A, R2MOVX DPTR, AINC DPTRMOVX A,DPTRCPL AJZ NEXTJNB ACC.0 KEY_4MOV A, #00HAJMP KEY_7KEY_4: JNB ACC.1, KEY_5MOV A, #4AJMP KEY_7KEY_5: JNB ACC.2, KEY_6MOV A, #8AJMP KEY_7KEY_6: MOV A, #12KEY_7: ADD A, R4PUSH ACCKEY_8: ACALL DELAYACALL KSJNZ KEY_8POP ACCRETNEXT: INC R4MOV A, R2JNB ACC.3, KEYRL AMOV A,R2AJMP KEY_3KS: MOV DPTR, #0FF21HMOV A, #00HMOVX DPTR, AINC DPTRMOVX A,DPTRCPL AANL A, #0FHRETORG 2000H PRINT:-RET第 7 章 程序存储器拓展和数据存储器拓展8155 命令字:TM2,TM1=01;停止定时器 /计数器TM2,TM1=10;若正在计数,计数长度减为 0 时停止计数TM2,TM1=11;启动,置方式和长度后立即启动计数若正在计数,溢出后按新的方式和长度计数。8155 状态字8155 的定时器 (14 位的减 1 计数器)M2M1=00: 输出单个方波M2M1=01:输出连续方波M2M1=10:输出单个脉冲M2M1=11:输出连续脉冲1.若 A 口定义为 0 基本输入方式,B 口定义为基本输出方式,对输入脉冲进行 16 分频,则 8155 的 I/O 初始化程序为: START:MOV DPTR,#7F05H ;定时器高 8 位地址 7F05HMOV A,#40H ;定时器高字节送 AMOVX DPTR,A ;装入高字节 DEC DPTRMOV A, #10HMOVX DPTR,A; 装入定时器低字节MOV DPTR,#7F00H;指向命令状态口 MOV A,#0C2H ;设置命令字A 入 B 出MOVX DPTR,A ;装入命令字,启动定时器 读 8155RAM(7E007EFF)的 F1H 单元内容: MOV DPTR,#7EF1H MOVX A , DPTR ; 将立即数 41H 写入 8155RAM 的 20H 单元中:MOV A,#41H MOV DPTR,#7E20H MOVX DPTR,A;2764 的地址范围:00001FFFH;6264 的地址范围:2000H3FFFH第 6 章 定时器/计数器1. 使用 T0 定时,使得由 P0.7 输出周期为 2ms 的方波。设单片机时钟为6MHz。使用方式 0 和方式 1 分别实现。请编制程序。1)计算定时器初值 X。X= 213 500 = 8192500 = 7692 换算成 16 进制数为 1E0CH 用高八位和低五位表示(TH0 、TL0 ): F00CH2)编制初始化程序:T0 工作在方式0,方式控制字为00H,TH0=F0H,TL0=0CH编程: ORG 1000HMOV TMOD,#00H; * MOV TH0,#0F0HMOV TL0,#0CHMOV IE,#82HSETB TR0WAIT:SJMP WAIT 3)编制中断程序:ORG 0000H ; 上电复位入口地址LJMP 1000HORG 000BHLJMP TINTORG 300HTINT: CPL P0.7MOV TH0,#0F0HMOV TL0,#0CHMOV IE,#82HRETI 2. 设 8031 时钟频率为 12MHz,请编出利用定时器/计数器 T0 在 P1.0 引脚上输出周期为 2s 的方波程序。1)计算定时器初值 X。X=216 50ms/1us = 15536 换算成 16 进制数为 3CB0H2)编制初始化程序:T0 工作在方式 1,方式控制字为01H,TH0=3CH,TL0=B0H编程: ORG 1000HMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HMOV IE,#82HSETB TR0; MOV TCON,#10H* MOV R0, #14HWAIT:SJMP WAIT 3)编制中断程序:ORG 0000H ; 上电复位入口地址LJMP 1000HORG 000BHAJMP TINTORG 0080HTINT: DJNZ R0, NEXT; CPL P1.0MOV R0, #14HNEXT: MOV TH0,#3CHMOV TL0,#0B0HMOV IE,#82HRETI计数初值的计算:计数器以增 1 的方式计数,溢出时申请中断。1、根据定时值计算出所需要的计数时钟周期数N。t=Tc*N N=t /TcTc计数时钟周期=机器周期=振荡周期*122、根据选择的工作方式,计算计数器溢出所需的计数初值 X方式 0:(13 位)X = 2 13 N方式 1:(16 位)X = 2 16 N方式 2:(8 位) X = 2 8 N定时时间 = 振荡周期*12*(2 n X)X= 2n t/(Tc*12)= 2 n t * f /123、将 X 化为 16 进制数装入 TH 和 TL 中方式 0:(M1 M0=0 0) 13 位定时/计数器方式16 位寄存器只用 13 位,当 TLx 的低 5 位溢出时向THx 进位,而 THx 溢出时向中断标志 TFx 进位硬件置位 TFx,申请中断相关参数的计算:(1)最大计数量: nmax=213=8192(2)已知要求的计数量 n,则计数器初值为:x=213 - n=8192 - n(3)最大定时时间:tmax=21312/fosc=819212/fosc(4)已知要求的定时时间 t,则定时器的初值为:x=213 - tfosc/12=8192 - tfosc/12求得初值以后,应将 x 分配到 TLx 和 THx:(TLx)=000x 4x3x2x1x0B (THx)=x12x11x10x9x8x7x6x5B方式 1:(M1 M0=0 1) 16 位定时/计数器方式 结构图同方式 0,TL1 和 TH1 都是 8 位相关参数的计算:(1)最大计数量: nmax=216=65536(2)已知要求的计数量 n,则计数器的初值为:x=216 - n=65536 - n(3)最大定时时间:tmax=21612/fosc=6553612/fosc(4)已知要求的定时时间 t,则定时器的初值为:x=216 - tfosc/12=65536 - tfosc/12求得初值以后,应将 x 分配到 TLx 和 THx:方式 2(M1 M0=1 0)自动恢复初值的 8 位计数器方式 0 和方式 1 若用于循环定时/计数时,每次计满溢出后,计数器全部为 0,第二次计数器还需重新装入计数初值。如此反复,不仅影响到定时精度,也给程序设计带来不便。方法 2 则可以解决此问题,它具有自动重载功能。方式 2 有利于提高定时精度,比较适合用作精确的脉冲信号发生器,或者串行口波特率发生器。但该方式是 8 位计数结构,计数值有限,最大只能到 255。相关参数的计算如下:(1)最大计数量: nmax=28=256(2)已知要求的计数量 n,则计数器的初值为:x=28 - n=256 - n(3)最大定时时间:tmax=2812/fosc=25612/fosc (4)已知要求的定时时间 t,则定时器的初值为:x=28-tfosc/12=256-tfosc/12求得初值以后,应将 x 分配到 TL0 和 TH0(两者相同):方式 3(M1 M0=1 1)仅限于 T0 前 3 种工作方式,对两个定时器的设置和使用时完全相同。方式3 下,z 则是不同的。方式 3 下的定时器 0方式 3 只适用于定时器 T0。定时器 0 在方式 3 下被拆成两个独立的 8 位计数器 TL0 和 TH0。其中 T0既可计数使用,又可定时使用。TL0 使用原 T0 的各控制位和引脚信号,其功能和操作方式与方式 0和方式 1 基本相同。 TH0 只可以用作简单的内部定时,占用原定时器 T1 的控制位 TR1 和 TF1,还占用 T1 的中断源,其关闭和启动只受 TR1 的控制。方式 3 下的定时器 1定时器 T1 只能用作方式 0、方式 1 和方式 2。由于TR1、TF1 和 T1 的中断源已被定时器 T0 占用。此时只有控制位 C/T 切换控制定时和计数工作方式,且计数溢出时,只能将输出送入串行口。将定时器T1 用作串行口的波特率发生器。当设置好工作方式时,T1 便开始运行;如要停止运行,只需送入一个设置定时器 T1 为方式 3 的方式控制字即可。因为定时器 T1 不能在方式 3 下使用,如果硬把它设置为方式 3,就停止工作。第 5 章 中断系统外部中断的应用-举例例 1:用一个按钮控制 8 个发光二极管,每按动一次按钮,是发光二极管按 L1 L2 . L8 L1 的顺序循环移动点亮一位。解:如图所示。在 P1.0-P1.7 外部连接8 个发光二极管 L1-L8,当 P1.X 输出低电平时,对应的发光二极管被点亮;当 P1.X 输出为高电平时,对应的发光2极管熄灭。在/INT1 引脚上外接一个按钮。当按钮按下时,/INT1 为低电平;按钮释放时,/INT1 为高电平。1. 用中断方式实现单片机复位以后 PC 的值为 0000H,外部中断 1的矢量地址是 0013H,而外部中断 1 的子程序必须放置在从 0013H 开始的 8 个存贮单元,无法实现。考虑到从 0000H 到 0013H 只有 19 个单元空间,不可能放置完整的主程序,因此在 0000H 处放置一条转移指令,将主程序引到别的位置;不同的中断矢量地址之间,只有 8 个存储单元,无法放置完整的终端服务程序,因此在中断入口处也放置一条转移指令,以便将程序引到真正的中断程序的开始位置。一般习惯将中断程序放置在主程序之后。用按钮控制发光二极管ORG 0000H ;PC 复位地址AJMP MAIN ;MAIN 为主程序入口地址ORG 0013H ;外部中断 1 的矢量地址AJMP INT_1 ;INT_1 为外部中断1 服务程序入口地址ORG 0100H ;真正的主程序开始MAIN: MOV SP, #60H ;堆栈初始化MOV A, #11111110B MOV P1, A ;点亮二极管L1SETB IT1 ;将外部中断 1设置为下降沿触发方式SETB EA ;CPU 开中断M1 M0 工作方式 功能说明0 0 方式 0 13 位计数器0 1 方式 1 16 位计数器 1 0 方式 2 自动重新装入初值的 8 位计数器1 1 方式 3 T0:分成两个 8 位计数器;T1:停止计数SETB EX1 ;外部中断 1开中断SJMP $ ;等待中断ORG 0200H ;真正的外部中断 1 服务程序INT_1: JB P3.3, EXITRL A ;修改灯的状态MOV P1, AEXIT: RETI ;中断返回END2.用查询方式实现所谓查询,就是周期性的对按钮的状态进行访问,当查询到按钮为有效电平时就采用相应的处理。ORG 0000HSETB P3.3 ;将 P3.3 设置为输入状态MOV A, #0FEH ;设置为 L1L8 的初始状态LOOP: MOV P1, A JB P3.3, $ ;若按钮未动作,则原地等待JNB P3.3, $ ;等待按钮释放,保证按动一次发光二极管只移动一位RL ASJMP LOOPEND例:双字节加法:设被加数在 R0, R1 中,加数在 R2, R3 中,和存在 R4, R5, R6 中。DADD:MOV A,R0CLR CADD A, R2MOV R4,AMOV A,R1ADC A,R3MOV R5, AMOV A,#00HADC A, #00HMOV R6, ARET 2.MCS-51 单片机内 RAM 的通用寄存器区共有 32 个单元,分为 4 组寄存器,每组 8 个单元,以 R0 R7 作为寄存器名称。4.MCS-51 单片机的存储器分为 4 个物理上相互独立的存储空间,即片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器,按其逻辑关系可分为 3 个逻辑上相互独立的存储器空间。5.MCS

温馨提示

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

评论

0/150

提交评论