程序计数器
- 格式:ppt
- 大小:2.22 MB
- 文档页数:131
单片机计数器C语言练习要求:编写一个计数器程序,将T0作为计数器来使用,对外部信号计数,将所计数字显示在数码管上。
该部分的硬件电路如图所示,U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,数码管采用共阳型,使用PNP型三极管作为片选真个驱动,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0…P2.5,当P2.0…P2.5中某引脚输是低电平时,三极管导通,给相应的数码管供电,该位数码管点亮哪些笔段,则取决于笔段引脚是高或低电平。
图中看出,所有6位数码管的笔段连在一起,通过限流电阻后接到P0口,因此,哪些笔段亮就取决于P0口的8根线的状态。
编写程序时,首先根据硬件连线写出LED数码管的字形码、位驱动码,然后编写程序如下:#include "reg51.h"#define uCHAR unsigned CHAR#define uint unsigned intuCHAR code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; //位驱动码uCHAR codeDispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0 xA1,0x86,0x8E,0xFF}; //字形码uCHAR DispBuf[6]; //显示缓冲区void Timer1() interrupt 3{ uCHAR tmp;uCHAR Count; //计数器,显示程序通过它得知现正显示哪个数码管TH1=(65536-3000)/256;TL1=(65536-3000)%256; //重置初值tmp=BitTab[Count]; //取位值P2=P2|0xfc; //P2与11111100B相或P2=P2&tmp; //P2与取出的位值相与tmp=DispBuf[Count];//取出待显示的数tmp=DispTab[tmp]; //取字形码P0=tmp;Count++;if(Count==6)Count=0;}void main(){ uint tmp;P1=0xff;P0=0xff;TMOD=0x15; //定时器0工作于计数方式1,定时器1工作于定时方式1 TH1=(65536-3000)/256;TL1=(65536-3000)%256; //定时时间为3000个周期TR0=1; //计数器0开始运行TR1=1;EA=1;ET1=1;for(;;){ tmp=TL0|(TH0<<8); //取T0中的数值DispBuf[5]=tmp%10;tmp/=10;DispBuf[4]=tmp%10;tmp/=10;DispBuf[3]=tmp%10;tmp/=10;DispBuf[2]=tmp%10;DispBuf[1]=tmp/10;DispBuf[0]=0;}}这个程序中用到了一个新的知识点,即数组,首先作一个先容。
计算机学科专业基础综合组成原理分类模拟20单项选择题1. 下列寄存器中,汇编语言程序员可见的是______。
A.存储器地址寄存器(MAR)B.程序计数器(PC)C.存储器数据寄存器(MDR)D.指令寄存器(IR)答案:B[解答] 汇编语言程序员可见的是程序计数器(PC),即汇编语言程序员通过汇编程序可以对某个寄存器进行访问。
汇编程序员可以通过指定待执行指令的地址来设置PC的值,如转移指令、子程序调用指令等。
而IR、MAR、MDR是CPU的内部工作寄存器,对程序员不可见。
2. 下列部件不属于控制器的是______。
A.指令寄存器B.程序计数器C.程序状态字寄存器D.时序电路答案:C[解答] 控制器由程序计数器(PC)、指令寄存器(IR)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)、指令译码器、时序电路和微操作信号发生器组成。
而程序状态字寄存器(PSW)属是运算器的组成部分。
3. 通用寄存器是______。
A.可存放指令的寄存器B.可存放程序状态字的寄存器C.本身具有计数逻辑与移位逻辑的寄存器D.可编程指定多种功能的寄存器答案:D[解答] 存放指令的寄存器是指令寄存器,故A错。
存放程序状态字的寄存器是程序状态字寄存器,故B错,通用寄存器并不一定本身具有计数和移位逻辑功能,故C错。
4. CPU中保存当前正在执行指令的寄存器是______。
A.指令寄存器B.指令译码器C.数据寄存器D.地址寄存器答案:A[解答] 指令寄存器用于存放当前正在执行的指令。
FANUCPMC功能指令详解(02):计数器篇计数器指令能够对输⼊的某种状态变化(⼀般是上升沿)进⾏计数,并在达到计数预设值时输出相应的信号, PMC中包含的计数器指令如下表。
序号指令名称功能号功能1CTR5计数器2CTRB56固定计数器3CTRC55计数器1CTR(计数器:SUB 5)CTR指令实现计数逻辑。
预设值和计数值的数据类型既可以是⼗进制类型,也可以是⼆进制类型,这个可以通过PMC的系统参数进⾏设定。
警告:当BCD计数类型的技术器设定的BCD值不正确时,⽆法保证计数器的移动。
如果改变计数器类型,⼀定要重新配置预设值和计数值。
该计数器主要的特性如下:(a) 预设值当达到预设值(计数最⼤值)时输出⼀个信号。
能够通过计数器界⾯或者在梯图中设置预设值。
(b) 环形计数器达到预设值后,通过再次输⼊计数信号回到初始值。
(c) 加/减计数器可以通过参数选择加1计数还是减1计数。
(d) 选择计数初始值计数初始值可以指定为0或者1。
结合该功能指令可以实现如下图的环形计数器:此计数器可⽤于存储转台的位置。
指令格式:控制条件:(a) 初始值(CNO)CNO=0:从0开始进⾏计数。
CNO=1:从1开始进⾏计数。
(b) 计数⽅向(UPDOWN)UPD=0:加计数器(计数从CNO指定的初始值开始)。
UPD=1:减计数器(计数从预设值开始)。
(c) 重置(RST)RST=0:⾮重置状态。
RST=1:重置状态,计数器重置到初始值;W1变为0;累计计数值复位为初始值。
注意:只有当需要复位时才将RST设为1。
(d) 启动条件(ACT)ACT输⼊上升沿触发计数器+1。
参数:(a) 计数器号计数器号在功能指令中设定,相应的预设值和编码形式则在计数器界⾯中设定,可以使⽤的计数器号如下:1⾄5路径PMC双安检PMCMemory-A Memory-B Memory-B Memory-B计数器号 1 ⾄201⾄1001⾄2001⾄3001⾄20预设值和累计值得范围如下:⼆进制计数器:0~32,767BCD计数器:0~9,999警告:如果计数器号有冲突或者超出范围,则操作不可预期。
PLC教程理论篇之PLC 的计数指令及计数程序设计一一、计数指令简介计数指令用于计数,以进行计数控制或状态存储。
1.三菱PLC计数器指令:计数指令本质上也是一种逻辑输出指令。
只是,它是计到数后才产生输出。
所以,有的PLC,如三菱公司PLC,起用定时器是用输出(OUT)指令,只是其操作数用计数器,并在使用它时,同时对设定值也作设定。
图7-1是的为三菱PLC调用计数器梯形图程序。
图7-1计数器程序如图,当X001从OFF到ON,则计数器C0线圈工作,计一个数,当C0计到3,则C0的常开触点ON,C0的常闭触点(该图未画出)OFF,使Y003 ON。
这里计数设定值K3 为时数,也可为直接或间接地址。
直接地址时,以该地址的值为设定值。
间接地址时,先算出地址,在以算出的地址的内容为设定值。
三菱的计数器按16进制工作,故K值最大可设为65535(16进制FFFF)。
三菱可逆计数器是双字的。
也是用输出指令调用。
计数的方向由相应的特殊继电器状态决定。
其计数范围为-2,147,483,648到2,147,483,647,并在此范围内循环计数。
即增到最大值时,如再增一个数,则当前值变为最小值。
反之,也类似。
表7-1示的为FX2N机的这些计数器及相应的方向切换特殊继电器。
表7-1FX2N机可逆计数器所使用的特殊继电器图7-2三菱可逆计数器程序图中C200为可逆计数器。
M8200为其方向切换特殊继电器。
M8200 OFF,C200增计数,ON,减计数。
从图知,当X005 OFF,C200接收X004的增计数,当X005 ON,C200接收X006的减计数。
而当X007 ON计数器复位,现值等于0,计数及输出都停止。
图7-3示的为该计数器产生输出的情况。
图7-3可逆计数器产生输出简图。
从图知,只要当前值小于设定值时,增加到大于或等于设定值,计数器即产生输出。
反之,或计数器复位,则停止输出。
2.OMRON PLC减计数指令:它有两个输入端,一为计数端,另一为复位端。
8051单片机的内核的结构及运行过程解析1.ALU(算术逻辑单元):8051单片机内置了一个8位ALU,负责执行算术和逻辑运算。
ALU可以进行加法、减法、与、或、非、异或等操作。
2.寄存器组:8051单片机包括4个8位的通用寄存器(R0~R7)和一个16位的程序计数器(PC)。
通用寄存器可用于保存临时数据和中间结果,程序计数器则记录当前执行指令的地址。
3.存储器:8051单片机的存储器包括内部存储器和外部扩展存储器。
内部存储器包括片内RAM和片内ROM两部分。
片内RAM可以分为128字节的数据存储器(IDATA)和256字节的数据存储器(XDATA)。
片内ROM则存储程序代码。
4.定时器/计数器:8051单片机内核包含两个定时器/计数器(T0、T1)。
定时器模式用于产生一定的时间延迟,计数器模式用于计数外部事件的个数。
定时器/计数器具有可编程的工作模式和计数值。
5.中断源:8051单片机支持多组中断源,包括外部中断INT0和INT1、定时器/计数器中断、串口中断等。
中断源的优先级可以通过程序设置,以满足不同应用场景的需求。
1.取指令阶段:程序计数器(PC)保存了当前指令的地址。
8051单片机通过将PC指针输出地址,从存储器中读取指令。
读取的指令存储于指令寄存器(IR)中。
2.译码阶段:指令寄存器(IR)中的指令会被译码器解码,生成相应的控制信号和操作码。
控制信号会对单片机的内部功能模块进行控制,操作码则确定执行的操作类型。
3.执行阶段:根据指令的操作码,单片机执行相应的操作。
例如,如果操作码指示进行加法运算,则ALU会执行加法操作,并将结果保存在指定的寄存器或存储单元中。
4.访存阶段:在执行一些指令时,单片机需要从存储器中读取或写入数据。
在访存阶段,单片机会将需要访问的存储器地址输出,并根据控制信号读取或写入数据。
5.写回阶段:在一些指令执行结束后,单片机会将执行结果写回到寄存器或存储器中。
写回阶段会更新相应的寄存器或存储单元,以保存最新的结果。
程序计数器名词解释
程序计数器: Program Counter:计算机在计算时,内部有一个专门的“计数器”,它可以自动清零。
但实际上计数器每运行一次都
要清零一次,这样的话就比较麻烦了。
程序计数器名词解释1:*ll port memory:外部存储器或寄存
器名称为:/dev/llport1、外部存储器或寄存器的扩展名为: ll port、寄存器的物理位置为: l/8//8外部存储器的总数/(外部存储器的
字长)。
2: c:///:系统盘,意思是C盘里面的文件会自动存入内存; c://,指该磁盘上文件夹的名称。
程序计数器名词解释1:*ll port memory:外部存储器或寄存
器名称为:/dev/llport1、外部存储器或寄存器的扩展名为: ll port、寄存器的物理位置为: l/8//8外部存储器的总数/(外部存储器的
字长)。
2: c:///:系统盘,意思是C盘里面的文件会自动存入内存; c://,指该磁盘上文件夹的名称。
3: using ll port:用
ll port操作程序计数器名词解释1:*ll port memory:外部存储器或寄存器名称为:/dev/ll port1、外部存储器或寄存器的扩展名为:
ll port、寄存器的物理位置为: l/8//8外部存储器的总数/(外部存储器的字长)。
2: c:///:系统盘,意思是C盘里面的文件会自
动存入内存; c://,指该磁盘上文件夹的名称。
- 1 -。
程序计算器在水文水利计算中的运用问题探讨作者:张媛媛宁毅来源:《硅谷》2014年第19期摘要水文水利计算指的是在水利规划、水利工程设计和运行中,为研究水资源的开发利用、研究水文水利工程对河川径流和水利条件的变化影响,评价水文水利工程的经济和环境效果等所进行的有关分析计算。
水文水利计算是选择河流治理和开发,确定水利工程任务、工程规模、工程开发程序、工程运用方式等的依据。
在水文水利计算的过程中,一般来说水文数据处理工作比较大、比较繁杂,传统的手工计算效率低,而且容易出错。
程序计算器可以通过发出指令让计算机执行来完成计算工作,具有很强的数据分析、统计、模拟计算等功能。
把程序计算机运用到水文水利计算中来可以大大的简化水文水利计算工作,提高计算的效率和精确度。
本文主要分析探讨了程序计算器在水文水利计算中的运用问题。
关键词程序计算器;水文水利;计算中图分类号:P204 文献标识码:A 文章编号:1671-7597(2014)19-0121-011 在水文水利计算中运用程序计算器的工作原理1.1 程序计算器的工作原理程序计数器是计算机处理器中的寄存器,它包含当前正在执行的指令的地址(位置)。
当每个指令被获取,程序计数器的存储地址加一。
在每个指令被获取之后,程序计数器指向顺序中的下一个指令。
当计算机重启或复位时,程序计数器通常恢复到零。
程序计算器可以通过某些手段来确定下一条指令的地址,从而保证程序能够连续地执行下去。
在程序开始执行前,必须将它的起始地址,即程序的第一条指令所在的内存单元地址送入程序计数器,因此程序计数器的内容即是从内存提取的一条指令的地址。
当执行指令时,处理器将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。
由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
1.2 水文水利计算中运用程序计算器的重要意义水文水利计算指的是在水利规划、水利工程设计和运行中,为研究水资源的开发利用、研究水文水利工程对河川径流和水利条件的变化影响,评价水文水利工程的经济和环境效果等所进行的有关分析计算。
plc中的计数器原理PLC(可编程逻辑控制器)是一种常用的自动化控制设备,广泛应用于工业控制系统中。
其中,计数器是PLC中常用的功能模块之一,用于实现对输入信号的计数和统计。
本文将详细介绍PLC中计数器的原理及其工作流程。
一、计数器的基本概念计数器是PLC中具有计数功能的变址寄存器。
它能够接收一个或多个输入信号,并对这些信号进行计数操作。
计数器可分为两种类型:进位计数器和反馈计数器。
进位计数器是指当计数值达到设定的阈值时,自动清零并触发进位信号;反馈计数器是指当计数值达到设定的阈值时,自动反馈给PLC控制程序。
计数器通常用于需要进行统计计数的场景,如物料计数、生产线计数等。
二、计数器的工作原理1. 输入信号计数器的工作原理首先需要接收一个或多个输入信号。
信号可以是来自传感器、按钮开关、计时器等外部设备。
这些输入信号被PLC的输入模块读取,并发送给计数器模块进行处理。
2. 计数操作计数器接收到输入信号后,开始对其进行计数操作。
计数器根据选择的计数方式进行计数,常见的计数方式有正向计数和反向计数。
正向计数是指计数值递增,一般用于向上计数;反向计数是指计数值递减,一般用于向下计数。
3. 计数器预设值计数器通常具有一个预设值,用于设定计数的终点或起点。
当计数达到预设值时,计数器将触发相应的操作,如清零、进位或反馈给PLC控制程序。
4. 进位或反馈当计数值达到预设值时,进位计数器会自动清零,并触发进位信号。
这个信号可以作为其他设备的输入信号,用于触发其他操作。
反馈计数器则会将计数值反馈给PLC控制程序,供程序进行判断和控制,以实现复杂的逻辑操作。
三、计数器的应用场景计数器作为PLC中常用的功能模块之一,广泛应用于各种自动化控制系统中。
以下是计数器在不同场景下的常见应用示例:1. 物料计数在生产线上,计数器可以用来统计通过传送带的物料数量。
通过设置计数器的预设值,当物料数量达到要求时,触发计数器的进位或反馈信号,从而控制下一道工序的工作。
PLC入门之计数器你用的是什么类型的计数器?比如,有加法计数器(它们只能正向计数1,2,3,...).它们在英语中被缩写为CTU(count up,升值计数),CNT,C,或者CTR.有减法计数器(它们只能逆向计数9,8,7,...).当它们作为一条独立的指令时,通常被叫做CTD(count down,减值计数).还有双向计数器(它们可双向计数1,2,3,4,3,2,3,4,5,...).当它们作为一条独立的指令时,通常被叫做UDC(up-down down counter,加-减计数器).许多厂家只有一种或两种类型的计数器,但这些计数器应能完成加计数,减计数或双向计数.是不是有些混淆了?难道就没有一相标准吗?不要担心,计数器就是计数器,不要管生产商怎样称呼它们.更容易引起混淆的是,大多数的生产商还加入了一定数量的高速计数器.通常叫它们HSC(high-speed counter),CTH(CounTer High-speed?)或者别的名称.典型的高速计数器是一个"硬件"设备.而上面所列的普通计数器多是"软件"计数器.换句话说,它们并不是真正存在于PLC中,它们只是用软件模拟的计数器.而硬件计数器却是真正存在于PLC中的,它们不依赖PLC的扫描时间.按照拇指理论(rule of thumb),一般情况下多使用普通(软件)计数器,除非所要计数的脉冲比2倍的扫描时间还要快.(例如扫描时间为2ms,而所计脉冲每4ms或更长时间才来一次,那么此时我们使用软件计数器.如果脉冲间隔小于4ms(例如3ms),那么使用硬件(高速)计数器.(2*扫描时间=2*2ms=4ms)要使用计数器,我们必须知道以下三件事情:1.我们要计数的脉冲来自哪里.典型情况下,它来自一个输入端子.(例如将一个传感器接到输入端0000)2.在作出响应前,我们要计多少次.例如计数5个玩具装入后开始打包.3.何时/怎样复位计数器,以便让它重新计数.例如,我们计数5个玩具后,将计数器复位.当程序在PLC上运行时,程序通常会显示当前或"累计"值,以便于我们观察当前的计数值.典型计数器的计数范围为0到9999,-32768到+32767,或0至65535.为什么都是些这么古怪的数字呢?因为大多数PLC都是用的16位计数器.0-9999是16位BCD(binary coded decimal,二进制编码的十进制)码,-32768到32767和0到65535是16位二进制码,我们在以后的章节会解释这是什么意思.下面介绍一些我们将会碰到的指令符号(不同的厂家会有所不同),并说明它们的用法.记住,它们虽然看起来不同,它用法基本都是相同的.如果我们会设置一个计数器,我们就会设置任意的计数了.在这个计数器中,我们需要2个输入.一个接复位线.当该输入端为ON时,当前(累积)计数值将被清零.第二个输入接的是我们要计数的脉冲.例如,我们要对经过传感器前面的玩具计数,我们将传感器接到输入端0001,然后将地址为0001的常开触点接在脉冲线的前面.Cxxx是计数器的名称.如果我们想叫它计数器000,那么在这里我们叫它"C000".yyyyy是我们在要求PLC做出响应前所要计的脉冲数.如果我们在将玩具打包前要计5个玩具,那么我们要该值改为5.如果我们要计100个玩具,那么就将该值改为100,等等.当计数器计数完毕(例如,我们计数了yyyyy个玩具),它将一组独立的触点变为ON,我们也将它标为Cxxx.注意,计数器的累加值仅在脉冲输入的上升沿发生变化.在上面的梯形图中,我们将计数器(叫做计数器000)设置为从输入0001计数100个玩具,然后使输出500变为ON.传感器0002将计数器复位.下面是我们会碰到的一个双向计数器.我们使用于上例相同的缩写(例如UDCxxx和yyyyy).在这个双向计数器中,我们需要使用3个输入端.复位输入的功能与上例相同.但是,对于脉冲输入有两个.一个是加计数,一个是减计数.在这个例子中,我们把这个计数器叫做UDC000,并且给它一个预设值1000.(我们共要计数1000个脉冲)在输入端,我们给输入端0001接上一个传感器,当它检测到目标时,使输入端0001变为ON,给输入端0003也接上一个相同的传感器.当输入端0001变为ON时,PLC正向计数,当输入端0003变为ON时,PLC逆向计数.当计数值到达1000时,输出端500变为ON.再次提醒注意的是,计数器的累计值仅在脉冲输入的下降沿改变.梯形图如下所示.还有一件事要特别注意,在大多数的PLC中计数器和定时器的名称是不一样的.这是因为它们通常使用相同的寄存器.虽然我们还没有学到定时器,但我们必须记住这一点,因为它的确很重要.好了,上面讲的计数器可能有点难以理解,但只要我们用过一次,它们看起来就容易多了.它们的确是一种必要的工具.它们也是"非标准"基本指令之一.但是,有一点要记住,不管是哪个厂家生产的,用法都是一样的.。
轻工大学计算机组成原理实验报告(三):文斌院系:数学与计算机学院班级:软件工程13 03班学号: 13051100 50老师:郭峰林2015.11.29实验三程序计数器PC与地址寄存器AR实验【实验环境】1. Windows 2000 或 Windows XP2. QuartusII9.1 sp2、DE2-115计算机组成原理教学实验系统一台。
【实验目的】1.掌握地址单元的工作原理。
2.掌握的两种工作方式,加1计数和重装计数器初值的实现方法;3.掌握地址寄存其从程序计数器获得数据和从部总线获得数据的实现方法。
【实验原理】程序计数器(PC)是用于存放下一条指令所在单元的地址的地方。
为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。
而程序计数器正是起到这种作用,所以通常又称为指令计数器。
在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的存单元地址送入PC,因此程序计数器(PC)的容即是从存提取的第一条指令的地址。
当执行指令时,CPU将自动修改PC的容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。
由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
当程序转移时,转移指令执行的最终结果就是要改变PC的值,下一条从存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
转移指令执行后的PC值就是转去的地址,以此实现转移,有些机器中也称PC为指令指针IP(Instruction Pointer)。
地址寄存器(AR)用来保存当前CPU所访问的存单元的地址。
由于在存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到存的读/写操作完成为止。
当CPU和存进行信息交换,即CPU向存存/取数据时,或者CPU从存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。