计算机基础知识

单片机的基础架构
单片机的基础架构主要由两种:分别是冯 纽曼架构还有哈佛架构
冯纽曼架构:将数据存储器还有程序存储器结合起来,CPU通过同一条总线进行取值还有取操作数
哈佛架构:CPU通过两条不同的总线连接数据存储器还有程序存储器

总线分为:数据总线地址总线控制总线,各个器件通过总线连接在一起。

机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算),通常也是CPU内部数据通道的宽度。

PIC16F887

在pic16f887(microship的pic系列的8位机)中采取的是哈佛架构,此时程序存储器和数据存储器可以分开,这样子提高了运行的速度。
机器周期和指令周期
Tosc:振荡器时钟周期,也称为机器周期
Tcy:指令周期
Tcy=4Tosc

PIC16F887系列芯片的时钟信号可以由内部振荡器还有外部振荡电路产生。外部振荡电路一般采用皮尔斯振荡电路

对于PIC系列的8位机器,非跳转指令均为单指令周期指令,跳转指令为双指令周期指令。
PIC16系列特性:内部32k~8MHz振荡器,8/16位定时器,比较器,8级硬件堆栈,中断功能, 10/12位AD转换器,USART,SPI,I2C,电压参考模块,比较器模块,最大时钟20MHz,35条指令。

其中有/的是对该引脚的复用
PIC16F887系列的主要参数

1Byte(字节)=8bit(位)
在887里面,1字=14位
887中程序存储器(ROM)占8K字(8
2^10字)等于8K14bit
一个字存放一条指令,最多可以存放8192条指令
数据存储器共512Byte(字节),其中EEPROM占256字节,SRAM占368字节
PIC16F887的特点
①8位机代表数据总线是8位(根),即可直接访问8位数据存储器
RAM:512字节(1字节=8位),其中通用寄存器
368字节
②程序存储器:8K字(1字≠16位),而是与指令位长对应。
由于16系列指令位长14位,所以程序存储器容量
8K
14位
③引脚数:40/44。
I/O数(指用户可以用于编程的引脚数):35
35个既可以作为输出引脚又可以作为输入引脚
输入引脚:36个
输出引脚:35个
其中一号引脚RE3只能作为输入引脚
主要功能
◆3个定时器,2个8位,1个16位;
◆2个CCP模块,即捕捉、比较、脉宽调制模块;
◆1个同步串行接口,SPI与I2C;
◆1个通用同步/异步串行通信接口USART;
◆上电复位(POR);
◆掉电复位(BOR);
◆低功耗睡眠工作方式;
◆14路10位AD转换器;
◆2个模拟电压比较器;
◆1个参考电压发生器;
◆8级硬件堆栈;
◆可擦写10万次的FLASH程序存储器;
◆可擦写100万次的EEPROM,数据保持40年以上;
◆可自编程及在线编程;
◆看门狗电路WDT;
◆程序代码保护
程序存储器
1.程序计数器(Program Counter)
定义:用于存放下一条指令所在单元的地址的地方。
887系列的PC为13位,刚刚好可以存放对应程序存储器的8192个指令的地址值
2.堆栈
887的硬件为8级堆栈,意味着除中断外,能最多嵌套连续7级的子程序调用。那个少掉的一级是主函数main。堆栈是一个类似弹夹的结构,先入后出。当堆栈被填满后,就会出现溢出。这告诉我们在单片机中不能像计算机C语言中对函数大幅度的调用
我们可以通过使用宏定义等方式实行替代
3.复位向量
PIC16系列单片机的复位向量为0,当各种原因产生单片机复位时,程序是从复位向量即
0单元开始执行的。
4.中断向量
16系列单片机的中断向量为0x0004。当单片机产生中断时,硬件将PC指针强制指向该中断
向量,即程序自动跳转到0x0004。
5.程序存储器
程序存储器为4页,每页2k字。从页0到页3

数据存储器

