打印
[其它]

【Curiosity试用】1.汇编入门

[复制链接]
845|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 JLennon 于 2018-3-2 10:06 编辑

  春节前收到的板子,由于天天带孩子。回来后才开始下手,这个板子的评测,网上
  已有不少,大家可以在论坛里搜索得到,我也不多赘述了,总之就是用起来有随心
  所欲的感觉,搭配mplab x真是良伴。
  1.芯片简介
  PIC16F1619属于8位增强型中档MCU,比之前的16FXXX系列增加了很多外设和新特性,
  比如自动中断现场保护,可配置逻辑单元,外设引脚选择PPS, 允许对数字I/O进行
  引脚映射指令由35条增加到49条,编写程序更灵活,简洁。

  2.21世纪了还有必要学汇编吗?
  在ARM大行其道的时代,大家开发基本都是用C,各个厂家及IDE供应商为了提高开发
  速度,都高度抽象封装了很多库,优点显而易见。那么还有必要学习汇编吗?
  我觉得还是可以学学的,因为它可以帮助我们更深入地理解芯片的架构和功能,可以
  更好地理解高级语言的工作原理,必要时可以进行混合开发,使代码更简洁,架构更
  清晰。
  3.汇编伪指令介绍
  PIC单片机汇编语言除了指令系统的语句外,还有一些用于编译器的控制、定位、输
  入/输 出的非正式指令,这些指令称为伪指令。伪指令在编译过程中并没有产生机器
  码,其使用只是 为了让汇编程序更加简单易读。
  下面介绍儿条PIC单片机常用的伪指令。
  (1) ORG--定位伪指令 格式:ORG nnnn
  该伪指令定义了紧跟其后的指令机器码的真实存放地址,对于PIC16F1619,其FLASH程
  序存储器为8K字节,所以nnnn为13位有效长度的地址参数。
  (2) EQU—赋值伪指令
  格式:符号名EQU nn
  该伪指令的作用是使EQU两端的值相等,相当于给符号名一个特定的值,或者说给某一
  值一个特定的符号名,该伪指令能大大增强程序的可读性。在PIC16F1619中,nn为有
  效长度8位的二进制数值,该数值可以用其他方式表达,如十进制或十六进制等。特别
  的,符号名必须分大小写,如AAA和aaa表达的意思是不同的。
  (3) END—程序结束伪指令
  格式: END
  该伪指令通知编译器停止对源程序的编译。在一个程序中有且只有一条END伪指令,放
  置在整个程序的最后一行。
  (4) INCLUDE——文件调用伪指令
  格式:INCLUDE”文件名"
  该伪指令的作用是告知编译器把事先编写好的外部程序文件包含进来,作为程序的一部
  分,和C语言的include作用一样。尤其是在mplab x ide里,选择好配置字后,鼠标右
  键选择插入到源文件,就直接带入对应型号的inc文件了。
  (5) LIST—列表选项伪指令
  格式:LIST[可选项,可选项,……]
  该伪指令主要用来设置各种汇编参数,对打印输出的列表文件进行格式化。该伪指令所
  有参数必须在一行内书写完成。参数种类有10余中,这里只介绍最常用的两种(mplab
  x中已经不需要用了)。
  ① P=<单片机型号>,例如:LISTP=16F877
  ② R=<默认的数制>,例如:LIST R=BIN ;二进制
  LIST R=DEC ;十进制
  (6) BANKSEL——数据存储器体域选择伪指令
  格式: BANKSELnn
  其中,nn为任一存储器地址或地址变量名。在对数据存储器进行访问时,不管是直接寻
  址还是间接寻址,都需要确定存储单元所在的体域。在直接寻址中,体域的确定是由5
  位的内核寄存器BSR确定的;在间接寻址中,体域的确定是由两个文件选择寄存器FSR确
  定的。这给程序的编写带来很大的麻烦, BANKSEL指令可以直接选存储单元所在的体域。
  (7) PAGESEL—程序存储器体域选择伪指令
  格式:PAGESEL nnnn
  其中,nnnn为指令的符号地址。该指令的作用与BANKSEL相似,可以直接选择符号地址
  所指示的程序页面。PIC16F1619有8K字节的FLASH程序存储器,分为4页,每页大小为
  2K字节, 有两种方法来访问程序存储器中的常量。第一种方法是使用RETLW指令表。第
  二种方法是设置某个FSR,使之指向程序存储器。对于大规模跳转的指令,如CALL、
  GOTO或者以寄存器PCL为目标的操作,最多只能提供程序计数器PC低13位的地址,高位
  的地址来源于PCLATH则需要进行人工干预,而高位地址的主要作用为进行程序页面的选择,
  这给初学者带来较大的麻烦。PAGESEL伪指令可以直接进行程序页面的选择。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

147

主题

687

帖子

8

粉丝