
个性胞马灯的设计与实现 一,问容题 1.AT89S52单片机能提供几个中断源?几个优先级?各个中斯源的优先级怎样确定? 在同 优先领中各个中断照的优先级怎样确定? 容案: (1)hT89S52单片机提供8个中断源,包括:申行通信接收中断源和发送中新源.NT0、 NT、T和溢出中惭源、1溢出中新源。2计数溢出中断源和2辅获中断烫。 (2)AT89s52的中断设有两个优先级. (3)中斯优先级控制寄存器IP可通过软件设置各个中新源的中斯优先领。[P控制寄 存器的格式如下: D D D D D D D 3 P P 2 T TO XO T2:定时/计数器2的中断优先缓设置位。T2=1,定义为高优先级。T2=0,定文为低 优先级。 5:串行通信中断优先级设置位。5-I,定文为高优先级。5-0,定义为低优先级。 可1:定时/计数器1的中断优先级设置位。1=1,定义为高优先级。门1=0,定文为低 优先级。 叹1:外部中斯1的中晰优先领设置位,%1=1,定义为高优先级,PX1=0,定文为低优 先领。 PT0,定时/计数器0的中断优先缓设置位,PT0=1,定义为高优先级。T0=0,定复为低 优先级。 PO:外部中断0的中断优先级设置位,x0=1,定义为高优先级。PX0=0。定义为低优 先领。 (4)在同优先级中各个中断源的优先级有高到低的顺序为: 外部中断0,定时/计数器0溢出中断,外都中断1,定时/计数器1溢出中断,串行通
1 个性跑马灯的设计与实现 一、问答题 1.AT89S52 单片机能提供几个中断源?几个优先级?各个中断源的优先级怎样确定? 在同 优先级中各个中断源的优先级怎样确定? 答案: (1)AT89S52 单片机提供 8 个中断源,包括:串行通信接收中断源和发送中断源、 INT0 、 INT1、T0 溢出中断源、T1 溢出中断源、T2 计数溢出中断源和 T2 捕获中断源。 (2)AT89S52 的中断设有两个优先级。 (3)中断优先级控制寄存器 IP 可通过软件设置各个中断源的中断优先级。IP 控制寄 存器的格式如下: D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 - - - - P T2 P S P T1 P X1 P T0 P X0 PT2:定时/计数器 2 的中断优先级设置位。PT2=1,定义为高优先级。PT2=0,定义为低 优先级。 PS:串行通信中断优先级设置位。PS=1,定义为高优先级。PS=0,定义为低优先级。 PT1:定时/计数器 1 的中断优先级设置位。PT1=1,定义为高优先级。PT1=0,定义为低 优先级。 PX1:外部中断 1 的中断优先级设置位。PX1=1,定义为高优先级。PX1=0,定义为低优 先级。 PT0:定时/计数器 0 的中断优先级设置位。PT0=1,定义为高优先级。PT0=0,定义为低 优先级。 PX0:外部中断 0 的中断优先级设置位。PX0=1,定义为高优先级。PX0=0,定义为低优 先级。 (4)在同优先级中各个中断源的优先级有高到低的顺序为: 外部中断 0,定时/计数器 0 溢出中断,外部中断 1,定时/计数器 1 溢出中断,串行通

信中断。定时/计数器2溢出中断。 28051单片机内设几个可编程的定时器/计数器?它们有四种工作方式,如何选择和设 定1 容案: 8051单片机内设有2个可编程的定时/计爱器。它们的工作方式选择依靠工作模式寄存 器DD。0各位的定义格式如下图所示: D D 6 2 0 ATE ATE 0 其中,T球0.5(1)和TW004(0)决定了T1的工作方式,T0.1(1)和T,0 (D)决定了0的工作方式,1、0控制的4种模式如下图所示: MI M 工作核式 功修描述 0 0 模式0 13位计数器 0 模式1 16位计数墨 模式2 8位计数器 定时墨0:分成8位计数墨 模式3 定时器1:停止工作 及AT89S52单片机的外部中斯源有哪两种触发方式?如何这择?对外部中断源的触发 陈冲或电平有什么要求: 容案: (1)A89552单片机的外部中断源有电平触发方式和下降沿触发方式两种触发方式。 (2)通过状件编程,对中断控制寄存墨10W中ITX(X为0或1)位设置为0时,即 选择NTX为电平触发方式:1TX(《为0或1)位授置为1时,即选择NTX为下降沿触 发方式。 (3)对电平触发方式的外部中断源,其中断请求信号《低电平)应特续保特请求有效, 直至CW响应该中断请求为止:对于下降沿触发方式的外部中断源,其中断请求信号至少应 该保特一个机器周期的高电平、一个机器周期的低电平
2 信中断,定时/计数器 2 溢出中断。 2.8051 单片机内设几个可编程的定时器/计数器?它们有四种工作方式,如何选择和设 定? 答案: 8051 单片机内设有 2 个可编程的定时/计数器。它们的工作方式选择依靠工作模式寄存 器 TMOD。TMOD 各位的定义格式如下图所示: D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 G ATE C /T M 1 M 0 G ATE C /T M 1 M 0 其中:TMOD.5(M1)和 TMOD.4(M0)决定了 T1 的工作方式,TMOD.1(M1)和 TMOD.0 (M0)决定了 T0 的工作方式,M1、M0 控制的 4 种模式如下图所示: M1 M 0 工作模式 功能描述 0 0 模式0 13位计数器 0 1 模式1 16位计数器 1 0 模式2 8位计数器 1 1 模式3 定时器0:分成8位计数器 定时器1:停止工作 3.AT89S52 单片机的外部中断源有哪两种触发方式?如何选择?对外部中断源的触发 脉冲或电平有什么要求? 答案: (1)AT89S52 单片机的外部中断源有电平触发方式和下降沿触发方式两种触发方式。 (2)通过软件编程,对中断控制寄存器 TCON 中 ITX(X 为 0 或 1)位设置为 0 时,即 选择 INTX 为电平触发方式;ITX(X 为 0 或 1)位设置为 1 时,即选择 INTX 为下降沿触 发方式。 (3)对电平触发方式的外部中断源,其中断请求信号(低电平)应持续保持请求有效, 直至 CPU 响应该中断请求为止;对于下降沿触发方式的外部中断源,其中断请求信号至少应 该保持一个机器周期的高电平、一个机器周期的低电平