说明:
①数据存储器分为4个体(bank):bank0~bank3,也称为体0~体3。
②特殊功能寄存器:图中已命名的单元;
通用寄存器:图中未命名的单元,可供用户自由使
用(共368单元=96+80+96+96);
未定义:图中灰色单元,不能使用;
映射:图中体1~体3各有16个单元映射到体0的
70h~7Fh,它们可以在不同的体中直接存取,便于编程。
③图中的特殊功能寄存器名称是在汇编程序中定义的,XC8中定义的绝大部分与之相同,但也有个别不同,在用XC8语言编程中要引起注意。(学会查看XC8安装目录下include------>后缀名为“.h”的头文件)
常用的SFR介绍
SFR全程为special function register
STATUS 状态 用于检测程序执行的情况

OPTION_REG

分频器

XC8基本介绍

主要介绍几个概念,其他的知识在C语言笔记中都可以学习到。
变量的类型

 __bit i; //__两条短的下划线_int a ;float b;char c;double e;

位变量,是XC8语言中特有的。有了位变量,就可
以方便进行位操作,如对某一引脚设置为高电平或低电平就很方便了。有了位变量,就没有必要用一个8位的变量表示,只要一位就可以表示的内容,可以节省单片机的内存。位变量可以类比布尔值理解,占1bit空间。
变量的转化
自动类型转换的转换规则是:
⑴实型赋予整型,只赋整数部分,舍去小数部分
⑵整型赋予实型,数值不变,但将以浮点形式存放,小数部分值为0
⑶字符型赋予整型,由于字符型为单字节,而整型为双字节,故将字符型的值放到整型量的低8位中,高8位为0
⑷整型赋予字符型,把低8位赋予字符型变量,高8位无效
变量修饰关键词
1.extern 外部变量声明
如果在一个C程序文件中要使用一些由其他文件定义的变量或者引用由嵌入汇编程序定义的变量,那么在本程序文件中要将这些变量声明成“extern”外部类型。
sub1.c

char var1,var2;

在sub2.c中可以引用

extern  char var1,var2;

2.volatile 易变型变量声明
告诉编译器,这些变量是随机的,不要对这些变量进行优化处理。
因为在单片机运行过程中可能需要多次地对端口进行读取值,如果按照标准C里面来说,编译器优化,会导致只能执行最后一条读取指令。
为了方便单片机的使用,在相关的头文件中,所有的特殊功能寄存器都已经被定义成volatile型。
此外,当子程序定义的变量在主程序中没有用
到时,不用” volatile”关键字定义时,这些变量
会被忽略,即在观察窗口中看不到它们!当在定义变量时用了” volatile”关键字时,可以在观察窗口中见到它们。
3.const 常数型变量声明

  1. 单片机的常数实际上是存于程序存储器的,这是因为通常单片机的程序存储器相对数据存储器大,可以存入较多的常数。
  2. 常数在程序存储器中是以查表的形式返回值。
  3. 一个程序存储器单元(字,14位)只能存储一个8位的字节常数(字符型),即一个整形常数必须存放在两个连续的程序存储器单元中!
    ⒋. persistent 非初始化变量声明
    标准C语言的程序在开始运行前首先要把所有定义的但没有赋初值的变量全部清零。但在单片机中,有的变量是不能清零的,如有的端口的值是由外部线路确定的,有的寄存器内容在非上电复位时是不改变的。
    xc8提供了“persistent”修饰词以声明此类变量无需在复位时自动清零,并且在退出某些函数时这类变量仍然保留。
    5.static 静态变量声明
    如在声明中加了静态变量修饰词“static”后,则在退出函数后,这类变量仍然保留。延长局部变量的生命周期。

    共用体

    带参数的宏定义
#define PI 3.1415926 //不带参数的宏定义
#define S(a,b) a*b//带参数的宏定义
#define BITSET(Var,Bitno) ((Var) |= 1<<(Bitno))
#define BITCLR(Var,Bitno) ((Var) &= ~(1<<(Bitno)))
#define SEND_ONE(a) \
TXREG=a; \
while(TRMT==0)

运算符号及其优先级

