下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章1.89C51、87C51、80C51 和 80C31 单片机的主要区别在那里?答: 相同之处是: 制造工艺都为 CHMQS 都有 128 字节片内 RAM 两个定时/ 计数器、4 个 8 位 I/O 并行口,一个串行口和 5 个中断源。主要区别:189C51 片内 4K 字节 FLASHRO;M287C51 片内 4K 字节 EPRO;M380C51 片内 4K 字节 掩膜 ROM;480C31 片内无程序存储器。2. MCS-51 单片机引脚有多少 I/O 线?它们和单片机对外的地址总线和数据总线 有何关系?答:4 个 8 位 I/O 并行口,一个串行口;其中 P0 口为外接程存和数
2、存的地址低 8 位和数据总线的时分复用接口;其中 P2 口为外接程存和数存的地址高 8 位总线接口;其中 P1 口为真正的用户口线;其中 P3 口有第 2 功能;以上 4 个口线在没有专用功能时,也可以做通用 I/O 口线用。3. 简述 8031 片内 RAM 区地址空间的分配特点。答:MCS-51 单片机片内 RAM 256 字节,地址范围为 00H-FFH,分为两大部分:低 128字节(00H7FH为真正的 RAM区; 高 128字节(80H-FFH为特殊 功能寄存器区 SFR。在低 128 字节 RAM 中 , 00H仆 H 共 32 单元是 4 个通用工作寄存器区。 每一个区有 8 个
3、通用寄存器 R0 R7。4. MCS-51 单片机由哪几个部分组成。答:1一个 8 位 CPU;24KB ROM or EPROM(8031 无 ROM)3128 字节 RAh 数据存储器;421 个特殊功能寄存器 SFR54 个 8 位并行 I/O 口,其中 PO、P2 为地址/数据线,可寻址 64KB 程序存 储器和 64KB 数据存储器;6一个可编程全双工串行口;7具有 5 个中断源,两个优先级,嵌套中断结构;8两个 16 位定时器/计数器;9一个片内振荡器及时钟电路。5. MCS-51 单片机的 EA, ALE,PSEN 信号各自的功能是什么?答:都是控制总线1EA/VPP:访问内部程
4、序存储器的控制信号/编程电压输入端。EA = 1时,CPU 从片内读取指令,EA 二 0CPU从片外读取指令。2ALE/PROG :地址锁存允许/编程信号线。3PSEN :外部程序存储器读选通信号。4RSE/VPD:复位输入信号/掉电保护后备电源引脚。6. MCS-51 单片机如何实现工作寄存器组的选择?RS1(PSW.4)、RS0(PSW.3)为工作寄存器组的选择位;1取值为 00 时选择第 0 组工作寄存器, 片内 RAM 地址是 00H-07H,名称 为 R0-R7;2取值为01时选择第1组工作寄存器, 片内RAM地址是08H0FH,名称 为 R0-R7;3取值为10时选择第2组工作寄存
5、器, 片内RAM地址是10H17H,名称 为 R0-R7;4取值为11时选择第3组工作寄存器, 片内RAM地址是18H仆H,名称 为 R0-R7。7什么是时钟周期、机器周期、指令周期?当单片机的时钟频率为12MHZ 时,一个机器周期是多少? ALE 引脚的输出频率是多少?(1)振荡周期:也称时钟周期,疋扌曰为单片机提供时钟脉冲信号的振荡源的周期。(2) 状态周期:每个状态周期为时钟周期的 2 倍,是振荡周期经二二分频后得到的。(3) 机器周期:一个机器周期包含 6 个状态周期 S1S6,也就是12 个时钟周期。在一个机器周期内 ,CPU 可以完成一个独立的操作。(4)指令周期:它是指 CPU
6、完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中,有单周期指令、双周期指令和四周期指令。当单片机的时钟频率为 12MHz 时,一个机器周期是多少 1 卩 s(微秒);ALE引脚的输出频率是多少 2 卩 s(微秒)。第三章1. MCS-51 指令系统按功能分为几类?具有几种寻址方式?他们的寻址范围 如何?答:1按功能分为 5 类,分别是:数据传送类、算术操作类、逻辑操作类、控制 转移类和位操作类;2具有 7 种寻址方式;3立即寻址,寻-址范围是和序存储器;直接寻址,寻址范围是内部 RAM 氐 128 字节和高 128 字节;寄存器寻址,寻址范围是
7、四组工作寄存器 R0R7;寄存器间接寻址, 寻址范围是内部 RAM 的低 128 和外部 RAM 氐 64K 可寻址空 间;基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器;相对寻址,寻址范围是以下一条指令为相对地址的 -128+127 字节范围内;位寻址,寻址范围是可位寻址空间,包括内部 RAM 勺可寻址位,特殊功能寄存器中的可寻址位2.设内部 RAM 中 59H 单元的内容为 50H,写出当执行下列程序段后寄存器 A,RO, 和内部 RAM 中 50H 51H 单元的内容为和值?答:M0V A,59H;( A) =(59H)=50HM0V R0,A ;( R0) =50HM0V A,#
8、00;( A) =00M0V R0,A;( R0) =(50H)=00M0V A,#25H ;( A) =25HM0V 51H,A;( 51H) =25HM0V 52H,#70H ;( 52H) =70H执行下列程序段后 :(A)=25H,(R0)=50H, (50H)=00 、(51H)=25H3. PSW 中 Cy 与 0V 有何不同?下列程序段执行后(Cy) =?( OV二?。MOV A,#56HADD A,#74H答:Cy进位、借位标志位;0V溢出标志位。M0V A,#56H ;(A) =56H=0101 0110 BADD A,#74H ;(A) =56H+74H=0CAH=1100
9、 1010B ,程序执行后:( Cy) =0( 0V) =14. M0VC A,A+DPT 与 MOVX A,DPTR 令有何不同?答:1MOVC A,A+DPTR 寻找的操作数在程序存储器中,地址是:(A)+( DPTR;2M0VX A,DPTR ;寻找的操作数在外部数据存储器中, 地址是: (DPTR)。5. AJMP、LJMP SJMFP 旨令功能上有何不同?答:相同之处,都是无条件转移旨令。AJMP addr11 ;下调指令为基准的 2KB 范围内的跳转指令。 LJMP addr16 ; 转移的目标地址可以在 64KB 程序存储器的任何地方。3SJMP rel ;下调指令为基准的-12
10、8B+127B 范围内的短跳转指令。6.设堆栈指针 SP 中的内容为 60H,内部 RAM 中 30H 和 31H 单元的内容分别为 24H和 10H,执行下列程序段后,61H, 62H, 30H, 31H, DPTF 及 SP 中的内容将有何 变化?PUSH 30HPUSH 31HPOP DPLPOP DPHMOV 30H,#00HMOV 31H,#0FFH答:PUSH 30H( 61H) = (30H) = 24HPUSH 31H(62H) = (31H) = 10HPOP DPL; (DPL) = (62H) = 10HPOP DPH;(DPH) =(61H) = 24HMOV 30H,
11、#00H; (30H) = 00HMOV 31H,#0FFH ; (31H) = 0FFH程序执行后:(61H) = 24H, (62H) = 10H, (30H) = 00H, (31H) = 0FFH,(DPTR)= 2410H7.试分析下列程序段,当程序执行后,位地址 00H 和 01H 中的内容将为何值? P1 口的 8 条 I/O 线为何状态?CLR CMOV A,#66HJC LOOP1CPL CSETB 01HLOOP1: ORL C,ACC.0JB ACC.2,LOOP2LOOP2: MOV P1,A答: CLR C; (Cy)=0L00P1: ORL C,ACC.O ; (C
12、y) =(Cy)V (ACC.O) = 1JB ACC.2, LOOP2 ; 因(ACC.2) = 1L00P2: M0V P1,A ;(P1)= O11O O11O B8.要完成以下的数据传送,应如何用 MCS-51 指令实现? R1 的内容传送到 RO;片外 RAM 20H 单元的内容送 R0; 片外 RAM 20H 单元的内容送片内 RAM 20H 单元; 片外 RAM 1000H 单元的内容送片内 RAM 20H 单元; ROM 2000H 单元的内容送 R0;(6) ROM 2000H 单元的内容送片内 RAM 20H 单元;ROM 2000H 单元的内容送片外 RAM 20H 单元
13、。答: R1 的内容传送到 R0;MOV A,R1MOV R0,A片外 RAM 20H 单元的内容送 R0;MOV R1,#20HMOVX A,R1MOV R0,A 片外 RAM 20H 单元的内容送片内 RAM 20H 单元;MOV R1,#20HJC LOOP1;因此时(Cy)=0,所以不跳转CPL C; (Cy) = 1SETB 01H( 01H)= 1MOV A,#66H; (A) = 66H = 0110 0110 BMOVX A,R1MOV 20H,A 片外 RAM 1000H 单元的内容送片内 RAM 20H 单元;MOV DPTR,#20HMOVX A,DPTRMOV 20H,
14、A ROM 2000H 单元的内容送 R0;MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R0,A(6) ROM 2000H 单元的内容送片内 RAM 20H 单元;MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV 20H,AROM 2000H 单元的内容送片外 RAM 20H 单元。MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R0,#20HMOVX R0,A9. 分析以下程序每条指令执行的结果:MOV A, #25H ; (A) = 25HMOV R1,#33H ; (R1) = 33HMOV 40H,#1AH
15、 ; (40H) = 1AHMOV R0,40H ; (R0) = 1AHADD A,R1; (A) = 25H + 33H = 58HADDC A,R0; (A) = 58H + (1AH) + (Cy) = 58HADDC A,40H; (A) = 58H + 1AH + (Cy) = 72H解:ORG 00H10.设 A=83H R0=17H (17H)=34H,执行下列程序后,(A) = ?;(A) = 1000 0011B A 0001 0111B = 0000 0011BORL 17H,A; (17H) = 0011 0100B V 0000 0011B = 0011 0111BX
16、RL A,R0; (A) = 0000 0011B 0011 0111 = 0011 0100BCPL A; (A) = 1100 1011B11.两个 4 位 BCD 码数相加,被加数和加数分别存于 30H 31H 和 40H 41H 单元中(次序为千位、百位在低地址中,十位、个位在高地址中) ,和数放在 50H、51H 52H 中(52H 用于存放最高位的进位),试编写加法程序。解: ORG 00HMOV 30H, #12H ;MOV 31H, #34HJMOV 40H, #56HJMOV 41H, #78HJMOV A, 31H;取被加数十个位ADD A, 41H;相加, (A) = (
17、31H) + (41H)DA A;十进制调整MOV 51H,A; 存十位个位运算结果MOV A, 30H;取被加数千百位ADDC A, 40H;相加, (A) = (30H) + (40H)DA A;十进制调整MOV 50H,A; 存千位百位运算结果CLR A;清 AADDC A,#0;将进位加到 A 中MOV 52H, A ;SJMP $存进位12.试编写一程序,查找内部 RAM 单元的 20H- 50H 中是否有 0AAH 这一数据, 若有,则 将 5 1 H 单 元 置 为 0 1 H , 若 没 有 , 则 使5 1 H 单 元 置 0 。ANL A,#17HMOV 30H, #0AA
18、H ;MOV R1, #31H ;MOV R0, #20H ;BIJIAO: MOV A, R0CJNE A, #0AAH , LOOP;MOV 51H,#01HSJMP JIESHULOOP: INC R0DJNZ R1,BIJIAOMOV 51H,#00HJIESHU :SJMP $第四章1、若有两个符号数 X, 丫分别存放在内部存储器 50H、51H 单元中,试编写一个程序实现 X*10+Y, 结果存入52H 53H 中1ORG00H0000 78502MOVR0,#50H0002 E63MOVA,R00003 75F00A4MOVB,#0AH0006 A45MULAB0007 086I
19、NC R00008 267ADDA,R00009 088INC R0000A A6F09MOVR0,B000C 0810INC R0000D F611MOVR0,A12END2、在以 3000H 为首地址的外部 RAM 中,存放了 14 个以 ASCII 码表示的 09 的 数,试编写程序将它们转换成 BCD 码,并以压缩 BCD 形式存放在以 2000H 为首 地址的外部 RAM 中。0000 9030002MOVDPTR,#3000H ;原始数据首地址0003 78073MOVR0,#07 ;循环次数0005 79304MOVR1,#30H ;转换结果暂存区指针0007 E05 CH1:
20、MOVX A,DPTR0008 550F6ANLA, #00001111B000A C47SWAP A000B F5F08MOVB,A000D A39INC DPTR000E E010MOVX A,DPTR000F 550F11ANLA, #00001111B0011 45F012ORLA,B0013 F713MOVR1,A0014 0914INC R10015 A315INC DPTR0016 D8EF16DJNZ R0,CH10018 90200017MOVDPTR,#2000H ;转换结果存储区001B 7A0718MOVR2,#07H ;结果个数001D 793019MOVR1,#30
21、H001F E720 CH2: MOVA,R1 ;3、采样的 5 个值分别存放在 R0、R1、R2、R3、R4 中,求出它们的中间值,存放在 R2 中。1ORG00H 0000 78052MOVR0,#50002 79063MOVR1,#60004 7A074MOVR2,#70006 7B085MOVR3,#80008 7C096MOVR4,#91ORG00H000A E47CLRA000BC38CLRC ;000C E89MOVA,R0 ;000D 2910ADDA,R1000E 2A11ADDA,R2 ;000F 2B12ADDA,R30010 2C13ADDA,R4001175F0051
22、4MOVB,#50014 8415DIVAB0015FA16MOVR2,A001617END18 END4、以 BUF1 为起始地址的外部数据存储区中存放着16 个单字节的无符号数,求其平均值并送入R2 中。1ORG00H2BUF1 EQU#1000H0000 9010003MOVDPTR BUF10003 AA004MOVR2,00005 78165MOVR0,#16H0007 E06SUM: MOVX A,DPTR0008 2A7ADDA,R20009 FA8MOVR2,A000A A39INC DPTR000B D8FA10DJNZ R0,SUM000D 75F01011MOVB,#10
23、H0010 8412DIV AB0011 FA13MOVR2,A14END5、试编写程序, 将内部RAM 单元中 DATA 併始的 20 个单字节数依次与单元为起始地址的 20 个单字节数据进行交换12DATA1 EQU#30HDATA2 EQU#50H3LENEQU#164ORG0H0000 78305MOVR0,DATA10002 79506MOVR1,DATA20004 7A107MOVR2,LEN0006 E68 EXC: MOVA,R00007 C79XCHA,R10008 F610MOVR0,A0009 0811INC R0000A 0912INC R1000B DAF913DJN
24、Z R2,EXC14 END6、某场歌手赛,共有 10 个评委,试编写一程序,输入 10 个评分,去掉最高分 和最低分,求平均分(均为 BCD 码)。ORG0HN EQU#5BLOCK EQU#30HISELSORT: MOVR7,NDECR7MOVR1,BLOCKISST1: MOVR0,BLOCKMOVA,R7MOVR6,AMOVA,R0MOVB,AISST2: INC R1MOVA,R1o#V oaavVl2dOI/lv va odljaav navo#laoi/iOdlOVdlO8#lLdOI/l03 ONI ooimodoi/i:av岳暨曹計辛;0#l0dOIAIVlOdOI/l 6
25、#lxjavoonaWiAi岳卸曹計辛;0#l0dOIAIL丄ssi為zNraVlLdOI/lalLdoi/i乙dlaoi/i冷HOXalvoi/i乙丄SSI93 ZNra:LLSSILdlaoi/iVl2dOI/lLdlVOI/l丄ssi or alvaans OdlOMOVB,AMOVA,R2DJNZ R1,ADLMOVR5,0MOVR4,BMOVR3,AMOVR2,#0MOVR1,#8R5R4R3/R2R1 =MOVR1,#00HMOVR2,#0FHMOVR3,#04HMOVR4,#05HMOVR5,#06HLCALL _DIVAJMP $_DIV: ;CLRCMOV30H,#0MOV3
26、1H,#0MOV32H,#0_DIV_LOOP:CLRCMOVA,R3SUBB A,R1MOVR3,AMOVA,R4SUBB A,R2MOVR4,AMOVA,R5R4R3SUBB A,#0MOVR5,AJC _DIV_END_INC_SHANG: CLRCMOVA,30HADDC A,#1MOV30H,AMOVA,31HADDC A,#0MOV31H,AMOVA,32HADDC A,#0MOV32H,ALJMP _DIV_LOOP_DIV_END: CLRCMOVA,R1ADDC A,R3MOVA,R2ADDC A,R4MOVR3,30HMOVR4,31HEND7、编写将一个十六进制数转换为十
27、进制数的子程序2MOVR0,#FEH3MOVR1,#30H4HEXBCD: MOVA,R05MOVB,#1006DIV AB7MOVR1,A 0000 78FE0002 79300004 E8 000575F0640008 840009 F7000A 740A8MOVA,#10000C C5F09XCHA,B000E 8410DIV AB000F 0911INC R10010 F712MOVR1,A0011 0913INC R10012 A7F014MOVR1,B15RET8、在内部 RAM 勺 BLOC!开始的单元中有一无符号数据块,数据长度为编程求其中最大的数并存入 MAX 中MCS511
28、ORG0H2LENEQU#10 ; 数据块长度3MAXEQU#40HLEN 试0000 78304MOVR0,#30H ;BLOC 首地址0002 790A5MOVR1,LEN0004 196DECR1 ; 循环次数0005 C37CLRC0006 E68LOOP: MOVA,R00007 089INC R00008 9610SUBB A,R00009 400211JC EXCHANG000B 800212SJMP NEXT000D 86F013 EXCHANG: MOVB,R0000F C314NEXT: CLRC0010 D9F415DJNZ R1,LOOP0012 85F04016MOV
29、40H,B ; MAX 单元 17END9、试编程将内部 RAM 中 41H43H 单元中的数左移 4 位,移出部分送 50H题意不清。10、在外部 RAM 中 BLOCK 始的单元中有一数据块,数据长度为LEN 试编程统计其中的正数、负数和零的个数分别存入内部RAM 的 Pcount、Mcoun 和 Zcount单元。MCS51ORG0HPCOUNT EQ#U30HMCOUNT EQ#U31HZCOUNT EQ#U32H0000 78407MOVR0,BLOCK ;BLOCI 首地址0002 790A8MOVR1,LEN0004 E69LOOP: MOVA,R00005 C310CLRC00
30、06 B4000411CJNE A,#0H,SULT10009 053212INC 32H000B 800913SJMP SULT2000D 3314SULT1: RLCA;移出符号位以判断正负000E 400415JC NEG0010 053016INC 30H0012 800217SJMP SULT20014 053118NEG: INC 31H0016 0819SULT2: INC R00017 D9EB20DJNZ R1,LOOPBLOCK EQU#40H611、试编写一查表求平方的子程序 SQR 设 X 在累加器 A 中,A 小于 15,平方数LENEQU/10;数据块长度R7 中)
31、。0000 900008MOVDPTR,#TABMOVR0,#30H存入工作寄存器0003 78300005 E64MOVA,R00006 935MOVC A,A+DPTR0007 FF6MOVR7,A0008 010104097TAB:DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225000C 10 19 24 310010 40 51 64 790014 90 A9 C4 E18END12、试编写一程序,将外部数据区 DATA1 单元开始的 50 个单节数逐一依次移动 到内部 RAM 中 DATA2 单元开始的数据区中。 MCS511OR
32、G0H2DATA1EQU#1000H3DATA2EQU#30H4LENEQU#10H0000 9010005MOVDPTR,DATA10003 78306MOVR0,DATA20005 79107MOVR1,LEN0007 E08LOOP: MOVX A,DPTR0008F69MOVR0,A0009A310INC DPTR000A0811INC R0000B D9FA12DJNZ R1,LOOP13END13 、 14,略ATr-rr第五章1、简述中断、中断源、中断源优先级及中断嵌套的含义。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使C
33、PU 暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下 去、。中断的意义在于资源共享和应急处理。中断的功能有四:一、调整 CPU 与外设的速度配合;二、实时控制的实现;三、故障检测;四、实现人机交流引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。 通常中断源有以下几种:(1)外部设备请求中断。一般的外部设备(如键盘、打印机和 A/D 转换器 等)在完成自身的操作后,向 CPU 发出中断请求,要求 CPU 为他服务。 由计 算机硬件异常或故障引起的中断,也称为内部异常中断。(2) 故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。
34、如 运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等, 这些装置的报警信号都能使 CPU 中断,进行相应的中断处理。(3) 实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU 发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU 转去完成检测和控制工作。(4) 数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断, 如磁盘、磁带机或 CRT 等直接与存储器交换数据所要求的中断。为了使得系统能及时响应并处理发生的所有中断,系统根据引起中断事件 的重要性和紧迫程度,硬件将中断源分为
35、若干个级别,称作中断优先级。中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断 请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处 理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续 执行,这个过程称为是中断嵌套。2、MCS-51 单片机提供了几个中断源?几个中断优先级?MCS-51 单片机的中断源共有三类,分别是外部中断、定时计数器中断和串 行通信口SCO( Serial Port Con trol Register)串行口控制寄存器中断,第一类有 IEO 和 IE1,第二类有 TFO 和 TF1,第三类的 RI、TI 合二为一。MCS-51 单
36、片机分两个优先级,每个中断源的优先级都可以通过中断优先级 寄存器IP 中的相应位进行设定。在同级优先级中,五个中断源的优先级次序 由高到低分别是:IEO、TFO、IE1、TF1、RI 或 TI。3、简述 TCON SCON IE、IP 四个特殊功能寄存器各位的定义及功能。TCON( Timer Control Register)定时器/计数器控制寄存器TCON 在特殊功能寄存器中,字节地址为 88H,位地址(由低位到高位)为 88H 8FH,由于有位地址,所以可以于进行位操作。TCON 的作用是控制定时器的启、停,标志定时器溢出和中断情况。其中,TFl,TRl,TF0 和 TR0 位用于定时器
37、/计数器;IEI,ITl,IE0 和IT0 位用于中断系统。 如图所示:TF1TR1TF0TR0IE1IT1IE0IT0其中, TF1:定时器 1 溢出标志位。 当定时器 1 计满溢出时, 由硬件使 TF1 置“1 ”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“ 0”。TR1:定时器 1 运行控制位。由软件清“ 0”关闭定时器 1。当 GATE=1 且 INT1 为高电平时,TR1 置“1”启动定时器 1;当 GATE=0 TR1置“1”启动定时器 1。TF0:定时器 0 溢出标志。其功能及操作情况同 TF1。TR0 定时器 0 运行控制位。其功能及操作情况同
38、TR1。IE1 :外部中断 1 请求标志位。IT1 :外部中断 1 触发方式选择位。当 IT 仁 0,为低电平触发方式;当IT1=1,为下降沿触发方式。IE0 :外部中断 0请求标志位。IT0 :外部中断 0 触发方式选择位。当 IT0=0,为低电平触发方式;当 IT0=1,为下降沿触发方式。TCON 中低 4 位与中断有关。由于 TCON 是可以位寻址的,因而如果只清溢 出或启动定时器工作,可以用位操作命令。例如:执行“CLRTF0”后则清定时器 0 的溢出;执行“ SETB TR1 后可启动定时器 1 开始工作。寄存器地址 98H,位寻址 9FH- 98Ho位地址9F9E9D9C9B9A9
39、998位符号SM0SM1SM2RENTB8RB8TIRISM0 SM1 串行口工作方式选择位SM2 多机通信控制位REN 允许/禁止串行口接收的控制位TB8:在方式 2 和方式 3 中,是被发送的第 9 位数据,可根据需要由软件置 1 或 清零,也可以作为奇偶校验位,在方式 1 中是停止位。RB8 在方式 2 和方式 3 中,是被接收的第 9 位数据(来自第 TB8 位);在方式1 中,RB8 收到的是停止位,在方式 0 中不用。TI-串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置 1;在转向中断服务程序后,用软件清0oRI- 串行口接收中断请求标志位当接收完一帧串行数据后,由硬件置
40、 1;在转向中断服务程序后,用软件清 0o此处的“软件清零”,意指需要用户用指令清零。IE (interrupt Enable Register):中断允许控制寄存器寄存器地址 A8H,位寻址 AFHA8H位地址AFAEADACABAAA9A8位符号EA/ET2ESET1EX1ET0EX0EA 中断允许总控制位当 EA=0 时,中断总禁止。当 EA=1 时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。EX0( EX1):外部中断允许控制位当 EX0 ( EX1 )= 0 禁止外中断当 EXO ( EX1 )= 1 允许外中断ETO(EXI):定时/计数中断允许控制位当 ET
41、O (ET1)= 0禁止定时(或计数)中断当 ETO (ET1)= 1允许定时(或计数)中断ET2 定时器 2 中断允许控制位,在 AT89S52 AT89C52 中ES:串行中断允许控制位当 ES= 0禁止串行中断当 ES= 1允许串行中断IP (Interrupt Priority Register):中断优先级控制寄存器寄存器地址 B8H 位寻址 BFH B8H位地址BFBEBDBCBBBAB9B8位符号/PT2PSPT1PX1PT0PX0PX0 外部中断 0 优先级设定位;PT0 定时中断 0 优先级设定位;PX1 外部中断 1优先级设定位;PT1 定时中断 1 优先级设定位;PS 串
42、口中断 优先级设定位;PT2 定时器 2 优先级设定位(8052 才有)。4、简述 MCS-51 单片机的中断响应过程。MCS-51 单片机的中断响应过程可简单归纳为 5 步:(1) 中断源检测:在每条指令结束后,系统都自动检测中断请求信号,如果有 中断请求,且 CPI#于开中断状态下,则响应中断。(2)保护现场:在保护现场前,CPU 自动将当前 PC 压入堆栈。此时,一 般要关中断,以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到 的寄存器推入堆栈。(3)中断服务:即为相应的中断源服务。(4)恢复现场:用堆栈指令将保护在堆栈中的数据弹出来,在恢复现场前要关中断,以防止现场被破坏。在恢
43、复现场后应及时开中断。(5) 返回:CPU 将推入到堆栈的断点地址弹回到程序计数器,从而使CPU 继续执行刚才被中断的程序。5、说明 MCS-51 单片机响应中断后,中断服务程序的入口地址。MCS-51 单片机响应中断后,其中断矢量是由硬件自动生成的。各中断源的中断 服务程序的入口地址如下表。中断源外部中断0定时器TO中断外部中断1定时器T1中断串行口中断定时器T2中断(仅8052有6 指出哪几个中断申请标志在 CPU 响应中断响应后能被硬件自动清零。除了串行通信中断申请标志在 CPU 响应中断后需要用户用软件指令清 零中断申请标志外,其余的中断源的申请标志都是在 CPU 向应后由硬件自动 清
44、零的。它们分别是:外部中断 0 申请标志(IE0)、外部中断 1 申请标志(IE1 )、 定时计数器 0 溢出标志(IT0)和定时计数器 1 溢出标志(IT1 )。7、在 MCS-51 单片机的应用系统中,如果有多个外部中断源,怎样进行处理?在多中断源的系统中, 假如各中断源之间很少发生竞争, 那么采用“线或非” 连接,用软件查询的方式进行控制如图。中断矢量0003H000BH0013H001BHOO23H002BH如果个中断源之间有优先级的区别,固定优先级时用“菊花链”电路,不定优先级时用 8259.8、 外部中断 INTO、INT1 的两种触发方式在原理上有何区别?如何用软件设置?ITx
45、为外部中断触发方式选择。当 ITx 为 0 时为低电平触发方式,CPU 在每 个机器周期的 S5P2 采样 ITx,当 Itx 输入低电平的时,就置位 IEx,采用这 种触发方式时,外部中断源的低电平必须保持到 CPU 响应为止。ITx 为 1 的时候边沿触发方式,CPU 在每个机器周期的 S5P2 采样 ITx,如果 在相邻的两个机器周期内,前一个机器周期为高,后一个机器周期为低,则 置位 IEx,因此,采用边沿触发时,高电平和低电平的保持时间需在12 拍以上。设置外部中断信号触发方式,可通过对TCOF 寄存器(字节地址 88H,位地址 88H8FH 中的 ITx 位置一或置零进行。9、 在
46、一个应用系统中, 晶振频率为 12MHz 一个外部中断请求信号的宽度是 300ns 的负脉冲,该采用哪种触发方式?如何实现?晶振频率为 12MHZ 寸,机器周期为 1 微秒,采用边沿触发时,请求信号至少 应该保持 1 微秒,所以只能对原信号进行展宽,常用的方法是连接一个单稳 态电路,其19+5VO31JO1/0 -c_ 13亘h-苣4O+5V他 |20 |1V业PLOSiPL IPl.2PLJPI,4Pl.3PI.6FL7P2.0F1.1P2.2P13Pl 4P2.JP2.4P2.7PO.QP&.lPO.lP&3PMPfl.5KUP0.7XTALl釀XTAL1RESET/VrtPJOiRXD)
47、P34(TXDP12(IHT0)P23(lNfnP3.*(T0)P3.J(T1)P3.(WI)F3.7(RDALEFROG3T珂+5VII电靈开齬时常数不在 1-1.5 微秒之间即可。10、MCS-51 的中断服务程序能否放在 65KB 程序存储器的任意区域?如何实现?MCS-51 的中断服务程序可以放在 65KB 程序存储器的任意区域,只要在对应的中 断矢量入口填写相应的跳转指令即可。例如外部中断 IE1 的中断服务程序的起 始地址为3400H,则在 0013H 单元内填写 LCALL 3400H。第六章1、8051 单片机内设几个可编程的定时/计数器?它们有几种工作方式?如何选 择和设定?
48、作为定时器或计数器,它们的波特率各为多少?8051 单片机内设有两个钧为 16 位的可编程的定时/计数器,共有 4 种工作 方式,即:方式 0 13 位定时/计数器、方式 1 16 位定时/计数器、方式 2 自 动重载初值得 8 位定时/计数器和方式 3T0 为两个独立的 8 位定时/计数器, 在方式 3 下,T1停止工作。8051定时/计数器的工作方式由控制寄存器 TMOD勺M0 M1两位设置, 因为 TMO的地址为 89H,所以 M0 M1 不能位寻址,只能通过字节操作的方式对 M0 M1 的值进行设定。当用定时/计数器作为波特率发生器时,根据串口的工作模式,有三种情形: 方式0 的波特率
49、为主振频率 fosc 的十二分之一;方式 2 的波特率依照下式确定:QSMODBaud rate = fosc,其中,SMO 为 PCOh 寄64存器中的波特率倍增位。方式 1 和方式 3 的波特率计算依照下列关系求的 TH1 即可:SMODBaud rate 二一fs321一汉(256TH1)一定时/计数器作定时器用时,其定时时间有哪些因素有关?做计数器用时,对外 部计数频率有何限制?8051 的定时 / 计数器工作在定时器状态时 , 输入的时钟脉冲是由晶体振荡器的 输出经 12 分频得到的 , 故其频率为晶振频率的十二分之一。所以,定时输出是 晶振频率处以 12 再除以计数值。8051 的
50、定时 / 计数器工作在计数器状态时,需要两个机器周期才能识别一个从 “1”到“ 0”的跳变 , 故最高计数频率不大于晶振频率的二十四分之一。3、8051 单片机的晶振频率为 6MHz 若只使用 T0 产生 500 微秒定时,可以选择 哪几种定时方式?分别写出定时器的方式控制字和计数器初值。选择方式 0 或方式 1,计数器初值为 8192-250, 或 65536-250。.此处给一个 C 语言写的程序段,定时信号由 P1.0 输出:ORG 0000HLJMP MAINORG 000BHLJMP TO_INTERRUPTMAIN:SETB EAMOV TH0, (65536-250)/256MO
51、V TL0, (65536-250)%256SETB TR0SETB ET0SJMP $T0_INTERRUPT:CLR TR0MOV TH0, (65536-125)/256MOV TL0, (65536-125)%256P1A0 = P1A0SETB TR0RETI4、某 8051 系统晶振频率为 6MHz 先欲从 P1.7 引脚输出一个连续 5Hz 的方波信 号,请编写程序。5Hz 的方波周期为 200 毫秒,高低电平各持续 100 毫秒,若晶振频率为 6MHz, 则机器周期为 2 微秒,故其计数值应为:N=100ms/2y s=50000采用方式 1 进行计数,则 X=M-N=6553
52、6-50000=15536H=0C350H程序编写如下:MOVTMOD, #05H; 设置 T0 工作方式,定时,方式 1MOVTHQ #0C3H;写入计数器初值MOVTL0, #050H;SETB TR0;启动 T0LOOP: JBCTF0, $;查询定时器溢出标志MOVTHQ #0C3H;MOVTL0, #050HCPL P1.7SJMP LOOP;END也可以用 C 语言编写:用定时/计数器 T0 从 P1.7 输出周期为 5s 的方波,晶振频率为 6MHz#in elude #defi ne uchar un sig ned char#defi ne uint un sig ned i
53、ntsbit D1= P1A0;uchar a;void init()/ 初始化TMOD=0 x01;/选择定数计数器 0 的工作方式为 16 位定时器TH0=(65535-50000)%256; / 赋初值,定时 100msTL0=(65535-50000)/256;EA=1;/中断控制允许ET0=1;a=0;TR0=1;/启动定时器 0void time0() interrupt 1 /定时器 0 中断函数TH0=(65535-50000)%256; / 赋初值,定时 100msTL0=(65535-50000)/256;a+;TR0=1;void mai n()in it();while
54、(1)while(a=25)/半个周期(2500mS 时,P1.7 上的电平跳变一次。a=0;P1.7=P1.7;/ 取反5、某单片机系统,时钟频率为 12MHz 定时/计数器 T0 用于 20ms 定时,T1 用于 100次计数,两者要求重复工作,问:(1 )、外部计数脉冲从何引脚输入?(2)、编写达到上述要求的程序。(3)、利用定时/计数器 T0、T1 编写延时 2S 的程序答:(1)既然使用 T1 作为计数器,外部计数脉冲当然应该从 P3.5 输入(2) TO 用作 20ms 定时,故 N0=20ms/g s=20000X0=M-N=65536-20000=45535=B1E0HMOVT
55、MOD, #15H;T0 定时,方式 1; T1 计数,方式 1MOVTH0, #0B1H;写入 T0 定时器初值MOVTL0, #0E0H;MOVTH1, #0FFH;写入 T1 计数器初值MOVTL1, #09CH;MOVSP, #60H;设置堆栈T1 的计数值为 100,所以 X=65536-100=65436=FF9CH为使俩部件同时工作,将 T0 设为查询方式,T0 设为中断方式ORG 001BHAJMP T1INTSETB TR0;SETB TR1;LOOP: JBCTF0, $;MOVTH0,#0B1H;MOVTL0,#0E0HCLR P1.0;SETB P1.0END启动 T0
56、启动 T1查询定时器溢出标志设定时输出为 P10T1INT: MOVTH1, #0FFH;MOVTL1,#09CH;RETI写入 T1 计数器初值、延时 2s,可以将 T0 设置成方式 1,输出周期为 200 毫秒的等宽脉冲,设该信号由 P1.0 输出。再由 T1 进行计数,将 P1.0 输出连接道 T1 输入。则 T1 的 计数值为 100, 工作方式选方式 1; TO 高低电平各持续 100 毫秒,若晶振频率为 6MHz则机器周期为 2 微秒,故其计数值应为:N=100ms/2y s=50000TO 采用方式 1 进行计数,则 X=M-N=65536-50000=15536=0C350HT
57、1 采用方式 1 进行计数,则 X=M-N=65536-100=65436=0FF9CH方式字: GATE1=,0 C/T1=1, M11=0, M10=1, GATE0=,0 C/T0=0, M01=0,M00=1 故为: 051H程序编写如下:MOVTMOD, #051H;设置 T0 工作方式,定时,方式 1MOVTH0,#0C3H;写入 T0 计数器初值MOVTL0,#050H;MOVTL1,#09CH;写入 T1 计数值MOV TH1,#0FFHSETBTR0;启动 T0LOOP: JBCTF0, $;查询定时器溢出标志MOVTH0, #0C3H;MOVTL0, #050HCPLP1.
58、0SJMPLOOP;JBCTF1,$CPLP1,1;输出 2S 信号MOVTL0, #050H;MOVTL1, #09CH;写入 T1 计数值SJMP LOOPEND6、为什么 T1 用作波特率发生器时常用工作方式 2?若 T1 设置为方式 2,用作 波特率发生器,晶振频率为 6Mhz 求可能产生的波特率的变化范围。答:串行通信通常是持续的,即很少进行但帧通信,这就要求通信时钟(波特率发生器)必须持续工作,同时为确保时钟准确,就要尽量减少计时中断服务 程序中的延时和不确定因素,采用方式2,因为是自动重载计数器初值,简洁、准确。方式 2 下的波特率计算由下式决定:波特率=2SMO女 f osc/
59、64所以其波特率最高为:187500,最低为:93750。7、怎样选择串行口的工作模式? REN 位的作用是什么? TI 和 RI 何时置 1 ?何时清零? 串行口的工作模式选择当然是根据工程需要。 REN 乍为 SCOF 寄存器的允许接收 位,其作用不言而喻,REN 可由用户使用指令进行赋值,REN=1 时,允许串行口 接收数据,否则不能。所以,在进行串行通信时,接受端的 SCON 中的 REN 必须提前(初始化)置 位为 1。8、 试设计一个 8051 单片机双机通信系统, 编程将 A 机片内 RAM 中 60H 6FH 的 数据块传送到 B 机机片内 RAM 中 60H 6FH 单元中。
60、甲机发送(采用查询方式):MOV SCON,# 80H ; 设置工作方式 2MOV PCON,# 00;置 SMOD=0,波特率不加倍MOV R0,# 60H ;数据区地址指针MOVR2,# 10H ;数据长度LOOP: MOV A, R0 ; 取发送数据连接如图示意:MOV C, P ;奇偶位送 TB8MOVTB8, CMOV SBUF, A ;送串口并开始发送数据WAIT: JBCTI, NEXT ;检测是否发送结束并清 TISJMP WAITNEXT: INC R0;修改发送数据地址指针DJNZR2, LOOPRET乙机接收(查询方式):MOV SCON,# 90H;模作模式 2,并允许
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年温州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(b卷)
- 汕尾市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(能力提升)
- 2026年江门市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(夺分金卷)
- 2026年杭州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(预热题)
- 2026年宜昌市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(巩固)
- 昭通市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(突破训练)
- 吕梁市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(夺分金卷)
- 哈尔滨市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解
- 玉溪市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及一套答案详解
- 佳木斯市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(能力提升)
- 检验标本运送流程的培训
- 消防设施日常检查与保养
- 《机器人机构学课件》课件
- 口腔科患者隐私保护制度
- 老年护理行业研究报告
- 广东省环境应急综合管理系统操作手册 (企业人员端)
- 糖尿病临床营养治疗
- 华为采购理念与采购运作剖析
- 铁路120型货车空气控制阀
- 新标准大学英语视听说教程(二)听力原文
- 卫健委健康科普宣传员职责
评论
0/150
提交评论