为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。
              
                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
成都 金韦