4,中断服务子程序返目指令ET1和普通子程序返回指令距T有什么区别? 容案: T1和ET都是返回指令。但是如果在中断服务程序中采用ET返回带令,虽然也能 使中断服务程序返目愿断点处莲续往下执行原程序,但它不会告知中新控制系饶,现行中断 服务程序已执行完毕。政使中断控制系统误认为仍在执行中断服务程序而屏蔽新的中斯请 求。因此,中断服务程序的返回必须用能1指◆,而不能用ET返回指◆代替。 定时/计数器用作定时器时,其计数林冲由谁提供?定时时间与哪些因素有关? 容案: 定时/计数器作定时时,其计数账冲由系统振药器产生的内部时钟信号12分频后提侯: 定时时间与时钟颜率和定时初值有关。 定时/计数器用作定时器时,对外界计数领率有何限制? 容案 由于确认1次负洗变要花2个机器同期,即24个叛荡周期,因此外部输入的计数林冲 的最高顿率为系统据荡器频率的1/24。 取与TX=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改喝?更改后 的新值是立即刷新还是等当前计数器计满后才能刚新? 容案 成与TLx红0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更政,更 改后的新值是立即刷新。但在读THK、几X的值时,应该先读T做值。后读TLX,再读H区。 若两次读得以相同,则可确定读得的内容正确。若前后两次读得的压有变化,再置复上 述过程。 8.编写出外部中断1为下降沿触发的中断初始化程序。 容案: SETB 1T0 SETB EXO SETB EA 9,单片机用内部定时方法产生频率为100出等宽矩形波,假定单片机的品振频率为 12,请编程实现 容案: :矩形泼周期为105。使用T0定时器完成定封,矩形波在1,0输出
3 4.中断服务子程序返回指令 RETI 和普通子程序返回指令 RET 有什么区别? 答案: RETI 和 RET 都是返回指令。但是如果在中断服务程序中采用 RET 返回指令,虽然也能 使中断服务程序返回原断点处继续往下执行原程序,但它不会告知中断控制系统,现行中断 服务程序已执行完毕,致使中断控制系统误认为仍在执行中断服务程序而屏蔽新的中断请 求。因此,中断服务程序的返回必须用 RETI 指令,而不能用 RET 返回指令代替。 定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? 答案: 定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号 12 分频后提供。 定时时间与时钟频率和定时初值有关。 定时/计数器用作定时器时,对外界计数频率有何限制? 答案: 由于确认 1 次负跳变要花 2 个机器周期,即 24 个振荡周期,因此外部输入的计数脉冲 的最高频率为系统振荡器频率的 1/24。 THX 与 TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后 的新值是立即刷新还是等当前计数器计满后才能刷新? 答案: THX 与 TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更 改后的新值是立即刷新。但在读 THX、TLX 的值时,应该先读 THX 值,后读 TLX,再读 THX。 若两次读得 THX 相同,则可确定读得的内容正确。若前后两次读得的 THX 有变化,再重复上 述过程。 8.编写出外部中断 1 为下降沿触发的中断初始化程序。 答案: SETB IT0 SETB EX0 SETB EA 9.单片机用内部定时方法产生频率为 100KHz 等宽矩形波,假定单片机的晶振频率为 12MHz,请编程实现 答案: ;矩形波周期为 10uS,使用 T0 定时器完成定时,矩形波在 P1.0 输出

