- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1112B卷参考答案及评分标准
北京理工大学珠海学院
2011 ~ 2012学年第一学期《单片机原理及接口技术(A)》
期末试卷(B)参考答案及评分标准
适用年级专业:2009级机械工程及自动化 试卷说明:闭卷,考试时间120分钟
一、填空题(每空2分,共20分)
1 2 3 4 5 时钟信号 先写1 001BH GATE=1 表达式+分号 6 7 8 9 10 P0口 0xf8 0x84 0x02 512us 二、选择题(每小题2分,共10分)
1 2 3 4 5 C B B B C
三、读程序(每项1分,共10分)
P2.0通过按钮S接地,P1.0通过LED接地,S按每一次,改变发光二极管的状态,为下列语句注释(有//处说明语句的实际作用)
#include reg52.h //包含头文件reg52.h
#define uchar unsigned char // 定义数据类型,宏定义
sbit S=P2^0; //位变量申明
sbit LED=P1^0;
main( )
{
uchar m;
while(1) //死循环
{
S=1; //作为输入口,先写1
if(S==0) //如果按键被按下
{
for(m=0;m125;m++); //延时,去抖动
if(S==0) //如果仍有按钮按下,则确认
LED=!LED; //LED灯状态改变
while(!LED); //等待按钮释放
}
}}
四、简答题(每小题10分,共30分)
1. 以外部中断1中断为例,简述中断过程。
答:主程序在运行过程中,中断源出现中断信号(P3.3引脚出现下降沿信号)(2分),相应的中断标志(IE1)硬件自动置1,向CPU申请中断(2分),CPU根据IE( EA=1,EX1=1 )、IP的设置决定是否响应中断,相应的中断标志位(IE1)自动复位(2分),将断点的地址存入堆栈,将相应的中断服务的入口地址0013H赋予程序计数器PC(2分),执行中断程序,执行完中断程序后,堆栈中断点地址由硬件自动赋予PC,程序返回主程序继续执行(2分)
2. 什么是机器周期?机器周期和晶振频率有何关系?当晶振频率为6MHz是,机器周期是多少?
答:规定一个机器周期的宽度为12个振荡脉冲周期(2分),因此机器周期就是振荡脉冲的十二分频。(3分)
当振荡脉冲频率为6 MHz时,一个机器周期为2 μs。(5分)
3. P3口的第二功能是什么?
P3口各引脚与第二功能表
引脚 第二功能 信号名称 P3.0 RXD 串行数据接收 P3.1 TXD 串行数据发送 P3.2 外部中断0申请 P3.3 外部中断1申请 P3.4 T0 定时/计数器0的外部输入 P3.5 T1 定时/计数器1的外部输入 P3.6 外部RAM写选通 P3.7 外部RAM读选通
五、完成程序题(共分)
1. P1.0~P1.7接共阴极LED七段数码管,P2.0接共阴极LED七段数码管的公共端,用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。共分#include reg51.h
#define uchar unsigned char
sbit P2_0=P2^0; //将P2_0定义为P2.0引脚
uchar num;//设置全局变量num,作为uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//*定义数组table[]为七段数码管显示数组,数组元素分别显示0~9
void main()
{
EA=1; EX0=1; //允许使用外部中断0
IT0=1; //选择下降沿触发来触发外部中断
P2_0=0; //将七段数码管公共端设为低电平
while(1)
{
P1=table[num]; //*依次引用数组元素,并将其送P1口显示
}
}
void int0() interrupt 0 //中断服务程序
{
num++; //每触发一次外部中断,计数变量加1
if(num==10
文档评论(0)