程序计数器是什么东西

程序计数器是什么东西,第1张

程序计数器是用于存放下一条指令所在单元的地址的地方。

当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。

程序计数器是计算机处理器中的寄存器,它包含当前正在执行的指令的地址(位置)。当每个指令被获取,程序计数器的存储地址加一。在每个指令被获取之后,程序计数器指向顺序中的下一个指令。当计算机重启或复位时,程序计数器通常恢复到零。

特点

为了保证程序(在 *** 作系统中理解为进程)能够连续地执行下去,处理器必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的第一条指令所在的内存单元地址送入程序计数器,因此程序计数器的内容即是从内存提取的一条指令的地址。当执行指令时,处理器将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。

但是,当遇到转移指令如JMP(跳转、外语全称:JUMP)指令时,后继指令的地址(即PC的内容)必须从指令寄存器中的地址字段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。

这个以前做过,给:

#include <AT89X51H>

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char Count;

void delay10ms(void)

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

void main(void)

{

Count=0;

P0=table[Count/10];

P2=table[Count%10];

while(1)

{

if(P3_7==0)

{

delay10ms();

if(P3_7==0)

{

Count++;

if(Count==100)

{

Count=0;

}

P0=table[Count/10];

P2=table[Count%10];

while(P3_7==0);

}

}

}

}

while(1)

{

th1=TH0;

tl=TL0;

th2=TL0;

if(th1==th2)

break;

}

你的程序在这里死循环了,TH0 和TL0 相等的时候才能跳出死循环,不知道你这里为什么这么写~把这里改改吧~

使用步骤:

1、开机回零,按设定或计数键进入计数程序。(数一定数量产品,如五或十)

2、放在秤上再按设定或计数键进入计数。(计数显示最大量因秤而定)

3、再按设定或计数键退出计数系统。

电子计数秤是一种自动计数机械装置,具有自动计数功能,现被广泛应用于工业生产中。

简介:

电子计数秤即是一种具有计数功能的电子秤,多用于零件工厂、工艺品加工厂等领域。这种电子秤可以精确测算一堆零件的数量,因此极大的提高了工厂仓储人员的工作效率,为企业节省了大量开支。

区别:

我们都知道电子秤按功能分可以分为电子计数秤、电子计价秤和电子计重秤,那么电子计数秤和后者又有什么区别呢

首先电子计重秤是一种功能最为简单的电子秤,只具有电子秤最基本的计重等功能;其次电子计价秤则在此基础上加入了计价功能,多用于超市、便利店、和菜市场等场合;而电子计数秤则是在计重秤的基础上加入了计数功能,比如上海亚津计数秤,具有一键自动校准技术,便于用户日后用户校准。

电子称称重计数的步骤:

1、计数电子秤开机预热10分钟;

2、单重取样:人工数出100个单重相同的元件,然后把数好的元件放在称盘的中心位置,利用数字按键输入数量值(如100),然后按“单重设定”键,这时计数电子秤的单重窗口显示此批次元件的单重值;

3、单重储存:按住“单重设定”键约2秒钟在输入0-9任意数字键,此时的单重值已经存入电子秤中(不会因正常关机而丢失数据),这样就可以进行计数称称重了;

4、单重调处:每次重新开机时可以随时调用(按相应的数字键,然后双击“单重设定”键就可以调处已存的单重数据),随时可以进行计数称重;

5、正常计数:随意取出若干未知数量的同类元件防在秤盘上,计数电子秤迅速的显示出计算结果,然后人工验证显示结果的准确性,验证结果为100%正确,误差为0。

看不见你接线图,先来一个C语言的,汇编确实没C语言方便

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar a , b=0;

sbit wei1=P10;

sbit wei2=P11;

//共阴数码管七段码

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};

void Delay1ms(uint i) //1ms延时程序

{

uint j;

for(;i>0;i--)

{

for(j=0;j<164;j++)

{;}

}

}

void display( uchar a)) //显示程序

{

P0= table[a/10];//十位

wei1=1;

Delay1ms(2) ;

wei1=0;

P0= table[a%10];//个位

wei2=1;

Delay1ms(2) ;

wei2=0;

}

void main(void )//主程序

{

TMOD=0x01;// 定时器0工作方式一

ET0=1;

EA=1;

TH0=(65536-50000)/256;//定时50ms

TL0=(65536-50000)%256;

TR0=1;

while(1)

{

display(b);

}

}

//中断子程序

void Timer0(void) interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

a++;

if(a==20)//20次是1 秒

{ a=0;b++;}

if(b==100)

{ b=0;}

}

以上就是关于程序计数器是什么东西全部的内容,包括:程序计数器是什么东西、用单片机c51,c语言编00-99计数器程序!谢谢!!、90C516RD+的一个计数器程序如下:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9305004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存