00G 0000H LJMP MAIN ORG OOOBH LJMP T00 ORG 0040H MAIN:MON SP.#30用 W T00,06H :定时器/计数器T0为定到方式2 0四 0,0F6用 :初值赋值 镇 10,0F6l SETB P1.0 :编出端默初值 SETB TRO ;启动定时器T0 SETB ETO :允许定时器T0中斯 SETB EA :CW开中断 WAIT:AJMP WAIT TO0:CLR ETO ;关T0中断 CPL P1.0 :输出波形取反 SETR ETO ,允许定时器0中斯 旺TI END 10.采用定时器/计数器T0对外部味冲进行计数,每计数100个林冲后,T0转为定时 工作方式。定时1s后,又转为计数方式,如此循环不止。假定球S-51单片机的品体振霭 器的顿率为,请使用方式】实现,要求编写出程序。 容案: 定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工 作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位 识别下一轮定时器/计数器T0的工作方式。编写程序如下: 0G0000 LIMP MAIN 0RG0006 LDIP ITOP 4
4 ORG 0000H LJMP MAIN ORG 000BH LJMP T00 ORG 0040H MAIN:MOV SP,#30H MOV TMOD,#06H ;定时器/计数器 T0 为定时方式 2 MOV TH0,#0F6H ;初值赋值 MOV TL0,#0F6H SETB P1.0 ;输出端赋初值 SETB TR0 ;启动定时器 T0 SETB ET0 ;允许定时器 T0 中断 SETB EA ;CPU 开中断 WAIT:AJMP WAIT T00: CLR ET0 ;关 T0 中断 CPL P1.0 ;输出波形取反 SETB ET0 ;允许定时器 T0 中断 RETI END 10.采用定时器/计数器 T0 对外部脉冲进行计数,每计数 100 个脉冲后,T0 转为定时 工作方式。定时 1ms 后,又转为计数方式,如此循环不止。假定 MCS-51 单片机的晶体振荡 器的频率为 6MHz,请使用方式 1 实现,要求编写出程序。 答案: 定时器/计数器 T0 在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工 作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位 识别下一轮定时器/计数器 T0 的工作方式。编写程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P

ORG 004OH 1N:0NT0D,#0阳;定时器/计数器T0为计数方式2 0WT0.156 :计数100个脉冲的初值赋值 JmTH0.=156 SETB GATE :打开计数门 SETB TRO :启动T0,开始计数 SETB ETO :允许T0中断 SETB EA :GPU开中断 CLR FO :设置下一轮为定时方式的标志位 VAIT: AJVP WAIT ITOP:CLR EA :关中断 JB FO,COUNT :F0-1,转计数方式授置 加WT0,00用;定时器/计数器T0为定时方式0 WTO,OFEH:定封1s初值赋值 MOV TLO,OCH SETB E队 胜TI 0wT:OV TMOD,#08周 0T0,156 SETB RETI 二,填空避 1.AT89S52单片机响应中断后,产生长调用指令LC山,执行该指令的过程包括:首 先把()的内容压入堆栈,以选行断点保护,然后把长调用指令的16位地址送()》,使 程序执行转向(》中的中断地址区。 容案: C:PC:程序存储卷 2.803中对中斯进行查询时。查面的中断标志位共有《人()、()、 (),()和()六个中断标志位。 答案: 5
5 ORG 0040H MAIN: MOV TMOD,#06H ;定时器/计数器 T0 为计数方式 2 MOV TL0,#156 ;计数 100 个脉冲的初值赋值 MOV TH0,#156 SETB GATE ;打开计数门 SETB TR0 ;启动 T0,开始计数 SETB ET0 ;允许 T0 中断 SETB EA ;CPU 开中断 CLR F0 ;设置下一轮为定时方式的标志位 WAIT: AJMP WAIT IT0P: CLR EA ;关中断 JB F0,COUNT ;F0=1,转计数方式设置 MOV TMOD,#00H ;定时器/计数器 T0 为定时方式 0 MOV TH0,#0FEH ;定时 1ms 初值赋值 MOV TL0,#0CH SETB EA RETI COUNT: MOV TMOD,#06H MOV TL0,#156 SETB EA RETI 二、填空题 1. AT89S52 单片机响应中断后,产生长调用指令 LCALL,执行该指令的过程包括:首 先把( )的内容压入堆栈,以进行断点保护,然后把长调用指令的 16 位地址送( ),使 程序执行转向( ) 中的中断地址区。 答案: PC;PC;程序存储器 2.8031 中对中断进行查询时,查询的中断标志位共有 ( )、 ( ) 、 ( ) 、 ( )、( )和 ( ) 六个中断标志位。 答案:

