历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2019年10月12日 | PIC16F84单片机内部硬件资源一

2019-10-12 来源:eefocus

    上期笔者介绍的PIC16F84单片机点亮一只发光二极管的源程序实例是为了说明PIC单片机16F84具体应用时的基本格式。


  现在我们已经知道要单片机工作,就需用汇编语言编制程序。而对某个PIC单片机编程时,还需对选用的PIC单片机内部硬件资源有所了解。这里介绍PIC16F84单片机的内部结构,如图1所示的框图。由图1看出,其基本组成可分为四个主要部分,即运算器ALU和工作寄存器W;程序存储器;数据存储器和输入/输出(I/O)口;堆栈存储器和定时器等。现分别介绍如下。


  1运算器ALU及工作寄存器W
  运算器ALU是一个通用算术、逻辑运算单元,用它可以对工作寄存器W和任何通用寄存器中的两个数进行算术(如加、减、乘、除等)和逻辑运算(如与、或、异或等)。16F84是八位单片机,ALU的字长是八位。在有两个操作数的指令中,典型的情况是一个操作数在工作寄存器W中,而另一个操作数是在通用寄存器中,或者是一个立即数。在只有一个操作数的情况下,该数要么是在工作寄存器W中,要么是在通用寄存器中。W寄存器是一个专用于ALU操作的寄存器,它是不可寻址的。


  根据所执行的指令,ALU还可能会影响框图中状态寄存器STATUS的进位标志C、全零标志Z等。


  2程序存储器
  单片机内存放程序指令的存储器称为程序存储器。PIC16F84的所有指令字长为14位。所以程序存储器的各存储单元是14位宽。一个存储单元存放一条指令。16F84的程序存贮器有1024(28)个存储单元(存储容量为1k)。这些程序存储器都是由FPEROM构成的。


  程序存储器是由程序计数器PC寻址的。16F84的程序计数器为13位宽,可寻址8K(8×1024)的程序存储器空间,但16F84实际上只使用了1k的空间(单元地址为0~3FFH)。当访问超过这些地址空间的存储单元时,将导致循环回到有效的存储空间。


  对于用过其它单片机的用户,可能会感到16F84的片内存储器容量太少了。实际上并非如此,因为16F84的指令系统都是由单字指令构成的,相应于其它由二字节、三字节甚至四字节指令的单片机而言,PIC单片机的程序存储器有效容量要比标称值扩大25倍到3倍。


  知识竞赛试题:
  15简述PIC系列单片机助记符指令中操作数f、d、b、k取值的可能范围,并简要说明其依据。
  16指出PIC16F84单片机框图(上文图1)中寄存器的类型和不能访问的寄存器名称?


推荐阅读

史海拾趣

赛微(Cellwise)公司的发展小趣事

随着公司业务的不断发展和技术实力的不断提升,赛微开始积极拓展国际市场。公司坚持“以人为本”的理念,积极引进国际化人才,加强与国际知名企业的合作与交流。通过多年的努力,赛微已经成功打入国际市场,与众多国际知名企业建立了长期稳定的合作关系,实现了业务的国际化拓展。

GE Industrial Solutions公司的发展小趣事
使用噪声测试仪测量输出信号的噪声水平,确保满足应用需求。
CHERRY公司的发展小趣事

随着业务的不断发展,Cherry将目光投向了更广阔的市场。1967年,随着个人计算机的普及,Cherry看到了键盘市场的巨大潜力,于是决定引进键盘生产线。不久之后,Cherry建造了世界上第一个键盘工厂,开始生产高质量的键盘产品。这一决策为Cherry公司后来的发展奠定了坚实的基础。

CTC Coils Ltd公司的发展小趣事

随着国内市场的逐渐饱和,CTC Coils Ltd公司开始将目光投向海外市场。公司首先在欧洲设立了销售分支机构,通过参加国际电子展会、与当地企业建立合作关系等方式,逐步打开了欧洲市场。随后,公司又进一步拓展到北美和亚洲其他地区,实现了业务的国际化布局。

EMBEST公司的发展小趣事

在XXXX年12月,EMBEST成为了Microsoft银牌合作伙伴。这一荣誉的获得标志着EMBEST在软件开发和服务方面得到了业界的广泛认可。作为Microsoft银牌合作伙伴,EMBEST将能够更好地利用Microsoft的技术和资源,为客户提供更优质的服务和解决方案。

Gilway Technical Lamp公司的发展小趣事
观察压缩机是否有明显损坏或异常现象,如漏油、烧焦等。

问答坊 | AI 解惑

教大家我应该用什么方法设计这个波形发生和控制电路

大家好!我想设计一个电路,可以产生两路同步的波形,还在波形产生到某个点的时候触发一个采集卡采集数据,请问我是用cpld,单片机,arm,fpga,dss,plc中的哪种?因为我要学会了才弄,希望大家给点意见。…

查看全部问答>

终于点亮了我的LCD显示器,1024*768@60Hz,verilog语言,EP2C8,全部源码

昨天几乎一晚没睡,参考了很多代码,现在只是点亮了,没进行美化,我是新手,大家别拍砖,呵呵。 module vga( clock, switch, disp_RGB, hsync, vsync ); input clock; //系统输入时钟 input [1:0]switch; output  [ ...…

查看全部问答>

NdisFOidRequest发送OID请求

我想从FIlter发送一个OID到miniport.可是总是出现蓝屏事件。烦请帮我看看:NDIS_STATUS filterCreateNewMACRequest(     IN NDIS_HANDLE                  FilterModuleCon ...…

查看全部问答>

ARM认证有用么?

请问各位前辈,有ARM认证找工作,企业认不认啊,嵌入式方面都有什么权威认证阿。…

查看全部问答>

嵌入式系统软件反盗版问题

我想知道怎么能做到一套硬件系统唯一对应一套软件,关键硬件没有唯一性,要是cpu或存储器能有个序列号就好办,一般的flash是不都没有串号或者叫序列号?三星的K9F1208U0M好像没有啊!…

查看全部问答>

基于单片机89s51的预应力张拉控制仪的设计

急需,谢谢帮帮忙,传一个到邮箱rap511423713@qq.com!!!!!!!!!!!!!1…

查看全部问答>

上位机(VB6.0)与下位机STM32 USB接口通讯 多谢

请问下,我是用VB6.0做上位机,STM32做下位机。通过上位机VB发送一个指令,下位机(STM32)收到后,执行对应的命令,这是怎么实现的,例如STM32的PB0~PB7分别点亮8个LED发光二极管!从VB中发送出来 地址 &H00,&H01,&H02,&H03,&H04,&H05,&H06, ...…

查看全部问答>

pcb设计之keepout和Mechanical:

最新重点之:keepout和Mechanical:用protel 99或是dxp系列软件设计的工程师,一定要注意在画线的时候不论画在那一层,在线的属性选项中一定不要随便把keepout选项勾,一旦选中了keepout选项,则这根线无法 做出(只要选上了这个选项,则表明禁掉这 ...…

查看全部问答>

是不是只要是芯片就属于数字电路?对模拟的概念,有点蒙了,求大神指教一二

     以前吧,感觉自己很清楚模拟和数字的概念,最近越来越感觉模糊了^             以前感觉——只要是芯片就属于数字电路,电阻电容搭建起来的电路属于模拟电路。 比如单片机就 ...…

查看全部问答>

temp6=(int)(Rain*10);这个语句有问题吗?

temp6=(int)(Rain*10);这个语句有问题吗?我的Rain是float类型的 …

查看全部问答>