【单片机原理及其应用】第二章PIC16F887的基本介绍相关推荐

  1. 计算机原理与应用 第二章——ARM处理器

    第二章--ARM微处理器 文章目录 第二章--ARM微处理器 一.ARM微处理器特点及功能结构 1.ARM微处理器主要特点 2.指令集方面的主要特点 3.Cortex系列处理器特点 4.ARM处理器功 ...

  2. HT合泰单片机入门教程(第二章 点亮第一个LED灯)

    文章目录 系列文章目录 前言 一.新建工程 1.启动HT-IDE3000 2.建立工程 二.点亮LED灯 1.了解I/O 2.LED代码 总结 系列文章目录 第一章 HT单片机环境搭建 第二章 点亮第 ...

  3. 计算机原理简明教程第二章,《计算机原理简明教程》习题答案[参考].doc

    <计算机原理简明教程>习题参考答案 第一章习题答案 1.1 答:是1946年在美国宾夕法尼亚大学诞生,称为ENIAC. 特点是由1800个电子管和1500个继电器组成,重30吨:功耗150 ...

  4. 计算机的定点运算器原理,计算机组成原理第二章第10讲定点运算器的组成.ppt

    <计算机组成原理第二章第10讲定点运算器的组成.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理第二章第10讲定点运算器的组成.ppt(20页珍藏版)>请在装配图网上搜 ...

  5. 语音识别原理与应用 第二章 语音信号基础

    目录 第二章 语音信号基础 2.1 声波的特性 2.2 声音的接收装置 2.3 声音的采样 2.4声音的量化 2.5 语音的编码 2.6WAV文件格式 2.7WAV文件分析 第二章 语音信号基础 声波 ...

  6. 有关H5第二章排列页面内容介绍

    第二章 1.音频标签:audio < audio src="music.mp3" controls="controls " loop="loop ...

  7. 会计学原理学习笔记——第二章——账户设置与借贷记账法(2.5会计科目)

    借贷记账法是以"借"."贷"作为记账符号,以"有借必有贷,借贷必相等"作为记账规则的一种复式记账法. 借贷记账法在会计核算应用中包括记账符号 ...

  8. 编译原理练习题(第二章)

    编译原理练习题 写一个文法,使其语言是奇数的集合,且每个奇数不以0开头. 下面文法生成的语言是什么?G1:S->AB A->aA| e B->bc|bBc G[S]为:S->a ...

  9. 04741计算机网络原理2018年版-第二章 网络应用 知识要点

    一.网络应用体系结构 标记: 1. 网络应用体系结构与分类 计算机网络应用从体系结构角度可以分为:客户/服务器(C/S)结构,纯P2P(Peer to Peer)结构和混合结构3类. 领会: 1. C ...

最新文章

  1. LeetCode--004--寻找两个有序数组的中位数(java)
  2. BRCM5.02编译二:Error: Could not retreive version from automake
  3. 用json 数据生成mysql 表_根据json数据生成表格
  4. 操作系统与多核处理器
  5. 微信第三方平台公众号授权
  6. C语言叠堆在变量周围,C语言及ARM中堆栈指针SP设置的理解与总结
  7. 还债之期末复习(预习)
  8. 毛星云opencv入门边缘检测Canny代码
  9. 如何将JavaScript中的JSON字符串转换为JSON对象数组?
  10. MATLAB数字图像小系统
  11. [附源码]Java计算机毕业设计SSM大学生志愿者管理系统
  12. python里面fabs什么意思_介绍Python中的fabs()方法的使用
  13. matlab抠图数据,MATLAB抠图
  14. android实现一键锁屏
  15. 2019年,为大家推荐9个高质量公众号
  16. 【GitHub】 github如何使用
  17. 如何制作动画效果的文字图片?教你一键合成gif动画
  18. Android系统铃声音乐文件夹
  19. 感人:留给老婆下任老公的信
  20. Matlab 2014b在Ubuntu14.04安装

热门文章

  1. Jungle Roads丛林道路(最小生成树PrimKruskal算法)
  2. 【商业分析 03】疫情之下(20年初IT桔子投融资数据分析)
  3. openssl心脏出血bug的补丁修复
  4. python freshman day1
  5. Jackson 解析j@JsonIgnorePropertiesson数据之忽略解析字段注解
  6. 【问题解决】关于Oracle官网下载JDK需要登录Oracle账户问题
  7. [转]linux grep命令的使用
  8. 大数据专业就业岗位有哪些?
  9. 微信小程序开发(九)之开发版和测试版小程序打不开的问题
  10. csp试题1:小明种苹果