1、综述:

总体来看,这款芯片功能齐全:
ADC
cps
EEPROM
DAC
DSM
USART
SR latch
timer(3)

2、存储

2048的RAM

3、寄存器详解

寄存器种类

寄存器 功能
CORE REGISTERS 直接影响基础操作
STATUS Register 指令目的地
SPECIAL FUNCTION REGISTER 控制外设
GENERAL PURPOSE RAM 每个数据单元的通用寄存块
Linear Access to GPR 通往大型存储结构
COMMON RAM 通用的存储单元

3.1、核心寄存器

核心寄存器 作用
INDF0 $1600
INDF1 $12
PCL $1
STATUS
FSR0 Low
FSR0 High
FSR1 Low
FSR1 High
BSR
WREG|
PCLATH|INTCON|

INDF0

INTCON寄存器

状态寄存器

3.2、特殊功能寄存器

The Special Function Registers are registers used bythe application to control the desired operation of peripheral functions in the device. The registers associated with the operation of the peripherals are described in the appropriate peripheral chapter of this
data sheet.
这种类型的寄存器主要用于控制外设

3.3、通用寄存单元

The general purpose registers are a group of RAM locations in the file register that are used for data storage and scratch pad. Each location is 8 bits wide and can be used to store any data we want as long as it is 8 bit. Again, the number of RAM locations in the file register that are set aside for general purpose registers can vary from chip to chip, even among members of the same family. In the PIC micro-controllers, the space that is not allocated to the special function registers is used for general purpose registers. That means in a PIC chip with a thousand-byte file register, no more than 100 bytes are used for special function registers are the rest are used for general purpose registers. A larger GPR size means more difficulties in managing these registers if you use assembly language programming. In today’s high performance micro-controllers, with a over of thousand bytes of GPR, the job of managing them is handled by the C compilers. Indeed, the C compilers are the very reason we need a large GPR since it makes it easier for C compilers to store parameters and perform their jobs much faster.

4、点灯


#include <pic.h>__CONFIG(0xFF32); //配置字void main()
{TRISA = 0;            //设置a为输出模式PORTA =0x00000001;   //输出while(1);           //循环
}

5、汇编程序分析

下图 program memory 查看汇编代码

Address           Disassembly          000    GOTO 0x1                                   跳转到INDF001    CLRF 0x8                                          清零BSR 002    GOTO 0x7f6                                 跳转到0x7f6736    MOVWI [-1]FSR1                           737    MOVWI [-1]FSR1                7F5    MOVWI [-1]FSR1                  7F6    MOVLB 0                                      BSR =07F7    GOTO 0x7f8                                    跳转到0x7f87F8    MOVLB 0x1                                    BSR = 17F9    CLRF 0xc                                         清零 PORTA7FA    MOVLW 0x1                                    w= 17FB    MOVLB 0                                     BSR = 0 7FC    MOVWF 0xc                                   w=0xc7FD    GOTO 0x7fe                                 跳转到0x7fe7FE    GOTO 0x7fe                                   跳转到0x7fe7FF    GOTO 0x1                                     跳转到0x1

总结,这里我们要十分主义的是,我们每次改变BSR数值的时候,其实就是改变bank数据块,那么当BSR =1 的时候,我们再执行 movwf 0xc实际的起始地址是,bank1 的起始地址,所以这里的0xc实际上是指 0x8c TRISA

PIC16F1823开发笔记(二)芯片研究以及第一个程序和汇编研究相关推荐

  1. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  2. [安卓开发笔记二]android Studio通过jni调用C++代码

    [安卓开发笔记二]android Studio通过jni调用C++代码 16/12/11 更新 此博客基于安卓android studio 1.5所写,现在已经有了android studio2.2的 ...

  3. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: happ ...

  4. iOS工程开发笔记二

    iOS工程开发笔记<二> 在Xcode 4, 5的模板工程中可以看到Precompile Prefix Header,但是在Xcode 6被去除了. Xcode 6去掉Precompile ...

  5. 微信小程序开发笔记二(WXSS和CSS样式美化)

    微信小程序开发笔记二(WXSS和CSS样式美化) 一.CSS基本知识 1.Class选择器的定义 2.ID选择器的定义 3.ID选择器和class选择器的区别 4.CSS中设置颜色 5.CSS中的文本 ...

  6. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模 五 粒子系统模拟 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  7. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7607916 作者:毛星云    邮箱: h ...

  8. NRF51822开发笔记-2.Keil-MDK编译的第一个程序

    NRF51822开发笔记-2.Keil-MDK编译的第一个程序 1.进入安装路径,找到第一个实验Blinky_example,双击打开 2.编译 3.编译成功,无错误 4.生成了Hex文件 编译成功了

  9. UNP学习第一步:unp.h的安装及第一个程序的运行

    UNP学习第一步:unp.h的安装及第一个程序的运行 unp.h的安装 源代码编译 静态库安装 运行第一个程序 启动daytime服务 unp.h的安装 源代码编译 在书籍网站(http://www. ...

最新文章

  1. NVisionXR_iOS教程二 —— 创建控制器和Vuforia对象
  2. JavaScript Binding
  3. 【论文笔记】LINE:大规模信息网络嵌入
  4. vue引入bootstrap、jquery
  5. 还在搞三层架构?DDD 分层架构了解下!
  6. 01. View C++ as a federation of languages
  7. 服务器远程桌面一直正在配置,关于远程桌面一直显示正在配置远程会话
  8. 随手记-----cookie
  9. gsp 页面 html.dat,Gsp
  10. Unity使用FGUI的基本操作(一)
  11. 基本磁盘转换动态磁盘,再转换为基本磁盘,分区数据丢失
  12. iPhone屏幕尺寸、逻辑分辨率、物理分辨率、像素密度 (2018)
  13. cocos 场景制作流程
  14. 拳皇 - 人物动作素材图 61种
  15. 嵌入式学习笔记7——串口通信
  16. POS单上的商户编号解释
  17. AudioEffect源码解析
  18. 当我跑步时,我在想什么
  19. 校招面试真题 | 实习生和应届生有什么区别?
  20. Python中 * 的用途

热门文章

  1. 2020 PostgreSQL亚洲大会-PostgreSQL授权培训机构公益专场精彩回顾
  2. 幼儿园关于计算机的应用教案,幼儿园中班教案《聪明的电脑》含反思(通用)...
  3. 平台商业模式成就了阿里巴巴
  4. RTC 2017实时互联网大会会议总结、数据收集
  5. 802.11a matlab,802.11a-OFDM 基于matlab的 仿真程序; 我再论坛找了很多 的代码和文章,但总有遗患,为什么呢 270万源代码下载- www.pudn.com...
  6. 一文搞清楚单相ab0到dq0的变换
  7. 电脑连接电视的方法——HDMI篇(图文详解)
  8. Git命令行上传项目至GitHub
  9. Java8特性 stream流常用方法
  10. 多卡聚合路由器在无人机电力巡检领域图传的作用