tfl编程
A. 批处理问题(超难的题目!)
其实一点也不难,只是如果单个文件夹文件数过多的话,写代码比较繁琐
如果单个文件夹文件数超过2550个这个代码我就不写了,我怕算数^_^
嘿嘿~~不完美的代码就不贴出来,完美才贴出来^_^,自己觉得完美是因为能处理上亿个文件也就是说不受文件数限制,唯一和楼主要求不同的是创建的新文件必须得有个标记符号,也就是创建的是download@1、download@2、download@3 ........
代码补充:增加按日期排列方式移动文件
生成测试文件
@echo off
md download
for /l %%i in (1,1,1000) do echo.>download\%%i.a
md 123
for /l %%i in (1,1,1000) do echo.>123\%%i.b
md 123\c
for /l %%i in (1,1,1000) do echo.>123\c\%%i.c
rem 不怕处理时间够长,1000改成100000000也行
:::::::::::::::::::::::::我是分割线::::::::::::::::::::
@echo off
dir /s/b/a-d *.*>1.x
rem 记录初始目录结构
:_start
if exist 2.x fc /b 1.x 2.x|find "***"&&(move /y 2.x 1.x)||(del *.x&echo 所有文件夹处理完毕&pause>nul&exit)
rem 每处理一个目录记录到文件1.x和2.x后用fc命令对比,2个文件相同即处理完毕了
setlocal enabledelayedexpansion
rem 开启变量延迟
for /f "delims=" %%a in ('dir/s/b/ad *') do (
set "fpath=%%~dpa"
rem 枚举目录结构截取子目录路径名到fpath变量
set "fname=%%~na"
rem 枚举目录结构截取子目录名到fname变量
for /f "tokens=1,2 delims=@" %%j in ('echo.!fname!') do (
set "fname=%%j"
rem 截取fname变量以@分隔的前段(也就是原目录名)
set "fnum=%%k"
rem 截取fname变量以@分隔的后段(也就是处理后的序号)
set /a fnum+=1
rem 处理后的序号上+1
)
echo 正在处理 "%%a" "!fpath!!fname!@!fnum!"
call :slz "%%a" "!fpath!!fname!@!fnum!"
rem call标签:slz并传递待处理的路径为%1,传递处理后的路径为%2
)
dir /s/b/a-d *.*>2.x
rem 处理一次后目录记录到文件2.x
endlocal
rem 关闭变量延迟
goto:_start
rem 跳到代码开始处继续处理
:slz
if "%~1"=="" goto:eof
set num=0
rem 文件计数清0
for /f "delims=" %%i in ('dir/b/a-d/od "%~1\*"') do (
set /a num+=1
rem 文件计数
if !num! gtr 255 (
rem 文件数大于255开始移动
if !num! gtr 510 endlocal&goto:_start
rem 文件数大于510跳到代码开始处继续处理
md "%~2" 2>nul
rem 建立处理后的路径目录
move /y "%~1\%%i" "%~2"
rem 移动文件
))
B. c语言怎么编写程序计算:1+22+333+4444+...的前n项的值,n由用户输入(n<10)
给,已经编译运行确认:
#include<conio.h>
#include<stdio.h>
#include<math.h>
main()
{
int i,n;
long j,k,sum=0;
printf("input the n:\n");
scanf("%d",&n); /*n为项数*/
for(i=1;i<=n;i++)
{
k=0;
for(j=i;j>0;j--)
k+=i*pow(10,j-1);
printf("%ld",k); /*打印输出情况*/
if(i!=n) printf("+");
else printf("=");
sum+=k;
}
printf("%ld\n",sum);
getch();
}
C. TCON是什么的简写
TCON(Timer Control Register)定时器/计数器控制寄存器 TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。 TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。 各位定义如下: TF1:定时器1溢出标志位。当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志。 IT1:外部中断1触发方式选择位。 IE0:外部中断0请求标志。 IT0:外部中断0触发方式选择位。 TCON中低4位与中断有关,我们将在下节课讲中断时再给予讲解。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置方式定)。 定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下: 1、确定工作方式(即对TMOD赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。 下面介绍一下确定时时/计数器初值的具体方法。 因为在不同工作方式下计数器位数不同,因而最大计数值也不同。 现假设最大计数值为M,那么各方式下的 最大值M值如下: 方式0:M=213=8 192 方式1:M=216=65 536 方式2:M=28=256 方式3:定时器0分成两个8位计数器,所以两个M均为256。 因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算: X=M-计数值
D. ftl是什么格式
ftl(FreeMarker Template Language)是Freemarker模板的文件后缀名。
Freemarker其实是一种比较简单的网页展示技术,说白了就是网页模板和数据模型的结合体。这种结合模式的好处就是,分离了网页界面设计人员和编程人员的工作,让他们各司其职。
简单的说,FreeMarker就是一种用Java编写的模板引擎,该模板引擎可适用于任何场景,它根据模板输出多种规格的文本。从更本质的方面来说,它是一个Java package,面向Java程序员class library。它本身并不是针对最终用户的应用,而是允许程序员将其嵌入到他们的产品中。
(4)tfl编程扩展阅读:
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC(Model View Controller)模式的应用程序。
使用 MVC 模式作为动态的WEB页面的想法,是为了分隔页面设计者 (HTML 设计者) 和程序员。
设计者可以不通过程序员的改变或修改代码来改变网页的样子,因为应用逻辑(Java程序)和页面设计(FreeMa-rker 模版)是分开的。模板不会被复杂繁琐的程序框架所破坏。即使当一个项目的程序员和HIMTL页面的制作者是同一个人时,这种分隔也是很有用,因为这样有助于保持应用的清晰并易于维护。
E. 什么是51 单片机中断允许触发器
中断源与中断请求
由图3.2可以看出,MCS-51系列单片机有5个中断源,它们是:外部中断INTO(P3.2) 、INTI(P3.3);定时器肼数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器SCON中。
1.定时器/计数器控制寄存器TCON
TCON为定时器/计数器控制寄存器,其字节映像地址为88H,可位寻址,它除了控制定时器/计数器T0、Tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志。其格式如下:
TFl
TRl
TF0
TRO
IEl
ITl
IEO
IT0
TCON寄存器各位的含义如下:
IT0:外部中断INTO的中断触发方式选择位。
当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期的$5P2采样INTO(P3.2)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位为1,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P3.2引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。为了保证CPU能正确采样电平状态,要求外部中断源INTO有效的低电平信号至少要维持一个机器周期以上。
当IT0位置为1时,外部中[新IN-T0为边沿触发方式。在这种触发方式中,CPU在每个机器周期的$5P2采样INTO(P3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。
IE0:外部中断:INT0的中断请求标志位。当IE0位为0时,表示外部中断源INT0没有向CPU请求中断;当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。
1T1:外部中断INTO的中断触发方式选择位。功能与ITo相同。
IEl:外部中断INTO的中断请求标志位。功能与IE0相l司。
TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。
TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出。当T0工作在不允许中断时,TF0标志可供程序查询。
TRl:定时器/计数器Tl的启动标志位。功能与TR0相l司。
TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相I司。
2.串行口控制寄存器SC,ON
’SCON为串口控制寄存器,其字节映像地址为98H,也可以进行位寻址。串口的接收和发送数据中断请求标志位(R1、TI)被锁存在串口控制寄存器SCON中,其格式如下:
SM0
SMl
SM2
REN
TB8
RB8
TI
RI
SCON寄存器各位的含义如下:
R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。
T1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。
注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。
SCON其他位的功能和作用与串行通信有关,将在第6章中介绍。
在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向CPU发出中断请求,如果清。就撤销中断请求。
3.2.2中断允许控制
在计算机中断系统中有两种不同类型的中断:一类为非屏蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求称为中断屏蔽(或中断禁止)。
MCS一51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。
通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下.
EA
----
-----
ES
ET1
EX1
ETO
EX0
IE寄存器各位的含义为:
EA:总中断允许控制位。当EA位为0时,屏蔽所有的中断;当EA位为l时,开放所有的中断。
ES:串口中断允许控制位。当ES位为0时,屏蔽串口中断;当ES位为l且EA位也为1时,开放串口中断。
ETl:定时器/计数器Tl的中断允许控制位。当ETl位为0时,屏蔽Tl的溢出中断;当ETl位为l且EA位也为1时,开放Tl的溢出中断。
EXl:INT1的中断允许控制位。当EXl位为0时,屏蔽INTl;当EXl位为l且EA位也为1时,开放丽。
ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。
EX0:INT0的中断允许控制位。功能与EXl相同。比如要开放INTl和Tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8CH。只要将这个结果送人IE中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对IE按字节操作,也可以按位操作。
按字节操作形式 按位操作形式
SETB EXl
MOV IE,#8CHSETB ETl
SETB EA
思考题3.1:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢?
3.2.3中断优先权管理
在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在MCS一51内部提供了一个中断优先级寄存器IP,其字节地址为088H,既可以按字节形式访问,又可以按位的形式访问。其格式如下:
—
-------
--------
PS
PTl
PXl
PT0
PXO
IP寄存器各位的含义如下:
PX0、PT0、PXl、PTl和PS分别为INTO、TO、INT1、Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。
比如要将T0定义为高优先级,使CPU优先响应其中断,其他中断均定义为低优先级,对应的优先级控制字为O00000108,即02H。只要将这个控制字送人IP中,CPU就优先响应TO产生的溢出中断,并将其他中断按低优先级中断处理。具体操作形式如下:
按字节操作形式 按位操作形式
MOV IP,#02H SETB PT0
在同一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也确定了一个自然优先级,其从高到低的优先级排列如下:
INTO—TO—INT1—Tl--串口(RI、TI)
按中断优先权设置后,响应中断的基本原则是:
.若多个中断请求同时有效,CPU优先响应优先权最高的中断请求。
.同级的中断或更低级的中断不能中断CPU正在响应的中断过程。
.低优先权的中断响应过程可以被高优先权的中断请求所中断,CPU会暂时中止当前低优先权的中断过程,而优先响应高优先权中断。等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套。为了实现上述功能和基本原则,在MCS.51系列单片机中断系统的内部设置了两个不可寻址的优先级触发器,一个是指出CPU是否正在响应高优先权中断的高优先级触发器,另一个是指出CPU是否正在响应低优先权中断的低优先级触发器。当高优先级触发器状态为l时,屏蔽所有的中断请求;当低优先级触发器状态为1时,屏蔽所有同级的中断请求而允许高优先权中断的中断请求。
MCS一51系列单片机复位后,特殊功能寄存器IE、IP的内容均为0,由用户的初始化程序对IE、IP进行初始化,开放或屏蔽某些中断并设置它们的优先权。
3.2.4中断响应
单片机一旦工作,并由用户对各中断源进行使能和优先权初始化编程后,MCS-51系列单片机的CPU在每个机器周期顺序检查每一个中断源。那么,在什么情况下CPU可以及时响应某一个中断请求呢?若CPU响应某一个中断请求,它又是如何工作的呢?
1.中断响应条件
单片机的CPU在每个机器周期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求。一个中断源的请求要得到响应,必须满足一定的条件。
(1)CPU正在处理相同的或更高优先权的中断请求。这种情况下只有当前中断响应结
束后才可能响应另一个中断请求。
(2)现行的机器周期不是当前所执行指令的最后一个机器周期。此时只有在当前指令执行结束周期的下一个机器周期才可能响应中断请求。
(3)正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令。在这种情况下,只有在这些指令执行结束并至少再执行一条其他指令后才可能响应中断请求。如果上述条件中有一个存在,CPU将自动丢弃对中断查询的结果;若一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。
2.中断响应过程
如果某一个中断被开放,且中断请求符合响应条件,CPU会及时响应该中断请求,并按下列过程进行处理:
(1)置相应的优先级触发器状态为1,指明了CPU正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。
(2)执行一条硬件子程序调用,清相应的中断请求标志位为0(R1、Tl和电平触发的外部中断除外)。
(3)保护断点。即将被中断程序的断点位置(Pc的值)压人堆栈保存起来。
(4)将被响应的中断源的中断服务程序入口地址送程序计数器PC。各中断源的中断服务程序入口地址的分配情况如表l.4所示。
(5)执行相应的中断服务程序。当CPU执行完中断服务程序中的中断返回指令后,清相应的优先级触发器为0,然后恢复断点,即将保存在堆栈中的程序计数器PC的值再弹给PC,使CPU再继续执行原来被中断的程序。
3.中断响应的时间
在MCS.51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脉冲被采样并锁存到相应的中断请求标志中,这个状态等到下一个机器周期才被查询。如果中断被开放,并符合响应条件,CPU接着执行一个硬件子程序调用指令以转到相应的中断服务程序入口,该调用指令需要2个机器周期,所以从外部产生中断请求到CPU开始执行中断服务程序的第l条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时间。如果已经在处理同级或更高级中断,额外的等待取决于中断服务程序的处理过程。如果正处理的指令没有执行到最后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期;如果是CPU正在执行中断返回指令RETl或对IE、IP的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机器周期。所以在单一中断系统中,外部中断响应时间总是在3~8个机器周期。
F. 单片机原理及其应用(找师傅)
1 二进制数10101010转换为十进制为(170)十六进制(0xaa)。 十进制数6的8421BCD码为(00000110),
2 单片机是指将(运算器、),(控制器),(存储器),及各种I/O口线集成在一块芯片上的计算机
3 标志程序的伪指令是(MAIN ),标志程序开始的伪指令是(ORG).
4 半导体储存器按功能分,可分为(程序存储器ROM )和(数据存储器RAM )两大类.
5. 8051单片机有(4组每组8个共32)个并向I/O口,共(32)根I/O线。
6 单片机串行通信有(单工)(半双工)(全双工)三种传输方向
二问答题
1.MCS-51单片机内含哪些主要部件?
8位CPU及片内振荡器,80514B掩膜ROM,87514KB EPROM,8031无ROM,特殊功能寄存器SFR128B RAM,定时器/计数器T0及T1,并行I/O接口:P0,P1,P2,P3;串行接口:TXD,RXD;中断系统:INT0,INT1.
2.MCS-51单片机有哪几个中断源?有哪几个中断优先级?
A:INT0(外部中断0) 0003H;B:TF0(TO中断) 000BH;C:INT1(外部中断1) 0013H;D:TFl(T1中断) 001BH;E:RI/TI(串行口中断) 0023H.
自然中断优先级按ABCDE递减,可以人为设置改变自然优先级.
3.简述并行通讯和串行通讯的优缺点?
并口传输速度快,串口传输速度慢;并口传送的线路长度受到限制,串口传送距离较并行口更长;串口一般像USB传输数据只需要两根数据线,而并口需要更多更多的数据线.
4.简述80C51单片机内部RAM的配置情况?
data:直接寻址区,为内部RAM的低128 字节 00H~7FH,idata:间接寻址区,包括整个内部RAM区 00H~FFH,bdata:可位寻址区,20H~2FH
三 编程题
ORG 0020H ;定义程序首地址
CSH: MOV R0,#47H ;内部RAM(40H~47H)清零
CSH1: MOV @R0,#40H
DJNZ R0,CSH1
G. STC15系列在Keil中编程时,如何引用STC15系列的头文件急求。。。。
直接#include<STC15.h>就是引用了哦。
你把头文件放到相应的目录下一次就应该可以了,如果你使用的是会自动还原的机子就只有联系管理员儿了。
参考链接http://wenku..com/link?url=
希望能帮到你
H. pictrues是什么
picture
[5pIktFL; 5piktFE]
形象,字形,图象
A language construct that describes a data type by means of a model character string literal.
编程语言中,利用模型字符串的数值文字描述数据类型的一种语言成分。
In a program, a string of characters used in editing to modify the indivial characters in a field. There is a one-to-one relationship between the characters in the picture and the characters in the field.
在程序中,编辑时用于修改某字段中各字符的一串字符。形象中的字符与字段中的字符之间有一一对应关系。
The display image of an area on a document.
在文卷上,某区的显示图象。
picture
[5piktFE]
n.
画, 图画, 图片
照片, 画像
美景, 美的事物[人]
生动的描写, 写照
相似的形象, 化身, 体现
印象, 记忆, 情景, 想象
[pl. ]电影, 电影院
【无】图象, 电视画面
picture book
图画书
picture card
花牌(纸牌中的J、Q、K); 有图画的明信片
picture gallery
画 廊, 美术馆, 美术陈列馆
picture hat
女用宽边帽
picture hall [house, palace, show, theatre]
电影院(的旧称)
picture play
电影剧
picture tube
(电视)显像管
have one's picture taken
(请人给自己)照像
give a picture of ...
把...描绘一番
You look the picture of health.
你看起来十分健康。
She is the picture of her mother.
她活象她的妈妈。
picture
[5piktFE]
vt.
画, 用图表示
生动地描写[描述, 描绘]
想象
把...(作为电影)拍摄
It is hard to picture life a hundred years ago.
我们很难想象一百年前人们的生活。
picturedrome
[`pIktFEdrEJm]
n.
[英]电影院
picture-goer
n.
影迷
picturable
adj.
picturableness
n.
picturably
adv.
pictured
adj.
picturer
n.
be high up in the pictures (=be in the picture picture)
大有成就; 成为要人, 居重要地位
be in the picture
[口]被告知详情; 获得最新消息
be the picture of
是...的化身
活象
look the picture of
是...的化身
活象
be the very picture of
是...的化身
活象
look the very picture of
是...的化身
活象
big picture
[口](电影放映节目单上的)正片; [美俚]特种宽银幕电影
close-up picture
特写镜头, 特写画面
come into the picture
引人注意, 处于显要地位, 成为其中一部分
step into the picture
引人注意, 处于显要地位, 成为其中一部分
go to the pictures
去看电影
not in the picture
不合适, 不相干的
被抛弃, 被拒绝, 没有赢的希望
out of the picture
不合适, 不相干的
被抛弃, 被拒绝, 没有赢的希望
put sb. in the picture
把基本情况告诉某人
keep sb. in the picture
把基本情况告诉某人
take a picture
摄影, 照相
take a good picture
照起相来好看[不好看]
take a bad picture
照起相来好看[不好看]
word picture
生动的文字描述, 有声有色的描写
picture sth. to oneself
想象[设想]某事
I. 控制cpu内部中断允许触发器的指令是
中断源与中断请求
由图3.2可以看出,MCS——51系列单片机有5个中断源,它们是:外部中断INTO(P3.2) 、INTI(P3.3);定时器肼数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器SCON中。
1.定时器/计数器控制寄存器TCON
TCON为定时器/计数器控制寄存器,其字节映像地址为88H,可位寻址,它除了控制定时器/计数器T0、Tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志。其格式如下:
TFl
TRl
TF0
TRO
IEl
ITl
IEO
IT0
TCON寄存器各位的含义如下:
IT0:外部中断INTO的中断触发方式选择位。
当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期的$5P2采样INTO(P3.2)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位为1,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P3.2引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。为了保证CPU能正确采样电平状态,要求外部中断源INTO有效的低电平信号至少要维持一个机器周期以上。
当IT0位置为1时,外部中[新IN-T0为边沿触发方式。在这种触发方式中,CPU在每个机器周期的$5P2采样INTO(P3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。
IE0:外部中断:INT0的中断请求标志位。当IE0位为0时,表示外部中断源INT0没有向CPU请求中断;当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。
1T1:外部中断INTO的中断触发方式选择位。功能与ITo相同。
IEl:外部中断INTO的中断请求标志位。功能与IE0相l司。
TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。
TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出。当T0工作在不允许中断时,TF0标志可供程序查询。
TRl:定时器/计数器Tl的启动标志位。功能与TR0相l司。
TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相I司。
2.串行口控制寄存器SC,ON
'SCON为串口控制寄存器,其字节映像地址为98H,也可以进行位寻址。串口的接收和发送数据中断请求标志位(R1、TI)被锁存在串口控制寄存器SCON中,其格式如下:
SM0
SMl
SM2
REN
TB8
RB8
TI
RI
SCON寄存器各位的含义如下:
R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。
T1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。
注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。
SCON其他位的功能和作用与串行通信有关,将在第6章中介绍。
在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向CPU发出中断请求,如果清。就撤销中断请求。
3.2.2中断允许控制
在计算机中断系统中有两种不同类型的中断:一类为非屏蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求称为中断屏蔽(或中断禁止)。
MCS一51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。
通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下。
EA
----
-----
ES
ET1
EX1
ETO
EX0
IE寄存器各位的含义为:
EA:总中断允许控制位。当EA位为0时,屏蔽所有的中断;当EA位为l时,开放所有的中断。
ES:串口中断允许控制位。当ES位为0时,屏蔽串口中断;当ES位为l且EA位也为1时,开放串口中断。
ETl:定时器/计数器Tl的中断允许控制位。当ETl位为0时,屏蔽Tl的溢出中断;当ETl位为l且EA位也为1时,开放Tl的溢出中断。
EXl:INT1的中断允许控制位。当EXl位为0时,屏蔽INTl;当EXl位为l且EA位也为1时,开放丽。
ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。
EX0:INT0的中断允许控制位。功能与EXl相同。比如要开放INTl和Tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8CH。只要将这个结果送人IE中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对IE按字节操作,也可以按位操作。
按字节操作形式 按位操作形式
SETB EXl
MOV IE,#8CHSETB ETl
SETB EA
思考题3.1:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢?
3.2.3中断优先权管理
在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在MCS一51内部提供了一个中断优先级寄存器IP,其字节地址为088H,既可以按字节形式访问,又可以按位的形式访问。其格式如下:
—
-------
--------
PS
PTl
PXl
PT0
PXO
IP寄存器各位的含义如下:
PX0、PT0、PXl、PTl和PS分别为INTO、TO、INT1、Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。
比如要将T0定义为高优先级,使CPU优先响应其中断,其他中断均定义为低优先级,对应的优先级控制字为O00000108,即02H。只要将这个控制字送人IP中,CPU就优先响应TO产生的溢出中断,并将其他中断按低优先级中断处理。具体操作形式如下:
按字节操作形式 按位操作形式
MOV IP,#02H SETB PT0
在同一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也确定了一个自然优先级,其从高到低的优先级排列如下:
INTO—TO—INT1—Tl--串口(RI、TI)
按中断优先权设置后,响应中断的基本原则是:
.若多个中断请求同时有效,CPU优先响应优先权最高的中断请求。
.同级的中断或更低级的中断不能中断CPU正在响应的中断过程。
.低优先权的中断响应过程可以被高优先权的中断请求所中断,CPU会暂时中止当前低优先权的中断过程,而优先响应高优先权中断。等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套。为了实现上述功能和基本原则,在MCS.51系列单片机中断系统的内部设置了两个不可寻址的优先级触发器,一个是指出CPU是否正在响应高优先权中断的高优先级触发器,另一个是指出CPU是否正在响应低优先权中断的低优先级触发器。当高优先级触发器状态为l时,屏蔽所有的中断请求;当低优先级触发器状态为1时,屏蔽所有同级的中断请求而允许高优先权中断的中断请求。
MCS一51系列单片机复位后,特殊功能寄存器IE、IP的内容均为0,由用户的初始化程序对IE、IP进行初始化,开放或屏蔽某些中断并设置它们的优先权。
3.2.4中断响应
单片机一旦工作,并由用户对各中断源进行使能和优先权初始化编程后,MCS-51系列单片机的CPU在每个机器周期顺序检查每一个中断源。那么,在什么情况下CPU可以及时响应某一个中断请求呢?若CPU响应某一个中断请求,它又是如何工作的呢?
1.中断响应条件
单片机的CPU在每个机器周期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求。一个中断源的请求要得到响应,必须满足一定的条件。
(1)CPU正在处理相同的或更高优先权的中断请求。这种情况下只有当前中断响应结
束后才可能响应另一个中断请求。
(2)现行的机器周期不是当前所执行指令的最后一个机器周期。此时只有在当前指令执行结束周期的下一个机器周期才可能响应中断请求。
(3)正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令。在这种情况下,只有在这些指令执行结束并至少再执行一条其他指令后才可能响应中断请求。如果上述条件中有一个存在,CPU将自动丢弃对中断查询的结果;若一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。
2.中断响应过程
如果某一个中断被开放,且中断请求符合响应条件,CPU会及时响应该中断请求,并按下列过程进行处理:
(1)置相应的优先级触发器状态为1,指明了CPU正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。
(2)执行一条硬件子程序调用,清相应的中断请求标志位为0(R1、Tl和电平触发的外部中断除外)。
(3)保护断点。即将被中断程序的断点位置(Pc的值)压人堆栈保存起来。
(4)将被响应的中断源的中断服务程序入口地址送程序计数器PC。各中断源的中断服务程序入口地址的分配情况如表l.4所示。
(5)执行相应的中断服务程序。当CPU执行完中断服务程序中的中断返回指令后,清相应的优先级触发器为0,然后恢复断点,即将保存在堆栈中的程序计数器PC的值再弹给PC,使CPU再继续执行原来被中断的程序。
3.中断响应的时间
在MCS.51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脉冲被采样并锁存到相应的中断请求标志中,这个状态等到下一个机器周期才被查询。如果中断被开放,并符合响应条件,CPU接着执行一个硬件子程序调用指令以转到相应的中断服务程序入口,该调用指令需要2个机器周期,所以从外部产生中断请求到CPU开始执行中断服务程序的第l条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时间。如果已经在处理同级或更高级中断,额外的等待取决于中断服务程序的处理过程。如果正处理的指令没有执行到最后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期;如果是CPU正在执行中断返回指令RETl或对IE、IP的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机器周期。所以在单一中断系统中,外部中断响应时间总是在3——8个机器周期。