TF1:TFO:IEl:IE0 TI:RI 3处理定时器/计数器的溢出请求有两种方法,分别是中断方式和查询方式,使用中 断方式时,必须():使用查面方式时。必须()。 容案 开放中断:关闭中断 4.假定定时器1工作在方式2,单片机的显荡频率为3忆,则最大的定时时间为 (). 答案: 1024u S 三,选释圈 1.下列说法正确的是: 各中断发出的中断请求信号,都会标记在S一1系统的E寄存器中。 各中断发出的中断请求信号,军会标记在5一5引系统的0寄存器中。 各中断发出的中断请求信号,都会标记在S一51系统的IP寄存器中。 各中斯发出的中断请求信号,都会标记在CS一1系统的T0W与SCN寄存墨中, 容案:A 2,中断查询确认后,在下列各种四1单片机运行情况中,能立即进行响应的是: 当前正在执行高优先级中断处理 当前正在执行ET1指令 当前指令是DIY指令,且正处于取指令的机器网期 当前指令是0mA,3 答案:D 3,在AT89S2中,需要外加电路实现中斯撤障的是 A、定时中断 B、脉冲方式的外部中新 C、外部申行中断 D、电平方式的外都中断 容案:D 4,下列说法不正确的是: 同一级别的中断请求按时间的先后顺序响应。 同一时阿同一级别的多中斯请求,将形成阳塞。系统无法响应。 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先缓
6 TF1;TF0;IE1;IE0;TI;RI 3. 处理定时器 / 计数器的溢出请求有两种方法,分别是中断方式和查询方式。使用中 断方式时,必须 ( ) ;使用查询方式时,必须 ( ) 。 答案: 开放中断;关闭中断 4. 假定定时器 1 工作在方式 2 ,单片机的振荡频率为 3MHZ ,则最大的定时时间为 ( ) 。 答案: 1024uS 三、选择题 1. 下列说法正确的是: 各中断发出的中断请求信号,都会标记在 MCS-51 系统的 IE 寄存器中。 各中断发出的中断请求信号,都会标记在 MCS-51 系统的 TMOD 寄存器中。 各中断发出的中断请求信号,都会标记在 MCS-51 系统的 IP 寄存器中。 各中断发出的中断请求信号,都会标记在 MCS-51 系统的 TCON 与 SCON 寄存器中。 答案:A 2.中断查询确认后,在下列各种 8031 单片机运行情况中,能立即进行响应的是: 当前正在执行高优先级中断处理 当前正在执行 RETI 指令 当前指令是 DIV 指令,且正处于取指令的机器周期 当前指令是 MOV A, R3 答案:D 3. 在 AT89S52 中,需要外加电路实现中断撤除的是: A、定时中断 B、脉冲方式的外部中断 C、外部串行中断 D、电平方式的外部中断 答案:D 4.下列说法不正确的是: 同一级别的中断请求按时间的先后顺序响应。 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级

