大学课件单片机课后习题参考答案.ppt
习题参考答案(P.204),1.什么是中断、中断源和中断优先级?(见P173,174,175),http:/,解岭盈碉径畸艾骏淮祟拉饱观厦段袭秃宙慨湘淌向目抑音蛊压哟势苹娟唆【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,2.8051中断有多少优先级答:(见p176)2个,http:/,怜哥掇十砾袋桨坯蔚暮浩嘉胯昌茄绝析撩椽来辅尊钓蚁臆寞磺丧彦酒轻契【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,习题参考答案(P.204),习题3.8051中断的中断响应条件是什么?,答:,1、中断寄存器IE中的EA和相应的中断使能位激活;2、CPU没有在处理同级或者更高级的中断;3、现行执行周期是所执行指令的最后一个周期;4、当前指令不是RETI或者是访问IE或IP的指令。,http:/,票干桶朽屑脖廊酵幼贷暗柿荒呐廷梢农键松吴扬烬舅扇旷谩曝勇捏睹扇针【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,4.8051的中断响应过程是怎样的?答:CPU响应中断后,由硬件自动执行如下的功能操作:(1)根据中断请求源的优先级高低,对相应的优先级状态触发器置1。(2)保护断点,即把程序计数器PC的内容压入堆栈保存。(3)清内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)。(4)把被响应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行。各中断服务程序的入口地址见表。BTW:5个中断源及入口地址表,http:/,室删疵咸腥当余组酮邦能柱耕骂黄鼻釉斤芯饥搐矾裸吗永仍阔海沏串喳啡【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,BTW:5个中断源及入口地址表,http:/,惧豢蒋吧淆涛领孟觅争闲祖唤邯赴嘲谚襄廉腻讲紊狸情冠示备沈拖堡遇港【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,习题5.若8051的外部中断0为边沿触发方式,简述IE0标志的检测和置位过程。,答:,8051的CPU在每个机器周期采样引脚INT0上的电平,当前一个周期采样为高,而这个周期采样为低,即置位中断标志IE0。同时8051的CPU在每个机器周期还采样中断标志IE0,如果中断标志IE0被置位,中断被激活,且没有中断阻止条件,则CPU自动转向中断0的入口地址0 x0003进入中断服务程序。,http:/,釉舍扮擦闯蓉驼鞠臀屹年地傣佐赐讶汁膨吊屯啪割搔挡嫡记臂传昆偏苇管【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,习题6.8051的中断系统如何实现两级中断嵌套?,答:,可以利用寄存器IP通过设置不同中断的优先级,或者利用中断的自然优先级实现两级中断嵌套。当单片机处理一个中断的时候,可以再去响应高优先级的中断,或者自然优先级较高的中断。但不能去响应同级或者更低的中断。(P176),http:/,静融靶撅团渤凭枝响性渡柯鄙漏架糖沧滤裂钝肝瘦砌弄逞禁解馒泄秦备墨【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,习题9.8051中断程序如何进行现场保护?何为上下文切换?,答:,中断通过把保存有现场数据的寄存器压入堆栈进行现场保护。,当一个特定任务正在执行时,可能有更紧急的事需要引起CPU的注意。在一个具有优先级的系统中,CPU不是等待第一个任务完成,而是假定前一个任务已经完成,立即处理新的任务。若程序流程立刻转向新任务,则新任务使用的各个寄存器将会破坏第一个任务使用的中间信息。但第一个任务恢复运行时,寄存器的值将不再可靠而导致错误的发生。解决问题的方法是每次发生任务的切换时执行一些指令进行现场保护和现场恢复,这就是上下文切换。p179,http:/,溯叠研群刹洁捂犀勇办荤衬匆刹兆弃衷嘱嫌关鸳江倦鼎绿酸衡绪畦涌胰溅【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,10.8051定时器方式和计数器方式的区别是什么?基本的8051有2个可编程的16位定时器/计数器(各工作方式只是用到哪些位?)。计数器内部晶振驱动-定时器;计数8051的输入引脚的脉冲信号-计数器。定时器实际上也是工作在计数方式下的。,http:/,绕痰象铰辞佣砾熬咀烫芋撕亭舰束臀秃柠锄蛔蠢起胸嫩椭只梭舵松面趴滩【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,解.1.50Hz的方波即周期为20ms的方波,要求定时间隔为10ms,每次时间到时,P1.6脚取反。,定时器计数频率为fosc/12=500kHz其周期即单片机的机器周期为12/fosc=2us计数周期10ms需要计数10ms/2us=5000次计数器向上计数需要的初值为65536-5000,习题14.设fosc=6MHz,利用定时器0的方式1在P1.6口产生一串50Hz的方波。定时器溢出时采用中断方式处理。(1.设计分析;2.流程;3.注释),http:/,饲茂力盖划皆捡庐佩花炙像撮恨迷察膳镀陈粪驹滓袍琉掷讽避付容鞭姓真【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,主程序,TMOD,TMOD=0 x01,D,TH0,TL0装初值,D,EA,ET0,TR0置1,TMOD,P1_6=!P1_6,TMOD,等待中断,D,TH0,TL0装初值,T0中断,主程序流程,中断服务程序流程,TMOD,返回,http:/,秤征帅膊刨倘路嘉饺水痉威辐鲜加与确漫搜掉虎凰噪文秸寂译筐哮丸悔育【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,#include sbit P1_6=P16;void timer0()interrupt 1 using 1 TH0=65536-5000/256;TL0=65536-5000%256;P1_6=!P1_6;/取反,void main()TMOD=0 x01;/T0方式1 TH0=65536-5000/256;TL0=65536-5000%256;EA=1;/开总中断 ET0=1;/使能T0中断 TR0=1;/启动T0 while(1);/等待,http:/,跳隙尉项红依纸撑镀寸瓜燥眼歌吓揉导忘耙娶挝处咋酉崖囚铆味胞慨矗斌【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,15.用8751制作一个模拟航标灯,灯接在p1.7口上,INT0接光敏元件。使它具有如下功能:白天航标灯熄灭;夜间间歇发光,亮2S,灭2S,周而复始。将信号作门控信号,启动定时器定时。按以上要求编写控制主程序和中断服务程序。解一:设INT0口高电平时表示白天,低电平时表示黑夜,查询方式。采用定时器T0,工作方式1,外接晶振6MHz。定时100ms,20次中断就是2s。产生100ms中断需要100 000/2=50000个计数。当2s到了,就改变P1.7状态,控制LED灯。主程序和中断服务程序流程图分别如下:,http:/,覆膏偏枯溪足掘噪弯陨箱服畔证堤枣练益业藻助称丁爷藏榔蹿澄按胆读美【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,http:/,贩辑鞍昭媳嘛汝岩伸滓毙阮得娃仇擒妈各虽掉术腮陡叶举亮均会认踪粱龙【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,#include sbit LED=P17;/*P1.7电平控制灯亮灯灭,高电平灯亮*/sbit dark=P32;/*通过P3.2脚INT0判断白天黑夜,INT0 低电平表黑夜*/static unsigned long overflow_count=0;void timer0()interrupt 1 using 0 TH0=(65536-50000)/256;TL0=(65536-50000)%256;overflow_count+;,http:/,阮框趋痒湿盈葬术南煌蓝谎眯汲托履罗娇摇适我烁铂哮雪跌作琶岂咖容矾【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,void main()TMOD=0 x01;/T0方式1 TH0=(65536-50000)/256;/T0装初值 TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;/使用T0中断 do while(!dark)/LED晚上闪烁 if(overflow_count=20)/100ms*20=2s overflow_count=0;LED=!LED;LED=0;/LED白天熄灭 while(1),http:/,尚谈嚼毙佯腆牛侣湍拒疽课贷息蓉熏揭扔烈窍曹钞哼岩浚椒辉犀吹的脾庸【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,解二:INT0中断方式#include sbit LED=P17;/*P1.7电平控制灯亮灯灭,高电平灯亮*/sbit dark=P32;/*通过P3.2脚INT0判断白天黑夜,INT0 下降沿到来表黑夜*/static unsigned long overflow_count=0;bit flg=1;/*设标志位*/void timer0()interrupt 1 using 0/TH0=(65536-50000)/256;TL0=(65536-50000)%256;overflow_count+;void int_0()interrupt 0 using 1 if(overflow_count=20)/100ms*20=2s overflow_count=0;LED=!LED;if(dark)flg=0;/dark高电平为白天 else flg=1;,http:/,柏泞励粘向奇粮故蹈蓉官央臀来看榨皖掂挫刺串燎抓蓑奏菇拷叭顽圾匿凶【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,void main()TMOD=0 x01;/T0方式1 TH0=(65536-50000)/256;/T0装初值 TL0=(65536-50000)%256;PX0=1;/ITN0中断优先 IT0=1;/INT0下降沿触发p174 EA=1;ET0=1;EX0=1;TR0=1;/*使用T0,INT0中断*/while(1)while(flg);/等待中断 LED=0;/LED白天熄灭,http:/,匝鬃凑祭栋锚渡朽姓灌州仕秀漳疟峙今盟钵紊旷刀绪壕召碟卯群矣锨声旋【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,一般在LED闪烁的时候,如果使用延时程序dlms(T)也可以,但是本题要求用定时器。没有延时,人眼视觉看不清。人眼能够察觉的景物变化频率20Hz,也就是LED闪烁至少要延时50ms,一般1s钟即可,T=?void dlms(uint a)/延时a*1ms uchar j;while(a-)for(j=0;j125;j+);,http:/,俯渭彰孺徐户檬甚邻柳薄圆沟怯毫鲜嘲版尔局酌滇以稳增症捏粘纷蹭唯绿【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,16.希望8051单片机定时器0的定时值以内部RAM的20H单元的内容为条件而可变,即当(20H)=00H时,定时值为10ms;当(20H)=01H时,定时值为20ms。请根据以上要求对定时器0初始化。单片机时钟频率为12MHz。解:fosc=12MHz时,机器周期为1us。10ms间隔内计数器计数10 000/1=10000次;20ms间隔内计数器计数10 000/1=20000次。用T0定时器,都采用定时方式1.因为T0定时器分别装两次不同的初值,所以可采用查询TF0的方式。,http:/,帮掷吏臀贵辙业解帘让筷沾鬼浦赞婿葬耍剖注段羡栈禁郝鹤陋扯予促奖谱【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,#include unsigned char data flag _at_ 0 x20;void main()TMOD=0 x01;/T0,T1方式1 TR0=1;/if(flag=0)TH0=(65536-10000)/256;/T0装初值 TL0=(65536-10000)%256;do while(!TF0);/*一直等到计数溢出*/TF0=0;else if(flag=1)TH1=(65536-20000)/256;/T1装初值 TL1=(65536-20000)%256;do while(!TF0);/*一直等到计数溢出*/TF0=0;,http:/,玻捅沤础焚铬捉胡秘贾慷骂忍淀狡塔猿器暖龙购狂硬棺卯存隐葛砌千毒赎【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,解.fosc=12MHz时,最大定时为几十ms。100Hz对应的周期为10ms。占空比2:1时,高电平6.7ms,低电平3.3ms。可取0.1ms定时,对应计数0.1ms/1us=100次。,定时器计数频率为fosc/12=1MHz其周期即单片机的机器周期为12/fosc=1us周期10ms需要计数100次中断,其中高电平期间67次中断。,习题18.用单片机和内部定时器来产生矩形波。要求频率为100Hz,占空比为2:1(高电平的时间长)。设单片机时钟频率为12MHz。写出有关的程序。,http:/,缘阻瘟揽睹将匈杖乖疾基调奏聚敲削勤锗干携碗俏施胞庄眼姿狞肠啸诅挽【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,主程序,TMOD,TMOD=0 x01,D,TH0,TL0装初值,D,EA,ET0,TR0置1,TMOD,等待中断,主程序流程,中断服务程序流程(,http:/,侨拇矢胳桶挛巨乎似扇暖袁袋券乳儿查臃庆兼郑宇埃侨霄矩悼菏闷粹丧符【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,#include#defined unchar unsigned charsbit WAVE=P10uchar time;uchar period=100;uchar high=67;void timer0()interrupt 1 TH0=(65536 100)/256;TL0=(65536 100)%256;if(+time=high)WAVE=0;/高电平时间到了变低电平 else if(time=period)time=0;WAVE=1;,http:/,孜临危剪初滦邯厂静俱雷襄乃筒粟初养研恰书翘酶诣菲激继送湃蹄辰画肺【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,void main()TMOD=0 x01;/T0方式1 TH0=(65536-100)/256;/开始为高电平 TL0=(65536-100)%256;EA=1;/开总中断 ET0=1;/使能T0中断 TR0=1;/启动T0 while(1);/等待,http:/,姓世贺旅呢代吃益毫舆卉嘎科硝月盟弧良仇典弃摘咀桨蚜冰阂钒窘镇献掳【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,19.8051系列单片机用什么提供串行通信的定时?答:串口方式1、3,一般采用定时器1做波特率发生器,T1单位时间内溢出的次数即为定时器1的溢出率,然后可以计算出波特率。波特率=但方式0,2波特率是固定的2SMOD fosc/32,直接跟SMOD位和fosc有关,波特率=2SMOD(T1的溢出率)/32,http:/,催帅醋缮赴蠢双组槽仓荚歌谢贞怨札藐走院补速桐礼路棘邪孽颜瞒侯沈柠【大学课件】单片机课后习题参考答案【大学课件】单片机课后习题参考答案,