為了快速掌握PIC單片機源程序的基本結構,這里給出一個典型的程序結構框架。建立源程序時首先用偽指令TITLE提供程序的標題,接著給出整個程序的總說明,并用列表偽指令LIST指定所用單片機型號和文件輸出格式,再利用INCLUDE偽指令讀入MPASM中提供的定義文件如《P16F84?INC》,然后對片內常用資源進行定義,再給出一般程序的基本結構框架。現(xiàn)舉例如下。
TITLE“This is……”;程序標題
??;程序說明
LIST P=16F84,F(xiàn)=1NHX8M
;
include
?。璫onfig_RC_Qsc?。WDT_0FF…
??;資源定義和變量定義
STATUS EQU 03
FSREQU 04
PORTAEQU 05
PORTBEQU 06
JEQU 01F
KEQU 01E
;…………………
ORG 0000;
gotoMAIN;跳過中斷矢量
ORG 0004
gotoINTSRV;子程序入口地址
;……………………………………
MAIN ;從0005H開始放主程序
call Initports;端口初始化
call InitTimers;定時器初始化
…
INTSRV… ;中斷服務程序區(qū)
SVBRTH… ;子程序區(qū)
END ??;程序結束符
當然,在編寫程序時可根據實際情況加以調整。下面是一份實際程序清單,要求將數據88H寫入PIC16F84單片機內部EEPROM的20H單元,而后再從20H單元將其讀出。
LIST P=16F84,F(xiàn)=INHX8M
??;……………………………
STATUS EQU 03 ?。欢x寄存器
EEDATAEQU 08
EEADREQU 09
INTCONEQU 0BH
EECON1EQU 88H
EECON2EQU 89H
?。弧?br/> RD EQU 0 ?。欢x位
WR EQU 1
RP0 EQU 5
GIE EQU 7
?。弧?br/> ORG 0
GOTOWRSTART
??;……………………………
ORG 10H
WRSTART ?。粚懭氩僮鏖_始
CLRW ??;清W,使W=0
BCFSTATUS,RP0 ;選BANK0
MOVLW 20H
MOVWF EEADR ;地址→EEADR
MOVLW 88H
MOVWF EEDATA ?。粚懭霐祿?br/> ;EEDATA
BSFSTATUS,RP0 ;選BANK1
BSFEECON1,2;寫操作使能允許
BCFINTCON,GIE ;關閉所有的中斷
MOVLW 0X55
MOVWF EECON2 ?。?5H→EECON2
MOVLW 0XAA
MOVWF EECON2??;AAH→EECON2
BSFEECON1,WR ;啟動寫操作
BSFINTCON,GIE ;恢復開中斷
RDSTART ??;讀出操作開始
BCFSTATUS,RP0
MOVLW 20H
MOVWF EEADR ;地址→EEADR
BSFSTATUS,RP0
BSFEECON1,RD ;啟動讀操作
BCFSTATUS,RP0
MOVFEEDATA,W;將EEPROM
??;數據讀入W
END