為了快速掌握PIC單片機源程序的基本結構,這里給出一個典型的程序結構框架。建立源程序時首先用偽指令TITLE提供程序的標題,接著給出整個程序的總說明,并用列表偽指令LIST指定所用單片機型號和文件輸出格式,再利用INCLUDE偽指令讀入MPASM中提供的定義文件如《P16F84?INC》,然后對片內常用資源進行定義,再給出一般程序的基本結構框架?,F舉例如下。
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 …;中斷服務程序區(qū)
SVBRTH…;子程序區(qū)
END;程序結束符
當然,在編寫程序時可根據實際情況加以調整。下面是一份實際程序清單,要求將數據88H寫入PIC16F84內部EEPROM的20H單元,而后再從20H單元將其讀出。
LIST P=16F84,F=INHX8M
;……………………………
STATUS EQU03;定義寄存器
EEDATA EQU08
EEADR EQU09
INTCON EQU0BH
EECON1 EQU88H
EECON2 EQU89H
;…………………………
RDEQU0;定義位
WREQU1
RP0EQU5
GIEEQU7
;…………………………
ORG0
GOTO WRSTART
;……………………………
ORG10H
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