第4章 中断系统的C51编程 《单片机的C语言程序设计及应用》(电工版第4版)章节过关卷

2025-07-29
| 2份
| 14页
| 77人阅读
| 0人下载

内容正文:

《单片机的C语言程序设计及应用》(电工版第4版) 第4章 中断系统的C51编程 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1.51单片机有中断源的数量是( ) A.2 B.4 C.5 D.8 2.在51系列单片机中中断控制寄存器的数量是( ) A.3 B.4 C.5 D.9 3.以下是定时器/计数器溢出标志位的是 A.IE0 B.TR0 C.TF0 D.IT0 4.以下代码表示开放定时器/计数器1中断的是( ) A.EA=0 B.EX0=0 C.ET1=1 D.ES=1 5.在SCON寄存器中,TI(发送中断标志位)的作用是( )。 A.指示接收完成,需软件清零 B.指示发送完成,需软件清零 C.自动清零,无需软件干预 D.用于选择串行口工作方式 6.在C51中,外部中断0(INT0)的中断服务函数声明格式是? A.void INT0_ISR() interrupt 0 B.void EXTI0() interrupt 1 C.void INT0() interrupt 0 D.void ISR_INT0() interrupt 2 7.若要同时使能总中断和定时器1中断,正确的语句是? A.IE=0x88; B.IE=0x82; C.IE=0x84; D.IE=0x81; 8.8051单片机的中断向量表位于ROM的哪个地址范围? A.0000H-0003H B.0003H-0023H C.0023H-0043H D.0043H-0063H 9.若要检测INT0是否正在触发,应查询哪个标志位? A.IE0(TCON.1) B.IT0(TCON.0) C.EX0(IE.0) D.PX0(IP.0) 10.若两个中断同时发生,且优先级相同,CPU会如何处理? A.先处理INT0 B.先处理INT1 C.按自然优先级顺序 D.随机选择 二、判断题(本题共10小题,每题2分,共20分) 1.定时器控制寄存器用TCON表示。( ) 2.IP是中断优先级控制寄存器。( ) 3.在8051单片机中,SCON寄存器的SM0和SM1位用于设置串行口的工作方式。当SM0=1、SM1=0时,串行口的工作方式是方式2。( ) 4.中断服务函数可以传递参数和返回值。( ) 5.IT1=1;表示设置INT1为下降沿触发。( ) 6.volatile 关键字用于声明可能在中断中被修改的变量。( ) 7.定时器1溢出标志TF1位于TCON寄存器的第7位。( ) 8.在C51中,中断服务函数的声明必须使用 interrupt 关键字,并指定中断号。( ) 9.默认情况下8051支持中断嵌套。( ) 10.设置IP寄存器的PT1位可使串口中断为高优先级。( ) 三、填空题(本题共5小题,每题2分,共10分) 1.外部中断0的中断请求触发方式为电平方式代码是 。 2.外部中断1的中断类型号n= 。 3.关闭所有中断的代码是 。 4.定时器0溢出标志位是TF0,位于______寄存器的第5位。 5.若两个中断同时发生且优先级相同,CPU会优先响应______中断。 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共45分) 1.初始状态时低4位灯亮,高4位的灯灭,编程实现按一下S0,P1口的发光状态发生反转。请填空。 # include<reg51.h> void main() { 【1】; IT1=1; 【2】; EX1=1; while(1) ; } void wint0 (void) interrupt 2 { 【3】;} 2.当S0动作时,P1.0端口的电平反向,当外S1动作,P1.7端口的电平反向。请填空。 2. #include<reg51.h> 【1】; sbit LED7=P1^7; void IS0 (void) interrupt 0 //外部中断0 { 【2】; } void IS1 (void) interrupt 2 //外部中断1 { LED7=~LED7; } void main( ) { P1=0xFF; IT0=1; 【3】; EX0=1; 【4】; EA=1; 【5】;} 3.电路如图,P1口控制的灯按一定的频率闪烁,S0动作,实现单灯左移,而左移3圈结束。请填空。 #include<reg51.h> #define LED P1 void delay1ms(int); void left (int) ; void main() { 【1】; LED=0x00; while(1) { delay1ms (250); 【2】; } } void my_int0 (void) interrupt 0 { unsigned saveLED=LED; 【3】 ; LED=saveLED; } void delaylms (int x) { unsigned int i, j ; 【4】 for (j=0;j<120;j++); } void left (int x) { int i,j; for(i=0;i<x;i++) { 【5】; for(j=0;【6】;j++) { delaylms (250) ; 【7】 ; } delaylms (250) ; } } 五、读程题(本大题共1小题,共5分) 1.电路连接如图所示,两个按钮分别为k0,k1该程序实现的功能是 。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar data dir_buf[2] ; uchar code dirtable [18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar data i; void display( ) { P1=dirtable[dir_buf[0]] ; P2=dirtable[dir_buf[1]]; } void k0int () interrupt 0 { i=i+1 ; } void klint() interrupt 2 { i=i-1; } void main () { i=50; IT0=1; IT1=1 ; EA=1 ;EX0=1;EX1=1; while (1) { dir buf[0]=i/10; dir buf[1]=i%10; display() ; }} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 《单片机的C语言程序设计及应用》(电工版第4版) 第4章 中断系统的C51编程 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1.51单片机有中断源的数量是( ) A.2 B.4 C.5 D.8 答案:C 2.在51系列单片机中中断控制寄存器的数量是( ) A.3 B.4 C.5 D.9 答案:B 3.以下是定时器/计数器溢出标志位的是( ) A.IE0 B.TR0 C.TF0 D.IT0 答案:C 4.以下代码表示开放定时器/计数器1中断的是( ) A.EA=0 B.EX0=0 C.ET1=1 D.ES=1 答案:C 5.在SCON寄存器中,TI(发送中断标志位)的作用是( )。 A.指示接收完成,需软件清零 B.指示发送完成,需软件清零 C.自动清零,无需软件干预 D.用于选择串行口工作方式 答案:B 6.在C51中,外部中断0(INT0)的中断服务函数声明格式是? A.void INT0_ISR() interrupt 0 B.void EXTI0() interrupt 1 C.void INT0() interrupt 0 D.void ISR_INT0() interrupt 2 答案:A 7.若要同时使能总中断和定时器1中断,正确的语句是? A.IE = 0x88; B. IE = 0x82; C. IE = 0x84; D. IE = 0x81; 答案:A 8.8051单片机的中断向量表位于ROM的哪个地址范围? A.0000H-0003H B.0003H-0023H C.0023H-0043H D.0043H-0063H 答案:B 9.若要检测INT0是否正在触发,应查询哪个标志位? A.IE0(TCON.1) B.IT0(TCON.0) C.EX0(IE.0) D.PX0(IP.0) 答案:A 10.若两个中断同时发生,且优先级相同,CPU会如何处理? A.先处理INT0 B.先处理INT1 C.按自然优先级顺序 D.随机选择 答案:C 二、判断题(本题共10小题,每题2分,共20分) 1.定时器控制寄存器用TCON表示。( ) 答案:正确 2.IP是中断优先级控制寄存器。( ) 答案:正确 3.在8051单片机中,SCON寄存器的SM0和SM1位用于设置串行口的工作方式。当SM0=1、SM1=0时,串行口的工作方式是方式2。( ) 答案:正确 4.中断服务函数可以传递参数和返回值。( ) 答案:错误 5.IT1=1;表示设置INT1为下降沿触发。( ) 答案:正确 6.volatile 关键字用于声明可能在中断中被修改的变量。( ) 答案:正确 7.定时器1溢出标志TF1位于TCON寄存器的第7位。( ) 答案:正确 8.在C51中,中断服务函数的声明必须使用 interrupt 关键字,并指定中断号。( ) 答案:正确 9.默认情况下8051支持中断嵌套。( ) 答案:错误 10.设置IP寄存器的PT1位可使串口中断为高优先级。( ) 答案:错误 三、填空题(本题共5小题,每题2分,共10分) 1.外部中断0的中断请求触发方式为电平方式代码是 。 答案:ITO=0 2.外部中断1的中断类型号n= 。 答案:2 3.关闭所有中断的代码是 。 答案:EA=0 4.定时器0溢出标志位是TF0,位于______寄存器的第5位。 答案:TCON 5.若两个中断同时发生且优先级相同,CPU会优先响应______中断。 答案:INT0 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共45分) 1.初始状态时低4位灯亮,高4位的灯灭,编程实现按一下S0,P1口的发光状态发生反转。请填空。 # include<reg51.h> void main() { 【1】; IT1=1; 【2】; EX1=1; while(1) ; } void wint0 (void) interrupt 2 { 【3】;} 答案: 【1】P1=0XF0 【2】EA=1 【3】P1=~P1 解析: 【1】P1=0XF0;高4位灭、低4位亮 【2】EA=1;允许所有中断。 【3】P1=~P1;P1口的发光状态发生反转。 2.当S0动作时,P1.0端口的电平反向,当外S1动作,P1.7端口的电平反向。请填空。 2. #include<reg51.h> 【1】; sbit LED7=P1^7; void IS0 (void) interrupt 0 //外部中断0 { 【2】; } void IS1 (void) interrupt 2 //外部中断1 { LED7=~LED7; } void main( ) { P1=0xFF; IT0=1; 【3】; EX0=1; 【4】; EA=1; 【5】;} 答案: 【1】sbit LED0=P1^0 【2】LEDO=~LED0 【3】IT1=1 【4】EX1=1 【5】while(1) 解析: 【1】sbit LED0=P1^0 LED接在P1^0上。 【2】LEDO=~LED0 在INT0中断中翻转P1.0电平。灯闪烁。 【3】IT1=1 设置INT1为下降沿触发(与IT0=1对应)。 【4】EX1=1 使能INT1中断(与EX0=1对应)。 【5】while(1) 主循环保持程序运行,等待中断触发。 3.电路如图,P1口控制的灯按一定的频率闪烁,S0动作,实现单灯左移,而左移3圈结束。请填空。 #include<reg51.h> #define LED P1 void delay1ms(int); void left (int) ; void main() { 【1】; LED=0x00; while(1) { delay1ms (250); 【2】; } } void my_int0 (void) interrupt 0 { unsigned saveLED=LED; 【3】 ; LED=saveLED; } void delaylms (int x) { unsigned int i, j ; 【4】 for (j=0;j<120;j++); } void left (int x) { int i,j; for(i=0;i<x;i++) { 【5】; for(j=0;【6】;j++) { delaylms (250) ; 【7】 ; } delaylms (250) ; } } 答案: 【1】IE=0x81 【2】LED=~LED 【3】left(3) 【4】for (i=0;i<x; i++) 【5】LED=0xfe 【6】j<7 【7】LED= (LED<<1)|0x01 解析: 【1】IE=0x81,开启总中断(EA)和外部中断0(INT0) 【2】LED=~LED,灯闪烁 【3】left(3)单灯左移3圈 【4】for (i=0;i<x; i++) 循环x圈,延时x ms 【5】初始状态=11111110B,最右灯亮 【6】j<7 循环左移7次 【7】左移1位后,LSB设为1 五、读程题(本大题共1小题,共5分) 1.电路连接如图所示,两个按钮分别为k0,k1该程序实现的功能是 。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar data dir_buf[2] ; uchar code dirtable [18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar data i; void display( ) { P1=dirtable[dir_buf[0]] ; P2=dirtable[dir_buf[1]]; } void k0int () interrupt 0 { i=i+1 ; } void klint() interrupt 2 { i=i-1; } void main () { i=50; IT0=1; IT1=1 ; EA=1 ;EX0=1;EX1=1; while (1) { dir buf[0]=i/10; dir buf[1]=i%10; display() ; }} 答案: 开始时显示数字50,按一下k0数字加1,按一下k1数字减1。 【解析】 该程序实现的功能是:开始时显示数字50,按一下k0数字加1,按一下k1数字减1。具体分析如下: 按钮k0 连接至 外部中断0(INT0,P3.2) 按钮k1 连接至 外部中断1(INT1,P3.3) 数码管显示 dirtable是共阴极数码管的段码表,存储数字0~9的显示编码。 dir_buf[0]和dir_buf[1]分别存储十位和个位数字,通过P1和P2输出到数码管。 中断服务函数 k0int():INT0 中断,按下k0时i自增。 k1int():INT1 中断,按下k1时i自减。 主程序逻辑 初始化i=50,并配置中断(下降沿触发)。 主循环中不断分解 i 的十位和个位,调用 display() 刷新显示。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

第4章 中断系统的C51编程 《单片机的C语言程序设计及应用》(电工版第4版)章节过关卷
1
第4章 中断系统的C51编程 《单片机的C语言程序设计及应用》(电工版第4版)章节过关卷
2
第4章 中断系统的C51编程 《单片机的C语言程序设计及应用》(电工版第4版)章节过关卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。