《单片机应用项目式教程——基于Keil和Proteus第2版习题答案第3章思考和练习解答.docx》由会员分享,可在线阅读,更多相关《单片机应用项目式教程——基于Keil和Proteus第2版习题答案第3章思考和练习解答.docx(5页珍藏版)》请在第壹文秘上搜索。
1、第3章思考和练习解答3.1 什么叫中断?为什么要设置中断?答:CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序,叫做中断。设置中断的优点和功能:可以提高CPU工作效率,CPU不必花费大量时间等待和查询外设工作0具有实时处理功能,对实时控制系统中的各种参数和状态做出快速响应、及时处理。具有故障处理功能,在掉电中断服务程序中将需要保存的数据和信息及时转移到具有备用电源的存储器中保护起来,待电源正常时再恢复。(4)实现分时操作,控制多个外设同时工作。此外,中断系统还能用于程序调试、多机连接等方面。因此,中断系统是计算机中重要的组成部分。
2、可以说,只有有了中断系统后,计算机才能比原来无中断系统的早期计算机演绎出多姿多彩的功能。3.2 80C51有几个中断源?答:参阅教材书P85增强型80C51单片机,例如,80C52系列单片机增加了一个定时/计数器,有6个中断源。3.3 涉及80C51单片机中断控制的有哪几个特殊功能寄存器?各有什么作用?答:参阅教材书P.85、P.86、P.87。3.4 80C51中断优先控制,有什么基本原则?答:参阅教材书P903.5 中断初始化包括哪些内容?答:中断初始化内容包括:设置堆栈指针SP、定义中断优先级、定义外中断触发方式、开放中断和中断发生前主程序应完成的操作内容。3.6 80C51定时/计数器
3、在什么情况下是定时器?什么情况下是计数器?答:80C51定时/计数器归根到底是一个计数器,基本功能是加1。对外部事件脉冲(TO必须从P3.4输入、Tl必须从P3.5输入)计数,是计数器;对片内机周脉冲计数,是定时器。因为片内机周脉冲频率是固定的,是bsc的1/12。若ysc=12MHz,1机周为ls;若Tbsc=6MHz,1机周为2s,机周脉冲时间乘以机周数就是定时时间。3.7 80C51定时/计数器有哪几种工作方式?各有什麽特点?答:8OC51定时/计数器有四种工作方式,由TMOD中MlMO的状态确定。方式。是13位计数器,最大计数值23=8192,计数范围比方式1小,计算定时初值比较麻烦,
4、容易出错。方式1是16位计数器,最大计数值为26=65536,计数范围大,适用于定时范围较大的应用场合。方式2是8位计数器,最大计数值为28=256,缺点是计数范围小,优点是定时初值可自动恢复,适用于需要重复定时,而定时范围不大的应用场合。方式3是8位计数器,仅适用于TO,Tl无方式3。TO方式3时,被拆成二个独立的8位计数器TH0、TLO:TLO使用To原有的控制寄存器资源组成一个8位的定时/计数器;THo借用Tl的TF1、TRl,只能对机内机周脉冲计数,组成另一个8位定时器。TO方式3时通常Tl方式2用作串行口波特率发生器。3.8 80C51定时/计数器,当yc=6MHz和叙c=12MHz
5、时,最大定时各为多少?答:叙c=6MHz时,最大定时131.072ms(方式1);叙c=12MHz时,最大定时65.536ms(方式1)。3.9 定时/计数器初始化应设置哪些参数?答:设置TMOD。TMoD用于选择定时器或计数器、选择TO或Tl、选择工作方式、选择门控位是否参与定时/计数器控制,应根据程序要求,合理选择。一般来讲,定时时间长,用方式1(尽量不用方式0);定时时间短(W255机周)且需重复使用自动恢复定时初值,用方式2;串行通信波特率,用Tl方式2。(2)设置定时/计数器定时初值:T初值=2N-鬻鹦机周时间其中,N与工作方式有关。方式0时,N=13;方式1时,N=16;方式2时,
6、N=8;方式3时,N=8。若定时/计数器采用中断方式,应设置中断参数:堆栈指针SP、中断允许控制IE、中断优先级控制IP以及安排好等待中断或中断发生前主程序应完成的操作内容。(4)最后,启动定时/计数器开始运行。3.10 已知P1.0端口接一个发光二极管,要求定时控制该发光二极管闪烁(亮暗各0.5秒)。解:可设置TO工作方式1,定时50ms,计数10次为0.5秒。定时初值计算:TOwtfl=2,6-50000sls=65536-50000=15536=3CB0Hinclude包含访问隹L库函数reg5LhsbitP10=P10;定义PlO为Pl口第。位unsignedcharms50=C;定义
7、50ms计数器(全局变量)voidmain()主函数TMOD=OxOI;/TO定时器方式1THo=OX3c;TLo=OXb0;置TO初值50msIP=0x02;/STO为高优先级中断正=0x82;“T0开中TRO=I;/TO运行while(1);)无限循环,等待To中断voidt()intemt1/TO中断函数THo=OX3c;TLO=OXb0;重置TO初值50msms50+;50ms计数器加1if(ms50=10)若计满0.5秒P10=!P10;/PLO取反ms50=05OmS计数器清03.11 已知4sc=12MHZ,要求在80C51Pl.O、P1.KP1.2和P1.3引脚分别输出周期为5
8、00ps、1ms、5ms和IomS的脉冲方波,试编制程序,画出PrOtelISlSIS虚拟电路,并仿真调试。解:采用Tl工作方式2,定时250s,正好是500s方波脉宽,再对250s计数,可得1ms、5ms和IOmS的方波脉宽,计数值分别为2、10和20。定时初值计算:Tl初值=21250sls=256-250=6。因此,THl=TLl=06HC51程序如下:廿includesbitP10=P10;SbitP11=P11;sbitP12=P12;sbitP13=P13;头文件包含访问念庠函数reg5Lh定义PlO为PLo(周期500s方波输出端)定义Pll为PLl(周期ImS方波输出端)定义P
9、12为P12(周期5ms方波输出端)定义P13为PL3(周期IOmS方波输出端)unsignedcharplms=0;定义ImS计数器(全局变量),并清。赋值unsignedcharp5ms=0;unsignedcharpl0ms=0;voidmain()TMOD=0x20;THl=TLl=0x06;IP=0x08;IE=Oxff;定义5ms计数器(全局变量),并清0赋值定义IOmS计数器(全局变量),并清。赋值无类型主函数/TMOD=OO100000B,置Tl定时器方式2置Tl定时初值250USP=OOO(HOOOB,置Tl高优先级/IE=IllllinBf全部开中TR1=1;PlO=Pll
10、=P12=P13=0:/Tl运行脉冲方波初始输出为低电平while(l);)无限循环,等待Tl中断voidtl()intemt3P10=!P10;pirns+;p5ms+;plms+:if(plms=2)plms=0:/Tl中断函数/PLO引脚端输出电平取反(周期为500s脓冲方波)lms、5ms、IOmS计数器分别计数加1若ImS计数器到位,贝!:/Ims计数器清0Pll=JPll;)if(p5ms=10)p5ms=0;/PLl引脚端输出电平取反周期为ImS脉冲方波)若5ms计数器到位,则:5ms计数器清0P12=!P12;if(pl0ms=20)p10ms=0;P13=!P13J/PL2引
11、脚端输出电平取反(周期为5ms脉冲方波)若IOmS计数器到位,则:/IOms计数器清0/P1.3引脚端输出电平取反(周期为IomS脉冲方波)KeilC51软件调试:编译(汇编程序扩展名用.asm,C51程序扩展名用.c)连接并进入调试状态后,打开Pl对话窗口,全速运行,可看到Pl对话窗口中的P1.0P1.3端口状态不断跳变,从“V到空白,再从空白到“寸,适当加大定时脉冲宽度,可更清晰观察。3.12 已知7bsc=6MHz,要求80C51P1.7输出如图314所示连续矩形脉冲。JlJI40ms360ms图3-14连续矩形脉冲波解:根据题目要求,设将TO用作定时器方式1,定时40ms。TMOD=0
12、0000001BTO初值=26-40000s2s=65536-20000=45536=BlEOHC51编程如下:include Sbit P17=P17;bit )=0;void main () unsigned char i=9;P17=l:TMOD=OxOI:THO=Oxbl; TLO=OxcO;IP=Ox02;TRO=I;IE=0x82;while(l)if(ft=l)AM);if(P17=l) Pl7=0;else if (T=O)P17=1;ifvoid t() interrupt 1 TH0=0xbl: TLO=OxeO: fO=l;头文件包含访问 血库函数reg51.h定义位标识
13、符P17为P1.7定义40ms标志f无类型主函数定义40ms计数器,并置初值/PL7输出高电平置TO定时器方式1置TO定时初值40ms置TO为高优先级“TO启动/TO开中无限循环,等待TO中断后40ms标志置“1”若无40ms标志,跳出循环等待若有,则40ms标志清0若P1.7高电平,则PL7 -低电平若PL7低电平,则40ms计数,并判36OmS满否?满360ms, PL7一高电平40ms计数器恢复初值/TO中断函数重置To定时初值40ms4OmS标志置“1”3.13 乐曲播放电路如图3-5所示,世上只有妈妈好曲谱如图3-15所示,设人c=12MHz,试编制该歌曲程序,并仿真调试。I=Cj世
14、上只有妈妈好6535H656-35J53265_32-23!55-632!1-5321615-:|图3-15世上只有妈妈好歌谱解:分析任务9.1程序,不难看到,只要编制音符序号数组SH和音符节拍长度数组U,同时修改音符节拍循环的中止条件(音符总数),即可实现播放新的乐曲。全速运行后,鼠标左键单击KO(不锁定),可听到播放世上只有妈妈好歌。播完后,再次单击K0,再次播放。C51编程如下:mdude包含访问Sfr库函数reg5l.hsbrtKO=PVO;sbitSONDNPI7;unsignedChafij;unsignedcharcode22=0,l%,20220SZ1216220f2241unsignedcharcodeti22=0J2R21J,4J6J2412,9202unsignedchars34三13,12,10,12,15113,i243,10,12,1:UnSignedcharL34=12,4,8.8.8,4,4,16,8,4,4,8,4.4,4.4,-voidmain()unsignedmtTMODeOxlO;THl=3c;TLI=OXbO;IP=0x