位置:51电子网 » 技术资料 » 单 片 机

PIC单片机程序设计的基本格式

发布时间:2008/5/27 0:00:00 访问次数:567

http://www.hificat.com

  为了快速掌握pic单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令title提供程序的标题,接着给出整个程序的总说明,并用列表伪指令list指定所用单片机型号和文件输出格式,再利用include伪指令读入mpasm中提供的定义文件如《p16f84inc》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。

  title“this is……”;程序标题
   ;程序说明
   list p=16f84,f=1nhx8m
   ;
   include <p16f84.inc>
   -config_rc_qsc &_wdt_0ff…
   ;资源定义和变量定义
   status equ 03
   fsr equ 04
   porta equ 05
   portb equ 06
   j equ 01f
   k equ 01e
   ;…………………
       org 0000 ;
       goto main ;跳过中断矢量
       org 0004
       goto intsrv;子程序入口地址
   ;……………………………………
   main       ;从0005h开始放主程序
       call initports ;端口初始化
       call inittimers;定时器初始化
       …
   intsrv …     ;中断服务程序区
   svbrth…      ;子程序区
     end      ;程序结束符
   当然,在编写程序时可根据实际情况加以调整。下面是一份实际程序清单,要求将数据88h写入pic16f84单片机内部eeprom的20h单元,而后再从20h单元将其读出。
   list p=16f84,f=inhx8m
   ;……………………………
   status equ  03  ;定义寄存器
   eedata equ  08
   eeadr equ  09
   intcon equ  0bh
   eecon1 equ  88h
   eecon2 equ  89h
   ;…………………………
   rd    equ  0    ;定义位
   wr  equ  1
   rp0   equ  5
   gie  equ  7
   ;…………………………
        org  0
        goto wrstart
   ;……………………………
        org  10h
   wrstart         ;写入操作开始
        clrw      ;清w,使w=0
        bcf status,rp0 ;选bank0
        movlw 20h
        movwf eeadr   ;地址→eeadr
        movlw 88h
        movwf eedata  ;写入数据→
                 ;eedata
        bsf status,rp0 ;选bank1
        bsf eecon1,2 ;写操作使能允许
        bcf intcon,gie ;关闭所有的中断
        movlw 0x55
        movwf eecon2  ;55h→eecon2
        movlw 0xaa
        movwf eecon2  ;aah→eecon2
       bsf eecon1,wr ;启动写操作
        bsf intcon,gie ;恢复开中断
   rdstart          ;读出操作开始
        bcf status,rp0
        movlw 20h
        movwf eeadr   ;地址→eeadr
        bsf status,rp0
        bsf eecon1,rd ;启动读操作
        bcf status,rp0
        movf eedata,w ;将eeprom
                 ;数据读入w
   end



http://www.hificat.com

  为了快速掌握pic单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令title提供程序的标题,接着给出整个程序的总说明,并用列表伪指令list指定所用单片机型号和文件输出格式,再利用include伪指令读入mpasm中提供的定义文件如《p16f84inc》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。

  title“this is……”;程序标题
   ;程序说明
   list p=16f84,f=1nhx8m
   ;
   include <p16f84.inc>
   -config_rc_qsc &_wdt_0ff…
   ;资源定义和变量定义
   status equ 03
   fsr equ 04
   porta equ 05
   portb equ 06
   j equ 01f
   k equ 01e
   ;…………………
       org 0000 ;
       goto main ;跳过中断矢量
       org 0004
       goto intsrv;子程序入口地址
   ;……………………………………
   main       ;从0005h开始放主程序
       call initports ;端口初始化
       call inittimers;定时器初始化
       …
   intsrv …     ;中断服务程序区
   svbrth…      ;子程序区
     end      ;程序结束符
   当然,在编写程序时可根据实际情况加以调整。下面是一份实际程序清单,要求将数据88h写入pic16f84单片机内部eeprom的20h单元,而后再从20h单元将其读出。
   list p=16f84,f=inhx8m
   ;……………………………
   status equ  03  ;定义寄存器
   eedata equ  08
   eeadr equ  09
   intcon equ  0bh
   eecon1 equ  88h
   eecon2 equ  89h
   ;…………………………
   rd    equ  0    ;定义位
   wr  equ  1
   rp0   equ  5
   gie  equ  7
   ;…………………………
        org  0
        goto wrstart
   ;……………………………
        org  10h
   wrstart         ;写入操作开始
        clrw      ;清w,使w=0
        bcf status,rp0 ;选bank0
        movlw 20h
        movwf eeadr   ;地址→eeadr
        movlw 88h
        movwf eedata  ;写入数据→
                 ;eedata
        bsf status,rp0 ;选bank1
        bsf eecon1,2 ;写操作使能允许
        bcf intcon,gie ;关闭所有的中断
        movlw 0x55
        movwf eecon2  ;55h→eecon2
        movlw 0xaa
        movwf eecon2  ;aah→eecon2
       bsf eecon1,wr ;启动写操作
        bsf intcon,gie ;恢复开中断
   rdstart          ;读出操作开始
        bcf status,rp0
        movlw 20h
        movwf eeadr   ;地址→eeadr
        bsf status,rp0
        bsf eecon1,rd ;启动读操作
        bcf status,rp0
        movf eedata,w ;将eeprom
                 ;数据读入w
   end



相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!