版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《单片机原理及接口技术》(第二版)余锡存著-课后习题答案第二章1.89C51、87C51、80C51和80C31单片机的主要区别在那里?答:相同之处是:制造工艺都为CHMOS,都有128字节片内RAM、两个定时/计数器、4个8位I/O并行口,一个串行口和5个中断源。主要区别:①89C51片内4K字节FLASHROM;②87C51片内4K字节EPROM;③80C51片内4K字节掩膜ROM;④80C31片内无程序存储器。2.MCS-51单片机引脚有多少I/O线?它们和单片机对外的地址总线和数据总线有何关系?答:4个8位I/O并行口,一个串行口;其中P0口为外接程存和数存的地址低8位和数据总线的时分复用接口;其中P2口为外接程存和数存的地址高8位总线接口;其中P1口为真正的用户口线;其中P3口有第2功能;以上4个口线在没有专用功能时,也可以做通用I/O口线用。3.简述8031片内RAM区地址空间的分配特点。在一个机器周期内,CPU可以完成一个独立的操作。指令周期:它是指CPU间都是有一个或几个机器周期组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。z12μs(微秒)。第三章MCS-51如何?答:①按功能分为5类,分别是:数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类;②具有7种寻址方式;③立即寻址,寻址范围是程序存储器;RAM128128R0~R7;寄存器间接寻址,寻址范围是内部RAM的低128和外部RAM低64K可寻址空间;基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器;-128~+127RAM寄存器中的可寻址位。设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0RAM50H、51H答:MOV A,59H ;(A)=(59H)=50HMOV R0,A ;(R0)=50HMOV A,#00 ;(A)=00V A ;(0)MOV A,#25H ;(A)=25HMOV 51H,A ;(51H)=25HMOV 52H,#70H;(52H)=70H执行下列程序段后:(A)=25H,(R0)=50H,(50H)=00、(51H)=25HPSW中Cy与OV有何不同?下列程序段执行后(Cy)=?(OV)=?。MOV A,#56HADD A,#74H答:MOV A,#56H ;(A)=56H=01010110BADD A,#74H ;(A)=56H+74H=0CAH=11001010B,()0()MOVC A,@A+DPTR与MOVX A,@DPTR指令有何不同?答:①MOVC A,@A+DPTR(A)R;②MOVX A,@DPTR ;寻找的操作数在外部数据存储器中,地址是 :R。AJMP、LJMP、SJMP相同之处,都是无条件转移指令。① AJMP addr112KB② LJMP addr16;转移的目标地址可以在64KB程序存储器的任何地方。③ SJMP rel ;下调指令为基准的-128B~+127B范围内的短跳转指令。PHMHH24H10H,执行下列程序段后,61H,62H,30H,31H,DPTRSP中的内容将有何变化?PUSHPUSHPOPDPLPOPDPHMOV30H,#00HMOV 31H,#0FFH答:PUSH30H;(61H)=(30H)=24HPUSH31H;(62H)=(31H)=10HPOPDPL;(DPL)=(62H)=10HPOPDPH;(DPH)=(61H)=24HMOV30H,#00H;(30H)=00HMOV31H,#0FFH;(31H)=0FFH(61H)24H,(62H)=10H,(30H)=00H,(31H)=0FFH,(DPTR)=2410H00H01H8I/OCLR CMOV JC LOOP1CPL CSETB LOOP1:ORL C,ACC.0JB LOOP2:MOV P1,A答: CLR C ;(Cy)=0MOV A,#66H ;(A)=66H=01100110BJC LOOP1 ; 因此时(Cy)=0,所以不跳CPL C ; (Cy)=1SETB 01H ;(01H)=1LOOP1ORL C,ACC.0; (Cy)=(Cy)∨(ACC.01JB ACC.2,LOOP2 因(ACC.21LOOP2:MOV P1,A ; (P1)=01100110BMCS-51⑴R1的内容传送到R0;⑵片外RAM20H单元的内容送R0;⑶片外RAM20H单元的内容送片内RAM20H单元;⑷片外RAM1000H单元的内容送片内RAM20H单元;⑸ROM2000H单元的内容送R0;⑹ROM2000H单元的内容送片内RAM20H⑺ROM2000H单元的内容送片外RAM20H答:⑴R1的内容传送到MOV A,R1MOV R0,A⑵片外RAM20H单元的内容送MOV R1,#20HMOVX A,@R1MOV R0,A⑶片外RAM20H单元的内容送片内RAM20H单元;MOV R1,#20HMOVX MOV 20H,A⑷片外RAM1000H单元的内容送片内RAM20H单元;MOV DPTR,#20HMOVX MOV 20H,A⑸ROM2000H单元的内容送R0;MOV DPTR,#2000HCLR AMOVC MOV R0,A⑹ROM2000H单元的内容送片内RAM20H单元;MOV DPTR,#2000HCLR AMOVC MOV 20H,A⑺ROM2000H单元的内容送片外RAM20H单元。MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV MOVX @R0,A分析以下程序每条指令执行的结果:MOV A,#25H ;(A) =25HMOV R1,#33H ;(R1)=MOV 40H,#1AH ;(40H)=MOV R0,40H ;(R0)=1AHADD A,R1ADDC ADDC A,40H
;(A)=25H+33H=58H;(A)=58H+(1AH)+(Cy)=58H;(A)=58H+ 1AH+ (Cy)=72H10.设A=83H,R0=17H,(17H)=34H,执行下列程序后,(A)=?ANL 0011BORL 0111BXRL CPL A
;(A)=10000011B∧00010111B=0000;(17H)=00110100B∨00000011B=0011;(A)=00000011B⊕00110111=00110100B;(A)=11001011B4BCD30H、31H40H、H(次序为千位、百位在低地址中,十位、个位在高地址中H、H、H(H,试编写加法程序。解: ORG 00HMOV30H,#12H;MOV31H,#34H;MOV40H,#56H;MOV41H,#78H;MOVA,31H;取被加数十个位ADDA,41H;相加,(A)=(31H)+(41H)DAA;十进制调整MOV51H,A; 存十位个位运算结果MOVA,30H;取被加数千百位ADDCA,40H;相加,(A)=(30H)+(40H)DAA;十进制调整MOV50H,A; 存千位百位运算结果CLRA;清AADDCA,#0;将进位加到A中MOV52H,A;存进位SJMP$RAM20H~50H0AAH51H01H51H0。解: ORG 00HMOV 30H,#0AAH MOV R1,#31H ;MOV R0,#20H ;BIJIAO:MOV A,@R0CJNE A,#0AAH,LOOP;MOV 51H,#01HSJMP JIESHULOOP:INC R0DJNZ R1,BIJIAOMOV JIESHU:SJMP $第四章1、若有两个符号数50H51HX*10+Y52H、53H10000 7850 20002 E6
ORG 00HMOV 3 MOV A,@R0000375F00A4MOV B,#0AH0006A45MUL AB0007086INC R00008267ADD A,@R00009088INC R0000AA6F09MOV @R0,B000C0810INC R0000DF611MOV @R0,A12 END23000HRAM14ASCII0~9的数,试编写程序将它们转换成BCD码,并以压缩BCD2000HRAM1ORG 00H00009030002MOV DPTR,#3000H; 原始数据首地址000378073MOV R0,#07; 循环次数000579304MOV R1,#30H ; 转换结果暂存区指针0007E05CH1:MOVXA,@DPTR0008550F6ANLA,#00001111B000A C4000B F5F0
7 SWAPA8 MOV B,A000DA39INCDPTR000EE010MOVXA,@DPTR000F550F11ANL A,#00001111B001145F012ORL A,B0013F713MOV @R1,A00140914INC R10015A315INC DPTR0016D8EF16DJNZR0,CH1001890200017MOV DPTR,#2000H;转换结果存储区001B 7A07001D 7930
18 MOV R2,#07H ;19 MOV R1,#30H
结果个数001F E7 20CH2: MOV A,@R1;3、采样的5个值分别存放在R0、R1、R2、R3、R4中,求出它们的中间值,并存放在R2中。1ORG 00H>0000 78052MOV R0,#50002 79063MOV R1,#600047A074MOV R2,#700067B085MOV R3,#800087C096MOV R4,#9000AE47 CLR A ;000BC38CLR C ;000CE89MOV A,R0 ;000D2910 ADD A,R1;000E2A11ADD A,R2 ;000F2B12 ADD A,R300102C13 ADD A,R4001175F00514MOV B,#500148415 DIV AB0015FA16 MOV R2,A0016 17 END18 END4、以BUF1为起始地址的外部数据存储区中存放着16个单字节的无符号数,求其平均值并送入R2中。1ORG 00H2BUF1 EQU #1000H00009010003MOV DPTRBUF10003AA004MOV R2,0000578165MOV R0,#16H0007E06SUM: MOVXA,@DPTR00082A7ADD A,R20009FA8MOV R2,A000AA39INC DPTR000BD8FA10DJNZR0,SUM000D75F01011MOV B,#10H00108412DIV AB0011FA13MOV R2,A14END5、试编写程序,将内部RAM单元中DATA1开始的20个单字节数依次与DATA2单元为起始地址的20个单字节数据进行交换。1 2
#30H#50H3LEN EQU #164ORG 0H000078305MOV R0,DATA1000279506MOV R1,DATA200047A107MOV R2,LEN0006E68EXC: MOV A,@R00007C79XCH A,@R10008F610MOV @R0,A00090811INC R0000A0912INC R1000BDAF913DJNZR2,EXC14END6、某场歌手赛,共有1010和最低分,求平均分(BCD。ORG 0HN EQU #5BLOCKEQU #30HISELSORT:MOV DEC R7MOV R1,BLOCKISST1:MOV MOV A,R7MOV R6,AMOV MOV B,AISST2:INC R1MOV CLR CSUBB A,BJCISST3MOV MOV R2,AMOV B,@R1ISST3:DJNZR6,ISST2MOV A,BXCH A,@R1MOV B,R2MOV @R1,BMOV @R1,ADJNZR7,ISST1MOV MOV @R0,#0 ;去掉最低MOV A,BLOCKADD A,#9MOV R0,AMOV @R0,#0 ;去掉最高AD: MOV R0,BLOCKINC ROMOV CLR ACLR CMOV ADL: ADD A,@R0DAAMOVR2,AADDCA,#0MOVB,AMOVA,R2DJNZR1,ADLMOVR5,0MOVR4,BMOVR3,AMOVR2,#0MOVR1,#8R5R4R3/R2R1 MOV R1,#00H
R4R3MOV R2,#0FHMOV MOV MOV LCALL_DIVAJMP$_DIV: ;{CLRCMOV30H,#0MOV31H,#0MOV32H,#0_DIV_LOOP:CLRCMOVA,R3SUBBA,R1MOVR3,AMOVA,R4SUBBA,R2MOVR4,AMOVA,R5SUBBA,#0MOVR5,AJC_DIV_END_INC_SHANG:CLR CMOVA,30HADDCA,#1MOV30H,AMOVA,31HADDCA,#0MOV31H,AMOVA,32HADDCA,#0MOV32H,ALJMP_DIV_LOOP_DIV_END:CLR CMOVA,R1ADDCA,R3MOVA,R2ADDCA,R4MOVR3,30HMOVR4,31HEND7、编写将一个十六进制数转换为十进制数的子程序。>000078FE2MOVR0,#FEH000279303MOVR1,#30H0004E84HEXBCD:MOVA,R0000575F0645MOV B,#1000008846DIV AB0009F77MOV @R1,A000A740A8MOV A,#10000CC5F09XCH A,B000E8410DIV AB000F0911INC R10010F712MOV @R1,A00110913INC R10012A7F014MOV @R1,B15 RET8RAMBLOCKLEN。MAXMCS511ORG 0H2LEN EQU #10 ;数据块长度3MAX EQU #40H000078304MOV R0,#30H ; BLOCK0002790A5MOV R1,LEN0004196DEC R1; 循环次数0005C37CLR C0006 E6 8LOOP:MOV A,@R00007089INCR000089610SUBBA,@R00009 4002 000B 8002
JCEXCHANG12 SJMPNEXT000D 86F0000F C3
13EXCHANG:14NEXT:CLR
MOV C0010D9F415DJNZR1,LOOP001285F04016MOV40H,B; MAX17END9RAM41H~43H450H。题意不清。10RAMBLOCKLEN,试编程统计其中的正数、负数和零的个数分别存入内部RAM的Pcount、McounZcountMCS511ORG 0H1ORG 0H2LEN EQU #10 ;数据块长度3PCOUNT EQU #30H4MCOUNTEQU #31H5ZCOUNT EQU #32H6 BLOCKEQU #40H0000 7840 7
MOV R0,BLOCK
BLOCK首地址0002790A8MOVR1,LEN0004E69LOOP:MOV A,@R00005C310 CLR C0006B4000411 CJNE A,#0H,SULT10009053212 INC 32H000B800913 SJMPSULT2000D3314SULT1:RLC A; 移出符号位以判断正负!000E400415 JCNEG0010053016 INC 30H0012800217 SJMPSULT20014053118NEG: INC 31H00160819SULT2:INC R00017D9EB20 DJNZR1,LOOP11、试编写一查表求平方的子程序SQR(设X在累加器A中,A小于15,平方数存入工作寄存器R7中)。0000 900008 2 MOV DPTR,#TAB0003 7830 0005 E60006 930007 FF
MOV R0,#30HMOV A,@R0MOVCA,@A+DPTRMOV R7,A0008 01010409 7TAB: DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225000C 101924310010 405164790014 90A9C4E18 END12、试编写一程序,将外部数据区DATA1单元开始的50个单节数逐一依次移动到内部RAM中DATA2单元开始的数据区中。MCS511ORG0H2#1000H3#30H4LEN EQU #10H00009010005MOV DPTR,DATA1000378306MOV R0,DATA2000579107MOV R1,LEN0007E08LOOP:MOVXA,@DPTR0008F69MOV @R0,A0009A310INC DPTR000A0811INC R0000BD9FA12DJNZR1,LOOP13END13、14,略第五章1、简述中断、中断源、中断源优先级及中断嵌套的含义。CPU中断的意义在于资源共享和应急处理。CPU三、故障检测;四、实现人机交流引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。通常中断源有以下几种:(1)外部设备请求中断。一般的外部设备(A/D等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。由计算机硬件异常或故障引起的中断,也称为内部异常中断。(2)故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。(3)实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电CPU测和控制工作。(4)数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程称为是中断嵌套。2、MCS-51单片机提供了几个中断源?几个中断优先级?MCS-51单片机的中断源共有三类,分别是外部中断、定时计数器中断和串行通信口中断,第一类有IE0和IE1,第二类有TF0和TF1,第三类的RI、TI合二为一。MCS-51单片机分两个优先级,每个中断源的优先级都可以通过中断优先级寄存器IP中的相应位进行设定。在同级优先级中,五个中断源的优先级次序由高到低分别是:IE0、TF0、IE1、TF1、RI或TI。3、简述TCON、SCON、IE、IP四个特殊功能寄存器各位的定义及功能。TCON(TimerControlRegister)定时器/计数器控制寄存器TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位为88H一8FH,由于有位地址,所以可以于进行位操作。 TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。 如图所示:TF1TF1TR1TF0TR0IE1IT1IE0IT0其中,TF1:定时器1溢出标志位。当定时器 1计满溢出时,由硬件使1置“1,并且申请中断。进入中断服务程序后,由硬件自动清“ 0,在查询方式下用软件清“0。 1:定时器1运行控制位。由软件清“0关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器当“1”启动定时器1。 定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志位。 IT1:外部中断1触发方式选择位。当IT1=0,为低电平触发方式;当IT1=1,为下降沿触发方式。 IE0:外部中断0请求标志位。 IT0:外部中断0触发方式选择位。当IT0=0,为低电平触发方式;当IT0=1,为下降沿触发方式。SCON(SerialPortControlRegister)串行口控制寄存器98H9FH~98H。TCON中低4位与中断有关。由于TCON清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLRTF0则清定时器SCON(SerialPortControlRegister)串行口控制寄存器98H9FH~98H。位地址9F9E9D9C9B9A9998位符号SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式选择位SM0、SM1:串行口工作方式选择位SM2:多机通信控制位REN:允许/禁止串行口接收的控制位TB8REN:允许/禁止串行口接收的控制位TB823911RB8:239(TB8);在方1RB80TI——串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。清0。RI——串行口接收中断请求标志位RI——串行口接收中断请求标志位当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。此处的“软件清零”,意指需要用户用指令清零。IE(interruptEnableRegister):中断允许控制寄存器寄存器地址A8H,位寻址AFH~A8H。位地址AFAEADACABAAA9A8位符号EA/ET2ESET1EX1ET0EX0EA:中断允许总控制位当EA=0时,中断总禁止。当EA=1时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。EX0(EX1):外部中断允许控制位EX0(EX1)=0禁止外中断EX0(EX1)=1允许外中断ET0(EX1):定时/计数中断允许控制位当ET0(ET1)=0禁止定时(或计数)中断当ET0(ET1)=1允许定时(或计数)中断ET2:定时器2中断允许控制位,在AT89S52、AT89C52中ES:串行中断允许控制位当ES=0禁止串行中断当ES=1允许串行中断IP(InterruptPriority Register):中断优先级控制寄存器B8HBFH~B8H。位地址BFBEBDBCBBBAB9B8位符号//PT2PSPT1PX1PT0PX0PX0——外部中断0优先级设定位;PT0——定时中断0优先级设定位;PX1112(8052)。4、简述MCS-51单片机的中断响应过程。MCS-51单片机的中断响应过程可简单归纳为5步:CPU处于开中断状态下,则响应中断。保护现场:在保护现场前,CPU自动将当前PC压入堆栈。此时,的寄存器推入堆栈。中断服务:即为相应的中断源服务。前要关中断,以防止现场被破坏。在恢复现场后应及时开中断。返回:CPU将推入到堆栈的断点地址弹回到程序计数器,从而使CPU5、说明MCS-51单片机响应中断后,中断服务程序的入口地址。MCS-51单片机响应中断后,其中断矢量是由硬件自动生成的。各中断源的中断服务程序的入口地址如下表。6、指出哪几个中断申请标志在CPU响应中断响应后能被硬件自动清零。除了串行通信中断申请标志在CPU响应中断后需要用户用软件指CPU硬件自动清零的。它们分别是:外部中断0申请标志(0、外部中断11、定时计数器00)和定时计数器1。7MCS-51连接,用软件查询的方式进行控制如图。如果个中断源之间有优先级的区别,固定优先级时用“菊花链”电路,不定优先级时用8259.8、外部中断INT0、INT1的两种触发方式在原理上有何区别?如何用软件设置?ITx为外部中断触发方式选择。当ITx为0时为低电平触发方式,CPU在每个机器周期的S5P2采样ITx,当Itx输入低电平的时,就置位IEx,采用这种触发方式时,外部中断源的低电平必须保持到CPU响应为止。ITx1S5P2置位IEx,因此,采用边沿触发时,高电平和低电平的保持时间需在12拍以上。设置外部中断信号触发方式,可通过对 TCON寄存器(字节地88H,位地址88H~8FH)中的ITx位置一或置零进行。9、在一个应用系统中,晶振频率为 12MHz,一个外部中断请求信号的宽度是300ns的负脉冲,该采用哪种触发方式?如何实现?晶振频率为12MHz时,机器周期为1微秒,采用边沿触发时,请求信号至少应该保持1微秒,所以只能对原信号进行展宽,常用的方法是连接一个单稳态电路,其时常数不在1-1.5微秒之间即可。10、MCS-51的中断服务程序能否放在65KB程序存储器的任意区域?如何实现?MCS-51的中断服务程序可以放在65KB程序存储器的任意区域,只要在对应IE13400H0013H单元内填写LCALL3400H。第六章18051/计数器?它们有几种工作方式?如何选择和设定?作为定时器或计数器,它们的波特率各为多少?8051单片机内设有两个钧为16位的可编程的定时/计数器,共有4种工作方式,即:方式0—13位定时/计数器、方式1—16位定时/计数器、方式2—自动重载初值得8位定时/计数器和方式3—T0为两个独立的8位定时/计数器,在方式3下,T1停止工作。8051/TMODM0M1TMOD89H,所以M0M1M0、M1当用定时/计数器作为波特率发生器时,根据串口的工作模式,有三种情形:方式0的波特率为主振频率fosc的十二分之一;2rate寄存器中的波特率倍增位。
2SMOD64
osc
,其中,SMOD为PCON方式1和方式3的波特率计算依照下列关系求的TH1即可:Baudrate2SMOD
fosc32 12(2562、定时/计数器作定时器用时,其定时时间有哪些因素有关?做计数器用时,对外部计数频率有何限制?8051的定时/12128051的定时/计数器工作在计数器状态时,需要两个机器周期才能识别一个从“1”到“0”的跳变,故最高计数频率不大于晶振频率的二十四分之一。380516MHz,T0500选择方式0或方式1,计数器初值为8192-250,或65536-250。.此处给一个C语言写的程序段,定时信号由P1.0输出:ORG 0000HLJMPMAINORG LJMPTO_INTERRUPTMAIN:SETBEAMOVTH0,(65536-250)/256MOVTL0,(65536-250)%256SETBTR0SETBET0SJMP$T0_INTERRUPT:CLRTR0MOVTH0,(65536-125)/256MOVTL0,(65536-125)%256P1^0=~P1^0SETBTR0RETI4、某8051系统晶振频率为6MHz,先欲从P1.7引脚输出一个连续5Hz的方波信号,请编写程序。5Hz2001006MHz,2N=100ms/2μs=50000采用方式1进行计数,则X=M-N=65536-50000=15536H=0C350H程序编写如下:MOVTMOD,#05H;设置T0工作方式,定时,方式1MOVTH0,#0C3H;写入计数器初值MOVTL0,#050H;SETBTR0;启动T0LOOPJBC TF0,$;查询定时器溢出标志MOV TH0,#0C3H;MOV TL0,#050HCPL P1.7SJMPLOOP;END也可以用C语言编写:用定时/计数器T0从P1.7输出周期为5s的方波,晶振频率为6MHz。用定时/计数器T0从P1.7输出周期为5s的方波,晶振频率为6MHz。#include<reg52.h>#include<reg52.h>#defineucharunsignedchar#defineucharunsignedcharsbitD1=P1^0;#defineuintunsignedintsbitD1=P1^0;#defineuintunsignedintuchara;uchara;voidinit()voidinit()//初始化{{TMOD=0x01;TMOD=0x01;//016TH0=(65535-50000)%256;//赋初值,定时100msTH0=(65535-50000)%256;//赋初值,定时100msTL0=(65535-50000)/256;TL0=(65535-50000)/256;EA=1;EA=1;//中断控制允许ET0=1;ET0=1;a=0;a=0;TR0=1;TR0=1;//启动定时器0}}voidtime0()interrupt1//定时器0中断函数voidtime0()interrupt1//定时器0中断函数{{TH0=(65535-50000)%256;//赋初值,定时100msTL0=(65535-50000)/256;a++;TR0=1;}voidmain(){init();while(1)init();while(1){while(a==25)//半个周期(2500ms)时,P1.7上的电平跳变一次。{a=0;P1.7=~P1.7;//取反}}}5、某单片机系统,时钟频率为12MHz,定时/计数器T0用于20ms定时,T1用于100次计数,两者要求重复工作,问:、外部计数脉冲从何引脚输入?、编写达到上述要求的程序。、利用定时/T0、T12S(1)15(2)T0用作20ms定时,故N0=20ms/1μs=20000X0=M-N=65536-20000=45535=B1E0HT1的计数值为100,所以X=65536-100=65436=FF9CH为使俩部件同时工作,将T0设为查询方式,T0设为中断方式。MOVTMOD,#15H;T01;T11MOVTH0,#0B1H;写入T0定时器初值MOVTL0,#0E0H;MOVTH1,#0FFH;写入T1计数器初值MOVTL1,#09CH;MOV#60H;设置堆栈ORG001BHAJMPT1INTSETBTR0;启动T0SETBTR1;启动T1LOOP:JBCTF0,$;查询定时器溢出标志MOVTH0,#0B1H;MOVTL0,#0E0HCLRP1.0;设定时输出为P10SETBENDP1.0T1INT:MOVMOVRETITH1,#0FFH;TL1,#09CH;写入T1计数器初值(3)、延时2s,可以将T0设置成方式1,输出周期为200毫秒的等宽脉冲,设该信号由P1.0输出。再由T1进行计数,将P1.0输出连接道T1输入。则T1的计数值为100,工作方式选方式1;TO高低电平各持续100毫秒,若晶振频率为6MHz,则机器周期为2微秒,故其计数值应为:N=100ms/2μs=50000TO采用方式1进行计数,则X=M-N=65536-50000=15536=0C350HT1采用方式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程序编写如下:MOV TMOD,MOV TH0,#0C3H;MOV TL0,#050H;MOV TL1,#09CH;
设置T0工作方式,定时,方式1写入T0计数器初值写入T1计数值MOVTH1,#0FFHSETBTR0;启动T0LOOP:JBCTF0,$;查询定时器溢出标志MOVTH0,#0C3H;MOVTL0,#050HCPLP1.0SJMPLOOP;JBCCPL
TF1,$P1,1; 2SMOV TL0,#050H;MOV SJMPLOOPEND
写入T1计数值6、为什么T12T12,用作6Mhz,求可能产生的波特率的变化范围。答:串行通信通常是持续的,即很少进行但帧通信,这就要求通信时钟(波特率发生器2波特率=2SMOD×fosc/64所以其波特率最高为:187500,最低为:93750。7、怎样选择串行口的工作模式?RENTIRI1时清零?RENSCON可由用户使用指令进行赋值,REN=1时,允许串行口接收数据,否则不能。SCONREN(初始化)1。8、试设计一个8051单片机双机通信系统,编程将A机片内RAM中60H—6FHBRAM60H—6FH甲机发送(采用查询方式):MOV SCON, #80H ;设置工作方式2MOVPCON, #00;置SMOD=0,波特率不加MOVR0, #60H;数据区地址指针MOVR2, #10H;数据长LOOP:MOV A, @R0 ;取发送数据MOV CP ;奇偶位送MOVTB8CMOVSBUF,A;送串口并开始发送数据WAIT: JBCTI, NEXT ;检测是否发送结束并清TISJMP WAITNEXTINC R0;修改发送数据地址指针DJNZR2, RET乙机接收(查询方式):MOVSCON,#90H;模作模式2,并允许接收MOVPCON,#00H;置SMOD=0MOVRO, #60H;置数据区地址指针MOVR2, #10H;等待接收数据长度LOOPJBC RI, READ ;等待接收数据并清SJMPLOOPREAD:MOV A,SBUF ;读一帧数MOV C,PJNC LP0 ;C不为 1转LP0JNB RB8,ERR;RB8=0,即RB8不为P转ERRAJMPLP1LP0: JB RB8,ERR;RB8=1,即RB8不为P转ERRLP1: MOV@R0,A;接收一帧数据INCR0DJNZR2,LOOPRETERR: … ;出错处理程序…9、试述MSC-51单片机的多机通信原理。答:多机通信系统如下图所示可见是一个主从结构。多机通信基于如下机制:SM2=1&TB8=1 可以接受数SM2=1&TB8=0 不能接受数SM2=0 TB8231SM=0,地址码不符的其他从SM21;从第二帧开始主机开始发送数据帧,其特征是TB8=0,由于地址不符的从机的2仍为10,接受到数据帧后其RI自动置一,允许CPU读取接受到的信息。108051I/O16答:将8051的串行口扩充为I/O口,最常用的方式是外接移位寄存器74164,原理图如下:对应的程序可写成:MOV R0,DBUF; 显示缓冲区指针MOV SETB P0.1
初始化,设置串口工作方式CLR P0.1; 移位寄存器清MOV A,@R0; 读数据MOVXABUF,A;显示JBC TI,$; 等待传输完毕CLR
TI;
清除发送中断标志INC R0; 移动显示区指针MOV A,R0;MOVX
读下一位J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度公益慈善晚会活动策划与实施合同4篇
- 2025年度互联网内容提供商ICP证年审全权委托服务合同3篇
- 二零二五年度生物科技研发农民工就业服务合同4篇
- 电子商务平台消费者权益保护2025年度国际协调合同2篇
- 2025年度牛肝菌有机认证与市场拓展合同
- 二零二五版昆明滇池度假区酒店管理合同3篇
- 二零二五年度农业种植劳务作业承包合同范本3篇
- 2025年度塑料管材国际贸易争端解决合同
- 2025年度私立学校校长任期教育科研成果转化合同
- 二零二五年度企业员工期权激励合同范本
- 广东省佛山市2025届高三高中教学质量检测 (一)化学试题(含答案)
- 人教版【初中数学】知识点总结-全面+九年级上册数学全册教案
- 四川省成都市青羊区成都市石室联合中学2023-2024学年七上期末数学试题(解析版)
- 2024-2025学年人教版七年级英语上册各单元重点句子
- 2025新人教版英语七年级下单词表
- 公司结算资金管理制度
- 2024年小学语文教师基本功测试卷(有答案)
- 未成年入职免责协议书
- 项目可行性研究报告评估咨询管理服务方案1
- 5岁幼儿数学练习题
- 2024年全国体育单招英语考卷和答案
评论
0/150
提交评论