英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 2416|回复: 0
打印 上一主题 下一主题

Windows下PIC 8位单片机源程序汇编和固化(二)

[复制链接]
跳转到指定楼层
1#
发表于 2009-5-5 17:09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2  在MPLAB中建立PIC单片机源程序
  笔者将以附图的PIC16C55单片机脉冲计数试验电路(计数时,RA1口为十进制码输入,RB口为二进制码输出)的源程序PIC count.ASM为例,介绍在MPLAB集成开发环境下编辑(建立)PIC单片机源程序的方法。其操作步骤如下。
  (1)打开MPLAB桌面(窗口)和空白编辑窗口 开启PC机,启动运行Windows,在Windows的管理程序下,用鼠标点击显示屏上的图标Microchip(快捷),即可启动运行MPLAB集成开发软件,此时屏幕上将显示MPLAB的桌面(见今年第25期本版的《源程序的汇编和固化(一)》文中的附图)。从已打开的MPLAB的桌面(窗口)上,用鼠标点击MPLAB菜单栏中最左边的File(文件),即可打开File的下拉菜单,再用鼠标点击下拉菜单中的命令New Source(新建源程序),即可打开一个空白的编辑窗口,在此窗口中用键盘键入PIC 16C55 COUNTASM源程序再对其进行编辑(以MPLAB V301版为例):
      LIST P=16C55
      #INCLUDE P16C5XINC
      COUNT EQU 1EH
      ORG     0
START
      MOVLW 0
      MOVWF PORTB   ;设置B口为输出
      TRIS     PORTB
      CLRF    COUNT   ;置计数器COUNT为零
LOOP
      BTFSS   PORTA,1;判断开关K按下否?
       GOTO    INCOUNT;按下开关K,跳转执行IN-
              ;COUNT
ENDLOOP
      GOTO LOOP  ;开关未按下,继续循环
             ;判断
INCOUNT
        INCF COUNT,1  ;计数器COUNT+1
        MOVF COUNT,W
        MOVWF PORTB    ;从B口输出计数值
DEBOUNCE
        BTFSS PORTA,1   ;判断开关K释放否?
        GOTO DEBOUNCE ;没有释放继续判断
      GOTO LOOP      ;开关K释放重新开始
      ORG   0x1FF   ;复位向量
      GOTO START
      END
  说明:在MPLAB集成开发环境下建立源程序时,其源程序文件的开始应使用伪指令List(列表选择指令)指示符,指定处理的类型(对象)。所以,上述的源程序的开始处为List P=16C55。其中的“P=”是处理类型,代表设置微控制器为16C55(芯片)。接着又用了伪指令#include P16C5XINC,代表MPLAB应把要处理(类型)的微控器F16C55的所有已设置的文件,在需要时就读入这里的源程序中。这条伪指令就为源程序中的代码设置大为简化,例如PORTB、TRIS以及其它特殊功能寄存器,就不再用EQU伪指令给它们赋值了。
  源程序中紧接着上面的伪指令为ORG,代表存放程序的起始地址。所以在一个源程序中,可以根据需要多次使用ORG伪指令定位。在上述的源程序中,使用了两次ORG 。值得注意,在PIC系列单片机中,对初级产品PIC16C54/55的复位向量为1FFH;PIC16C56为3FFH;PIC16C57/58为7FF;对中级和高级产品的复位向量为000H和0000H。由此可见在建立PIC单片机源程序时,使用一些伪指令是很有必要的,用它可以为建立源程序完成一些特定功能,使编制的源程序大大简化。源程序后面的各条指令功能均已在注释中给了说明,这里不再复述。
  
   知识竞赛试题:
   27若将上文中的源程序PIC16C55ASM移植成PIC16F84 COUNTASM,文中编辑的源程序应作何修改?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-9 01:39 , Processed in 0.056218 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表