中断请求。 同级中断不能故套。 容案,A 5.外中新初始化的内容不包括: 因》设置中断响应方式 (B)设置外中断 允许 C)设置中断总允诈 D)设置中断 触发方式 容案:A 6对定时器0选行关中断操作,需要复位中断允许控制寄存器的: A》EA和ETD )E以和 EXO C)EA和ETI (D)E以和 EXI 容案:A 四,实我练习 1,某系统有3个外部中断源1,2、3,当某一中斯源变为低电平时。便要求C刊进行 处理,它们的优先处理次序由高到低依次为3、2、1,中断处理程序的入口地址分测为1000H, 1100州。1200阳。试编写主程序及中断服务程序(转至相应的中新处理程序的入口即可)。 容案: 若仅在/INT0引脚接3个外部中断源 0RG0000阳 LJMP MAIN 0G0003 LJMP INT_EXO 0RG0030I MAIN:CLR ITO :采用低电平有效中断 SETB E或0 :允许外部中断0 SETB E队 :新入用户程序
7 中断请求。 同级中断不能嵌套。 答案:A 5.外中断初始化的内容不包括: (A) 设置中断响应方式 (B) 设置外中断 允许 (C) 设置中断总允许 (D) 设置中断 触发方式 答案:A 6. 对定时器 0 进行关中断操作,需要复位中断允许控制寄存器的: (A) EA 和 ET0 (B) EA 和 EX0 (C) EA 和 ET1 (D) EA 和 EX1 答案:A 四、实践练习 1.某系统有 3 个外部中断源 1、2、3,当某一中断源变为低电平时,便要求 CPU 进行 处理,它们的优先处理次序由高到低依次为 3、2、1,中断处理程序的入口地址分别为 1000H, 1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。 答案: 若仅在/INT0 引脚接 3 个外部中断源 ORG 0000H LJMP MAIN ORG 0003H LJMP INT_EX0 ORG 0030H MAIN: CLR IT0 ; 采用低电平有效中断 SETB EX0 ;允许外部中断 0 SETB EA ; 插入用户程序

VAIT: 球灯WPW.01日:单片机讲入休混方式等待中断 NOP LJMP WAIT :以下为外都中断0服务子程序 INT_EXO:JNB P1.0,NEXTI :判断是不是1号中断 LJMP INT_IRI :珠转到】号中断处理程序 NEXT1:JNB P1.1.NEXT2 :判断是不是2号中斯 LJMP INT_IR2 :跳转到2号中断处理程序 NEXT2:LJVP INT_IR3 :跳转到3号中断处理程序 0RG10000 INT_IRI: :插入相应中断处理程序 RETI :中断返网 0RG1100g INT_IR2: :插入相应中断处理程序 RETI :中断返回 0G1200图 INT_IR3: :插入相应中斯处理程序 RETI :中断返国 2,编写一段程序。功能要求为:当P1,0引脚的电平正跳变时,对P1,1的输入账冲进 行计数:当P1.2引脚的电平负美变时,停止计数,并将计数值写入即、1(高位存,低 位存0)。 容案 将P1.1的输入脉冲接入1NT0.即使用D计数器完成对P1.1口的脉冲计数。编写程序 如下: 0RG0000I LIMP MAIN 0RG0006图
8 WAIT: MOV PCON,#01H ;单片机进入休眠方式等待中断 NOP LJMP WAIT ;以下为外部中断 0 服务子程序 INT_EX0:JNB P1.0,NEXT1 ;判断是不是 1 号中断 LJMP INT_IR1 ;跳转到 1 号中断处理程序 NEXT1: JNB P1.1,NEXT2 ;判断是不是 2 号中断 LJMP INT_IR2 ;跳转到 2 号中断处理程序 NEXT2: LJMP INT_IR3 ;跳转到 3 号中断处理程序 ORG 1000H INT_IR1: ;插入相应中断处理程序 RETI ;中断返回 ORG 1100H INT_IR2: ;插入相应中断处理程序 RETI ;中断返回 ORG 1200H INT_IR3: ;插入相应中断处理程序 RETI ;中断返回 2.编写一段程序,功能要求为:当 P1.0 引脚的电平正跳变时,对 P1.1 的输入脉冲进 行计数;当 P1.2 引脚的电平负跳变时,停止计数,并将计数值写入 R0、R1(高位存 R1,低 位存 R0)。 答案: 将 P1.1 的输入脉冲接入 INT0,即使用 T0 计数器完成对 P1.1 口的脉冲计数。编写程序 如下: ORG 0000H LJMP MAIN ORG 000BH

LJMP ITOP MAIN:JNB P1.0,MAIN WT0,#05H :定时器/计数器T0为计数方式1 SETB TRO 1启动T0,开始计数 SETB ETO :允许T0中断 SETB EA :CPU开中断 WAIT: JB P1.2.WAIT CLR 队 R TRO MOV RI.THO 0W0.n0 AIMP ITOP:INC 2 RETI
9 LJMP IT0P MAIN: JNB P1.0,MAIN MOV TMOD,#05H ;定时器/计数器 T0 为计数方式 1 SETB TR0 ;启动 T0,开始计数 SETB ET0 ;允许 T0 中断 SETB EA ;CPU 开中断 WAIT: JB P1.2,WAIT CLR EA CLR TR0 MOV R1,TH0 MOV R0,TL0 AJMP $ IT0P: INC R2 RETI