《单片机练习题及例题(17页).doc》由会员分享,可在线阅读,更多相关《单片机练习题及例题(17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机练习题及单片机练习题及例题例题单片机课堂练习题单片机课堂练习题/例题总结例题总结习习 题题 和和 思思 考考 题题 一一、一个完整的单片微机芯片内至少有哪些部件?、一个完整的单片微机芯片内至少有哪些部件?、根据程序存储器的差别单片机可以分为那些类型?、根据程序存储器的差别单片机可以分为那些类型?、单片机的主要特性是什么?它适宜于构成一个通用微机系统还是专用微机系统?为什、单片机的主要特性是什么?它适宜于构成一个通用微机系统还是专用微机系统?为什么?么?习题与思考题二习题与思考题二、8051 单片机内包含哪些主要逻辑功能部件?单片机内包含哪些主要逻辑功能部件?、MCS-51 单片机结构上有
2、哪些主要特点?单片机结构上有哪些主要特点?习习 题题 和和 思思 考考 题题 三三、详细描绘、详细描绘 MCS-51 单片机的存储器配置图。单片机的存储器配置图。、MCS-51 单片机是通过哪些方法将程序存储器和数据存储器严格分开的?单片机是通过哪些方法将程序存储器和数据存储器严格分开的?、什么是单片机的特殊功能寄存器?什么是单片机的特殊功能寄存器?8051/8052 各有几个特殊功能寄存器?这些特殊功能各有几个特殊功能寄存器?这些特殊功能寄存器占有的地址范围?寄存器占有的地址范围?、MCS51 单片机有哪些可直接寻址的位?单片机有哪些可直接寻址的位?、什么是堆栈?、什么是堆栈?8031 的堆
3、栈区可以设在什么地方?一般应设在什么区域?如何实现?试的堆栈区可以设在什么地方?一般应设在什么区域?如何实现?试举例说明。举例说明。习题和思考题四习题和思考题四1、试根据、试根据 P1 口和口和 P3 口的结构特性,指出它们作为输入口或第二功能输入口的结构特性,指出它们作为输入口或第二功能输入/输出的条件。输出的条件。2、MCS-51 中无中无 ROM 型单片机在应用中型单片机在应用中 P2 口和口和 P0 口能否直接作为输入口能否直接作为输入/输出连接开关、输出连接开关、指示灯之类的外围设备?为什么?指示灯之类的外围设备?为什么?3、画出、画出 MCS-51 系列单片机进行系统扩展时的三总线
4、结构图。系列单片机进行系统扩展时的三总线结构图。课堂练习一课堂练习一1、8031 有四个工作寄存器区有四个工作寄存器区,由由 PSW 状态字中的状态字中的 RS1、RS0 两位的状态来决定两位的状态来决定,单片机复单片机复位后,若执行位后,若执行 SETBRS1 指令,此时只能使用(指令,此时只能使用()区的工作寄存器。)区的工作寄存器。A、0 区区B、1 区区C、2 区区D、3 区区2.09H 位所在的单元地址是(位所在的单元地址是()A 02HB 21HC 08HD20H3.单片机在进行取指令操作时,指令的地址是由(单片机在进行取指令操作时,指令的地址是由()的内容决定。)的内容决定。A
5、SPBPCC DPTRD PSEN 和和 ALE4.P1 口作输入用途之前必须口作输入用途之前必须()。A外接高电平外接高电平B外接上拉电阻外接上拉电阻C相应端口先置相应端口先置 0D相应端口先置相应端口先置 15.程序计数器程序计数器 PC 用来用来()。A存放指令存放指令B存放上一条的指令地址存放上一条的指令地址C存放下一条的指令地址存放下一条的指令地址D存放正在执行的指令地址存放正在执行的指令地址思思考考题题1.数数 123 可能是可能是()。A.二进制数二进制数B.八进制数八进制数C.十六进制数十六进制数D四进制数四进制数E.十进制数十进制数2.8031 单片机内部单片机内部 RAM
6、包括包括()。A.程序存储区程序存储区B堆栈区堆栈区C工作寄存器及特殊功能区工作寄存器及特殊功能区D位寻址区位寻址区E.中断入口地址区中断入口地址区3.8051 单片机单片机 CPU 的主要功能有的主要功能有()。A.产生控制信号产生控制信号B存储数据存储数据C.算术、逻辑运算及位操作算术、逻辑运算及位操作-第 3 页DI/O 端口数据传送端口数据传送E.驱动驱动 LED4.单片机能够直接运行的程序是(单片机能够直接运行的程序是()。A.汇编源程序汇编源程序B.C 语言源程序语言源程序C.高级语言程序高级语言程序D.机器语言源程序机器语言源程序5.十进制数十进制数 126 其对应的十六进制可表
7、示为其对应的十六进制可表示为()。A8FB8ECFED.7E6.十进制数十进制数 89.75 其对应的二进制可表示为其对应的二进制可表示为().A.B.10C.11D.117.二进制数对应的十六进制数可表示为二进制数对应的十六进制数可表示为()A.192HBC90HC 1A2HD.CA0H8.二进制数对应的十六进制数可表示为二进制数对应的十六进制数可表示为()。A1D3HB,1B6HCDBOHD.666H9.-3 的补码是的补码是()。AB.CD10.CPU 主要的组成部部分为主要的组成部部分为()。A运算器,控制器运算器,控制器B加法器,寄存器加法器,寄存器C.运算器运算器,寄存器寄存器D.
8、运算器,运算器,指令译码器指令译码器11.INTEL 8051 CPU 是是()位的单片机。位的单片机。A16B4C8D.准准 16 位位12.对于对于 INTEL 8031 来说,来说,/EA 脚总是脚总是()A.接地接地B.接电源接电源C.悬空悬空D.不用不用13.在单片机中,通常将一些中间计算结果放在在单片机中,通常将一些中间计算结果放在()中)中A.累加器累加器B控制器控制器C.程序存储器程序存储器D.数据存储器数据存储器14.程序计数器程序计数器 PC 用来用来()。A存放指令存放指令B存放正在执行的指令地址存放正在执行的指令地址C.存放下一条的指令地址存放下一条的指令地址D存放上一
9、条的指令地址存放上一条的指令地址15.指令和程序是以指令和程序是以()形式存放在程序存储器中。形式存放在程序存储器中。A.源程序源程序B.汇编程序汇编程序C.二进制编码二进制编码DBCD 码码16.单片机应用程序一般存放在单片机应用程序一般存放在()中。中。A.RAMBROMC.寄存器寄存器DCPU17.单片机上电后或复位后,工作寄存器单片机上电后或复位后,工作寄存器 R0 是在是在()。A.0 区区 00H 单元单元B0 区区 01H 单元单元C.1 区区 09H 单元单元DSFR18.进位标志进位标志 CY 在在()中。中。A.累加器累加器 AB 算术逻辑运算部件算术逻辑运算部件 ALUC
10、 程序状态字寄存器程序状态字寄存器 PSWD.DPDR19.单片机单片机 8051 的的 XTALl 和和 XTAL2 引脚是(引脚是()引脚)引脚A.外接定时器外接定时器B外接串行口外接串行口C.外接中断外接中断D.外接晶振外接晶振20.8031 复位后,复位后,PC 与与 SP 的值为的值为()。A0000H,00HB0000H,07HC0003H,07HD.0800H,00H21.P0,P1 口作输入用途之前必须口作输入用途之前必须()。A.相应端口先置相应端口先置 1B相应端口先置相应端口先置 0C外接高电平外接高电平D外接上拉电阻外接上拉电阻22.8031 单片机中既可位寻址,又可字
11、节寻址的单元是(单片机中既可位寻址,又可字节寻址的单元是()。A20HB30HC00HD70H23.8031 单片机中片内单片机中片内 RAM 共有共有()字节。字节。A128B256C4KD64K24.当标志寄存器当标志寄存器 PSW 的的 RS0、RS1 分别为分别为 1 和和 0 时,系统选用的工作寄存器组为时,系统选用的工作寄存器组为()。A.组组 0B组组 1C组组 2D.组组 325.8051 的内部的内部 RAM 中,可以进行位寻址的地址空间为中,可以进行位寻址的地址空间为()。A.00H2FHB20H2FHC00HFFHD.20HFFH26.8051 的程序计数器的程序计数器
12、PC 为为 16 位计数器,其寻址范围是位计数器,其寻址范围是()。A.8KB.16KC32KD64K27.8051 单片机中,唯一一个用户不能直接使用的寄存器是单片机中,唯一一个用户不能直接使用的寄存器是()。APSWB.DPTRCPCD.B28.对对 MCS-51 单片机来说,其内部单片机来说,其内部 RAM()。A.只能位寻址只能位寻址D只能字节寻址只能字节寻址C既能位寻又能字节寻址既能位寻又能字节寻址D少部分能位寻址少部分能位寻址29.所谓系统总线,指的是所谓系统总线,指的是()。A.数据总线数据总线B地址总线地址总线C.内部总线内部总线D外部总线外部总线E控制总线控制总线习题和思考题
13、五习题和思考题五1、MCS-51 指令系统有几种寻址方式?如果要对特殊功能寄存器进行操作将使用哪种寻指令系统有几种寻址方式?如果要对特殊功能寄存器进行操作将使用哪种寻址方式?址方式?2、在、在 MCS-51 程序段中,怎样识别位地址和字节地址?程序段中,怎样识别位地址和字节地址?3、怎样区分内部、怎样区分内部 RAM 高高 128 个字节地址以及特殊功能寄存器的地址?个字节地址以及特殊功能寄存器的地址?4、MCS-51 指令系统按其操作功能分几大类?指令系统按其操作功能分几大类?例:设例:设(70H)=60H,(60H)=20H,P1 口为输入口,当前输入状态为口为输入口,当前输入状态为 B7
14、 H,执行下面的程序:执行下面的程序:MOVR0,#70H;(R0)=70HMOVA,R0;(A)=60HMOV01H,R0;(R1)=(70H)=60HMOVB,R1;(B)=20HMOVR0,P1;(70H)=B7H结果为:结果为:(70H)=B7H(B)=20H(R1)=60H(R0)=70H习题与思考题六习题与思考题六1、写出实现以下数据传送的、写出实现以下数据传送的 MCS-51 指令:指令:1)R7 内容传送到内容传送到 R4;2)外部外部 RAM20H 单元内容送单元内容送 R0;3)外部外部 RAM1000H 单元内容送内部单元内容送内部 RAM30H;4)ROM2000H 单
15、元内容送单元内容送 R2;5)外部外部 RAM0456H 的内容送外部的内容送外部 RAM0078H 单元。单元。2、若、若(SP)=26H,(A)=37H,(DPTR)=0CFA 8H;执行;执行 PUSH A,PUSH DPL,POP A,POP DPL指令后,试指出指令后,试指出 SP、A、DPTR 的数值。的数值。3、设设 R0 的内容为的内容为 32H,A 的内容为的内容为 48H,内部内部 RAM32H 内容为内容为 80H,40H 内容为内容为 08H,请指请指出在执行下列程序段后各单元内容的变化。出在执行下列程序段后各单元内容的变化。MOVA,R0MOVR0,40HMOV40H
16、,AMOVR0,#40HMOVR0,A例、将例、将 30H 和和 31H 二单元清二单元清 0,试编程。,试编程。ORG0100HMOVR0,30H;R0 指向指向 30H 单元单元-第 5 页MOVR0,00;30H 单元清单元清 0INCR0;R0 加加 1,指向,指向 31H 单元单元MOVR0,00;31H 单元清单元清 0L:SJMPL;停机停机END例例、将内部将内部 RAM 中中 40H 与与 41H 二单元内容相乘二单元内容相乘,乘积存乘积存 43H,42H 单元中单元中(高字节存在高字节存在 43H单元,低字节存在单元,低字节存在 42H 单元单元);将;将 40H 和和 4
17、1H 二单元内容相除,商存在二单元内容相除,商存在 44H 单元中,余数单元中,余数存在存在 45H 单元中,试编程。单元中,试编程。ORG0100HMOVA,40H;(40H)被乘数)被乘数AMOVB,41H;(41H)乘数)乘数BMULAB;(A)(B)BAMOV42H,A;MOV43H,B;积存积存 43H,42H 单元中单元中MOVA,40H;(40H)被除数)被除数AMOVB,41H;(41H)除数)除数BDIV AB;ABMOV44H,A;商存入商存入 44H 单元中单元中MOV45H,B;余数存入余数存入 45H 单元中单元中L:SJMP L;停机停机END习题与思考题七习题与思
18、考题七已知已知(A)=7AH,(R0)=30H,(30H)=A5H,(PSW)=80H,问执行下列各指令后的结果问执行下列各指令后的结果(每条指每条指令相互独立令相互独立)。(1)XCHA,R0;(A)=;(R0)=(2)XCHA,30H;(A)=;(30H)=(3)XCHA,R0;(A)=;(R0)=;(30H)=(4)XCHDA,R0;(A)=;(R0)=;(30H)=(5)SWAPA;(A)=(6)ADDA,R0;(A)=;(Cy)=;(OV)=(7)ADDA,30H;(A)=;(Cy)=;(OV)=(8)ADDC A,30H;(A)=;(Cy)=;(OV)=(9)SUBBA,30H;(
19、A)=;(Cy)=;(OV)=(10)SUBBA,#30H;(A)=;(Cy)=;(OV)=例、将例、将 40H 单元中的内容,低四位送单元中的内容,低四位送 41H 单元低四位,高四位送单元低四位,高四位送 42H 单元的高四位,试编单元的高四位,试编程。程。ORG0100HMOVA,40H;A(40H)ANL A,0FH;屏蔽屏蔽 A 中高四位,保留低四位中高四位,保留低四位MOV41H,A;41H低四位低四位MOVA,40H;A(40H)ANL A,0F0H;屏蔽屏蔽 A 中低四位,保留高四位中低四位,保留高四位MOV42H,A;42H高四位高四位L:SJMP L;停机停机END例:将例
20、:将 30H 单元中的低四位置单元中的低四位置 1,且不影响高四位的值,试编程。,且不影响高四位的值,试编程。ORG0010HORL30H,0FHL:SJMP LEND习题与思考题八习题与思考题八1、设(、设(A)=B,(R4)=B,请分别写出它们进行,请分别写出它们进行“与与”、“或或”、“异或异或”操作结果。若要操作结果。若要将将R4 内容取反,试问用什么指令实现?内容取反,试问用什么指令实现?2、试编程将内部、试编程将内部 RAM26H 单元位单元位 2、4、6 取反后送取反后送 P1 口。口。例:若例:若 A 中存放待处理命令编号中存放待处理命令编号(07),ROM 中存放着标号为中存
21、放着标号为 PMTB 的转移地址表,则执的转移地址表,则执行下列程序,将根据行下列程序,将根据 A 内的命令编号转向相应的命令处理程序。内的命令编号转向相应的命令处理程序。PM:MOVR1,ARLAADDA,R1;(A)3MOVDPTR,#PMTB;转移表首址转移表首址DPTRJMP A+DPTRPMTB:LJMPPM0;转向命令转向命令 0 处理入口处理入口LJMPPM1;.LJMPPM2;.LJMPPM3;.LJMPPM4;.LJMPPM5;.LJMPPM6;.LJMPPM7;转向命令转向命令 7 处理入口处理入口例:延时程序例:延时程序START:SETBP1.1DL:MOV30H,#4
22、0HDL0:MOV31H,#0F0HDL1:DJNZ31H,DL1DJNZ30H,DL0CPLP1.1AJMPDL习题与思考题九习题与思考题九1、试编一程序将内部、试编一程序将内部 RAM 30H3FH 单元数据传送到外部单元数据传送到外部 RAM 首址为首址为 0F00H 的单元中去的单元中去。2、有两块数据分别在内部、有两块数据分别在内部 RAM20H29H、30H39H,现将两块数据对换,试编程。,现将两块数据对换,试编程。3、从内部、从内部 RAM 24H 单元开始存放有单元开始存放有 30 个用个用 ASC码表示的字符和数据,现要找码表示的字符和数据,现要找 B 字符,字符,若找到则
23、转移到其处理程序,若找不到若找到则转移到其处理程序,若找不到 B 直至找完则停机。试编程。直至找完则停机。试编程。程序示例程序示例一、一、循环程序循环程序例例 1:对数据区的一片单元清零:对数据区的一片单元清零-单重循环程序单重循环程序将将 30H3FH 单元的内容清成零。程序如下:单元的内容清成零。程序如下:ZZZ:MOVR0,#30H-第 7 页MOVR7,#10HMOVA,#00HLOOP:MOVR0,AINCR0DJNZR7,LOOP例例 2:软件延时:软件延时-多重循环程序多重循环程序DMS:MOVR5,#0EHDD1:MOVR7,#64HDD2:NOPNOPNOPDJNZR7,DD
24、2DJNZR6,DD1二、二、算逻处理程序算逻处理程序例例 1:多字节二进制数加法程序:多字节二进制数加法程序设两个加数分别存放在设两个加数分别存放在 40H 和和 50H 为首址的单元中为首址的单元中(先存低位先存低位),求这两个数的和求这两个数的和,并将和并将和存放到存放到 40H 为首址的单元中去。为首址的单元中去。如:如:被加数被加数加数加数(40H)=A7H(50H)=35H(41H)=5BH(51H)=DFH(42H)=2FH(52H)=14H主程序:主程序:JAFA:MOVR0,#40HMOVR1,#50HMOVR2,#04HACALLJASUB.加法子程序:加法子程序:JASU
25、B:CLRCJASB1:MOVA,R0ADDCA,R1MOVR0,AINCR0INCR1DJNZR2,JASB1RET例例 2、多字节乘法程序、多字节乘法程序16 位乘位乘 8 位的乘法程序位的乘法程序。设被乘数放在设被乘数放在 R4、R3 中中,乘数在乘数在 R2 中中,求积并将积放于求积并将积放于 R7、R6、R5 中。中。思路:思路:(R4)(R3)(R2)=(R4)28+(R3)(R2)=(R4)(R2)28+(R3)(R2)CF:MOVA,R2MOVB,R3MULAB;完成完成(R3)(R2)MOVR5,A;积的低位积的低位R5MOVR6,B;积的高位积的高位R6MOVA,R2MOV
26、B,R4MULAB;完成完成(R4)(R2)ADDA,R6;(R3)(R2)高位加高位加(R4)(R2)低位低位MOVR6,A;结果送结果送 R6 保存,进位在保存,进位在 C 中中MOVA,BADDCA,#00H;(R4)(R2)的高位加低位的进位的高位加低位的进位MOVR7,A;结果送结果送 R7RET16 位乘位乘 16 位位(R3)(R2)(R1)(R0)=(R3)28+(R2)(R1)28+(R0)=(R3)(R1)216+(R3)(R0)+(R2)(R1)28+(R2)(R0)例:被乘数例:被乘数 3AD6H,乘数,乘数 03E8H,结果存入,结果存入 33H30H 单元。单元。M
27、OV R0,#30HMOV R2,#3AHMOV R3,#0D6HMOV R6,#03HMOV R7,#0E8HMOV R1,#00HCLR CMUL1:MOV A,R3MOV B,R7MUL ABMOV R0,AMOV R4,BMUL2:MOV A,R2MOV B,R7-第 9 页MUL ABADD A,R4MOV R4,AMOV A,BADDC A,#00HMOV R5,AMUL3:MOV A,R3MOV B,R6MUL ABADD A,R4INC R0MOV R0,AMOV A,BADDC A,R5MOV R5,AJNC MUL4MOV R1,#01HMUL4:MOV A,R2MOV B
28、,R6MUL ABADD A,R5INC R0MOV R0,AMOV A,BADDC A,R1INC R0MOV R0,A三、数制转换程序三、数制转换程序例例 1、将将 A 中的中的 1 位十六进制数转换为位十六进制数转换为 ASCII 码码思路思路:数字数字 09 的的 ASCII 码分别是码分别是 30H39H;英文大写字母英文大写字母 AF 的的 ASCII 码分别是码分别是 41H46H。当当 16 进制数进制数10,需要加,需要加 30H;当当 16 进制数进制数10,需要加,需要加 37H。例例 2、单字节十六进制整数转换成十进制整数(单字节十六进制整数转换成十进制整数(BCD 码
29、)码)将将 40H 单元中一字节的十六进制整数转换成十进制数,分别存入单元中一字节的十六进制整数转换成十进制数,分别存入 31H30H 单元中(高字单元中(高字节在后节在后),试编程。,试编程。思路思路:一字节十六进制数最大值为一字节十六进制数最大值为 FFH,即十进制数为即十进制数为 255(3 位位)。由此可见由此可见,一字节二位一字节二位十六进制数转换成十进制数时可有十六进制数转换成十进制数时可有 3 位。位。例例 3、单字节二进制小数转换成十进制小数(单字节二进制小数转换成十进制小数(BCD 码)码)一个一个 n 位小数的十进制表达式为:位小数的十进制表达式为:x=a-110-1+a-
30、n10-n把把 x 乘以乘以 10,所得到的整数部分即为十进制小数的最高位所得到的整数部分即为十进制小数的最高位,即即 a-1,再把小数部分乘再把小数部分乘以以10 得得 a-2,这样执行,这样执行 n 次后,便得到所有的次后,便得到所有的 a-i(i=1,2,n)。设二进制小数在设二进制小数在 A 中,转换后的十进制小数存放在中,转换后的十进制小数存放在 30H、31H、32H 单元中。单元中。MOVR0,#30HLP:MOVB,#10MOVR7,#03HMULABMOVR0,BINCR0DJNZR7,LPRET四、四、散转程序设计散转程序设计入口地址表入口地址表256 个单元的情况,根据个
31、单元的情况,根据(R2)转移。转移。JMP4:MOVDPTR,#TBL4MOVA,R2ADDA,R2;(R2)2AJNC NADDINC DPH;(R2)2256NADD:MOVR3,A;暂存暂存MOVCA,A+DPTR;地址高地址高 8 位位XCH A,R3INC AMOVCA,A+DPTR;地址低地址低 8 位位MOVDPL,AMOVDPH,R3CLRAJMP A+DPTRTBL4:DWPRG0DWPRG1.TBL4+100H:DWPRG128.DWPRGn五、子程序调用中参数的传递方法五、子程序调用中参数的传递方法1、用堆栈传递参数、用堆栈传递参数MAIN:PUSH70H;起始地址起始地
32、址PUSH71H;数据长度数据长度ACALLSUBRTNEXT:SUBRT:POP DPH;NEXTHDPHPOP DPL;NEXTLDPLPOP R7;数据长度数据长度POP R0;起始地址起始地址SUB1:MOVA,#00HLOOP:MOVR0,AINC R0DJNZR7,LOOP-第 11 页PUSHDPLPUSHDPHRET2、利用堆栈指针传递、利用堆栈指针传递MAIN:ACALLPRINTDB“THISISANEXAMPLE”DB0AH,0DH,00HNEXT:PRINT:POP DPH;把参数首址弹出,把参数首址弹出,POP DPL;作为数据指针作为数据指针PPP1:MOVA,#0
33、0HMOVCA,A+DPTR;取出欲打印的字符取出欲打印的字符INC DPTR;字符指针加字符指针加 1JZPEND;判是否为结束字符判是否为结束字符PPP2:SJMPPPP1PEND:JMP A+DPTR习题与思考题十习题与思考题十1、什么叫做伪指令?伪指令与汇编程序有什么区别?、什么叫做伪指令?伪指令与汇编程序有什么区别?2、编写实验二、三、四、五中相应的程序。、编写实验二、三、四、五中相应的程序。例:应用例:应用 T0 产生产生 1ms 定时,并使定时,并使 P1.0 输出周期为输出周期为 2ms 的方波,设晶振为的方波,设晶振为 6MHZ。1)求计数初值)求计数初值 X:(TH0,TL
34、0 初值计算初值计算)因为因为 fosc6MHZ,所以,所以 Tcy2us(6106)=210-6s=2us(213X)210-610-3X7692(01100)B(TH0)=F0H(TL0)=0CH2)方式字)方式字TMOD(TMOD)00H3)程序)程序用查询用查询 TF0 的状态来控制的状态来控制 P1.0 的输出,在的输出,在 P1.0 端得到周期为端得到周期为 2ms 的方波。的方波。TART:MOVTMOD,#00H;不必不必MOVTL0,#0CH;置初值置初值MOVTH0,#0F0HSETBTR0;启动启动 T0 计数计数LOOP:JBC TF0,PTF0AJMPLOOPPTF0
35、:MOVTL0,#0CHMOVTH0,#0F0HCPL P1.0;P1 求反求反AJMPLOOP例例:若从若从 T0 引脚输入低频负脉冲信号引脚输入低频负脉冲信号,要求要求0 每次发生负跳变时每次发生负跳变时,从从 P1.0 输出一个输出一个 500us的同步脉冲的同步脉冲,设设 fosc6MHZ1)TH0.TL0.TH1.TL1 初值设定初值设定T0:计数方式,使发生负跳变时加计数溢出,程:计数方式,使发生负跳变时加计数溢出,程序查询到序查询到 TF0=1 时启动时启动 T1 定时,故初值应为定时,故初值应为 FFH。T1:定时:定时 500us(256X)210-650010-6X06H所
36、以所以(TH1)(TL1)06H2)TMOD(TMOD)26H3)程序:)程序:START:MOVTMOD,#26HMOVTH1,#06HMOVTL1,#06HMOVTH0,#0FFHMOVTL0,#0FFHSETBTR0LOOP1:JBC TF0,PTF01AJMPLOOP1PTF01:CLRP1.0SETBTR1LOOP2:JBC TF1,PTF02AJMPLOOP2PTF02:SETBP1.0CLRTR1AJMPLOOP1例例设内部设内部 RAM20H 单元和单元和 30H 单元中分别存放了两个单元中分别存放了两个 8 位的无符号数位的无符号数 X、Y,若若 X Y则 让则 让 P1.0
37、 管 脚 连 接 的管 脚 连 接 的 LED 亮;若亮;若 XY则 让则 让 P1.1 管 脚 连 接 的管 脚 连 接 的 LED 亮。亮。方法方法 1:两个数据做减法:两个数据做减法 SUBB,可根据借位,可根据借位 CY 来判断两个数的大小!来判断两个数的大小!方法方法 2:两个数据做比较:两个数据做比较 CJNE,再根据是否相等和借位,再根据是否相等和借位 CY 来判断两个数的大小!来判断两个数的大小!方法方法 1 编程:编程:XDATE20HYDATE30HORG0000HMOVA,XCLRCSUBBA,YJCL1CLRP1.0SJMPFINISHL1:CLRP1.1-第 13 页
38、FINISH:SJMP$END方法方法 2 编程:编程:XDATE20HYDATE30HORG0000HMOVA,XCJNEA,Y,L0L0:JCL1CLRP1.0SJMPFINISHL1:CLRP1.1FINISH:SJMP$END例:由串行接口发送带偶校验位的例:由串行接口发送带偶校验位的 ASC码数据块。设数据位于内部码数据块。设数据位于内部 RAM 30H3FH 单元,单元,fosc=12M,串行口采用方式串行口采用方式 1,T1 用作波特率发生器用作波特率发生器,SMOD=0,发送的波特率要求为发送的波特率要求为 1200b/s.1)T1 初值计算:初值计算:波特率波特率=2SMOD
39、T1 溢出率溢出率32X=204=CCH)发送程序发送程序TSTART:MOVTMOD,#20H;T1 方式方式 2、定时器方式、定时器方式MOVTL1,#0CCH;置置 T1 初值初值MOVTH1,#0CCHMOVSCON,#40H;置串行口方式置串行口方式 1MOVR0,#30H;R0 地址指针,指向首址地址指针,指向首址MOVR7,#10H;R7 计数器,置字节数计数器,置字节数SETB TR1;启动启动 T1LOOP:MOVA,R0;取待发送的一个字节取待发送的一个字节MOVC,P;取奇偶标志,奇取奇偶标志,奇“1”偶偶“0”MOVA.7,C;加偶校验位加偶校验位MOVSBUF,A;启
40、动发送启动发送WAIT:JNBTI,WAIT;等发送完毕等发送完毕CLRTI;清清 TI 标志,准备下次发送标志,准备下次发送INCR0;指向下一字节地址指向下一字节地址DJNZ R7,LOOP;未发完继续未发完继续RET3)接收程序接收程序RSTART:MOVTMOD,#20H;T1 方式方式 2、定时器方式、定时器方式MOVTL1,#0CCH;置置 T1 初值初值MOVTH1,#0CCHMOVR0,#40H;R0 地址指针,指向首址地址指针,指向首址MOVR7,#10H;R7 计数器,置字节数计数器,置字节数SETB TR1;启动启动 T1LOOP:MOVSCON,#50H;置方式置方式
41、1,并启动接受,并启动接受WAIT:JNBRI,WAIT;等接受完毕等接受完毕MOVA,SBUF;取已接受字节到取已接受字节到 AMOVC,P;取奇偶标志取奇偶标志JCERROR;若有错,转出错处理程序若有错,转出错处理程序ANLA,#7FH;未出错,去偶校验位未出错,去偶校验位MOVR0,A;存接受的字节存接受的字节CLRRI;清清 RI 标志,准备下次接受标志,准备下次接受INCR0;指向下一字节地址指向下一字节地址DJNZR7,LOOP;未接受完继续未接受完继续RET习题与思考题十五习题与思考题十五1、单片机访问外部、单片机访问外部 RAM 或扩展或扩展 I/O 口的指令共有哪几条?口的
42、指令共有哪几条?2、一个、一个 8031 应用系统,外扩两片应用系统,外扩两片 2716EPROM,请画出扩展电路图。,请画出扩展电路图。3、一个一个 8751 应用系统应用系统,需扩展一片需扩展一片 6116RAM 作为数据存储器作为数据存储器,地址从地址从 0000H 开始开始,请画请画出扩展电路图出扩展电路图。对于该系统对于该系统,若要将片内若要将片内 EPROM 中自中自 100H 单元开始的单元开始的 10 个字节的内容依个字节的内容依次移到片外次移到片外 RAM 的的 100H 单元开始的单元开始的 10 个字节中去,编写该程序段。个字节中去,编写该程序段。例例拨盘输入程序:将千、
43、百、十、个拨盘输入程序:将千、百、十、个 位依次读入存放在位依次读入存放在8031片片内内RAM30H33H 单元。单元。RDS:MOVR0,#30H;存放单元首址存放单元首址MOVR2,#7FH;控制字控制字(千位千位);输入方式输入方式MOVR3,#04H;读读 4 个个 BCD 码码LOOP:MOVA,R2MOVP1,AMOVA,P1;读入读入 BCD 码码ANL A,#0FH;屏蔽高屏蔽高 4 位位MOVR0,A;送入存储单元送入存储单元INC R0;指向下一个存储单元指向下一个存储单元MOVA,R2;准备下一片拨盘的控制端置准备下一片拨盘的控制端置 0RRAMOVR2,ADJNZR3
44、,LOOPRET习题与思考题十六习题与思考题十六(P187、201)1、什么是、什么是 DAC0832 接口的单缓冲方式?双缓冲方式?它们各占用接口的单缓冲方式?双缓冲方式?它们各占用 8031 外部外部 RAM 几个单几个单元?软件编程有什么区别?元?软件编程有什么区别?2、用、用 8031 单片机和单片机和 DAC0832 组成单缓冲工作方式产生梯形波。斜边采用步幅为组成单缓冲工作方式产生梯形波。斜边采用步幅为 1 的线形的线形波,幅度从波,幅度从 00H 到到 80H,水平部分靠调用延时程序来维持,写出梯形波产生程序。,水平部分靠调用延时程序来维持,写出梯形波产生程序。3、若梯形波的水平
45、部分用、若梯形波的水平部分用 8031 内部定时器来产生,程序应如何修改?内部定时器来产生,程序应如何修改?4、若、若 8031 和和 ADC0809 的连接采用图的连接采用图 5-30 的方式,用的方式,用 8031 内部定时器来控制对模拟信号内部定时器来控制对模拟信号的采集,要求每分钟采集一次,写出对的采集,要求每分钟采集一次,写出对 8 路信号采集一遍的程序。路信号采集一遍的程序。5、静态显示电路和动态显示电路各有什么特点?、静态显示电路和动态显示电路各有什么特点?例:信号灯的控制例:信号灯的控制1、要求:、要求:-第 15 页(1)利用单片机的定时查询与中断方式,实现对信号灯的复杂控制
46、。利用单片机的定时查询与中断方式,实现对信号灯的复杂控制。(2)使使 P1 口的口的 8 盏灯由左至右,由右至左轮流电量一次盏灯由左至右,由右至左轮流电量一次2程序程序1)定时器查询方式)定时器查询方式ORG0000HCONT:MOVR2,#07HMOVA,#0FEHNEXT:MOV P1,AACALLDELAYRLADJNZR2,NEXTMOVR2,#07HNEXT1:MOVP1,ARRAACALLDELAYDJNZR2,NEXT1SJMPCONTDELAY:MOVR3,#14H;置;置 50ms 计数循环初值计数循环初值MOVTMOD,#10H;设定时器;设定时器 1 为方式为方式 1MO
47、VTH1,#3CH;置定时器初值;置定时器初值MOVTL1,#0B0HSETBTR1;启动;启动 T1LP1:JBC TF1,LP2;查询计数溢出;查询计数溢出SJMPLP1;未到;未到 50ms 继续计数继续计数LP2:MOVTH1,#3CH;重新置定时器初值;重新置定时器初值MOVTL1,#0B0HDJNZR3,LP1;未到;未到 1s 继续循环继续循环RET;返回主程序;返回主程序END2)定时器中断方式)定时器中断方式ORG0000H;程序入口;程序入口AJMP0100H;指向主程序;指向主程序ORG001BH;定时器;定时器 T1 中断入口中断入口AJMPCONT;指向中断服务程序;
48、指向中断服务程序ORG0100HMAIN:MOV TMOD,#10H;置;置 T1 为工作方式为工作方式 1MOVTH1,#3CH;置;置 50ms 定时初值定时初值MOVTL1,#0B0HSETBEA;CPU 开中断开中断SETBET1;定时器;定时器 T1 开中断开中断SETBTR1;启动;启动 T1CLR 08H;清;清 1s 计满标志位计满标志位MOVR3,#14H;置;置 50ms 循环初值循环初值DISP:MOVR2,07HMOVA,#0FEHNEXT:MOV P1,AJNB 08H,$;查询;查询 1s 时间到否时间到否CLR 08H;清标志位;清标志位RLADJNZR2,NEX
49、TMOVR2,#07HNEXT1:MOVP1,AJNB 08H,$CLR 08HRRADJNZR2,NEXT1SJMPDISPCONT:MOV TH1,#3CH;重置;重置 50ms 定时初值定时初值MOVTL1,#0B0HDJNZR3,EXIT;判;判 1s 定时到否定时到否MOVR3,#14H;重置;重置 50ms 循环初值循环初值SETB08H;标志位置;标志位置 1EXIT:RETIEND例例将定时器将定时器 T0 扩展为外部中断源。扩展为外部中断源。解:将定时器解:将定时器 T0 设定为方式设定为方式 2(自动恢复计数初值(自动恢复计数初值),TH0 和和 TF0 的初值均设置为的初
50、值均设置为 FFH,允,允许许 T0 中断,中断,CPU 开放中断,源程序如下:开放中断,源程序如下:MOVTMOD,#06HMOVTH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEAT0 引脚每输入一个负跳变,引脚每输入一个负跳变,TF0 都会置都会置 1,向,向 CPU 请求中断请求中断T0 脚相当于边沿触发的外部中断源输入线。脚相当于边沿触发的外部中断源输入线。中断服务程序如下:中断服务程序如下:AJMPINT0;转向中断服务程序入口;转向中断服务程序入口INT0:PUSHPSW;保护现场;保护现场PUSHACCJBP1.0,EXT0;中断源查询并转相应中断