西門子CPU模塊6ES7321-1BL00-4AA2原裝現(xiàn)貨
4 對芯片重復(fù)編程
對無硬件仿真器的用戶,總是選用帶EPROM的芯片來調(diào)試程序。每更改一次程序,都是將原來的內(nèi)容先擦除,再編程,其過程浪費了相當(dāng)多的時間,又縮短了芯片的使用壽命。如果后一次編程的結(jié)果較前一次,僅是對應(yīng)的機器碼字節(jié)的相同位由“1"變成“0",就可在前一次編程芯片上再次寫入數(shù)據(jù),而不必擦除原片內(nèi)容。
在程序的調(diào)試過程中,經(jīng)常遇到常數(shù)的調(diào)整,如常數(shù)的改變能保證對應(yīng)位由“1"變“0",都可在原片內(nèi)容的基礎(chǔ)繼續(xù)編程。另外,由于指令“NOP"對應(yīng)的機器碼為“00",調(diào)試過程中指令的刪除,先用“NOP"指令替代,編譯后也可在原片內(nèi)容上繼續(xù)編程。
另外,在對帶EPROM的芯片編程時,特別注意程序保密狀態(tài)位。廠家對新一代帶EPROM芯片的保密狀態(tài)位已由原來的EPROM可擦型改為了熔絲型,一旦程序代碼保密熔絲編程為“0",可重復(fù)編程的 EPROM 芯片就無法再次編程了。使用時應(yīng)注意這點,以免造成不必要的浪費(Microchip 資料并未對此做出說明)。
編寫PIC單片機的源程序,除了源程序的開始處要求嚴格的列表指令外,還需注意源程序中字母符號大小寫的有關(guān)規(guī)則,否則在PC機上匯編源程序時不會成功。筆者用下列的PIC16F84單片機對B口送數(shù)的源程序(源程序各自定義)為實例,說明其注意的問題。
LIST P=PIC16F84
?。NCLUDE P16F84INC
ORG 0
START CLRW ;起始地址
BSF STATUS,5 ;選體1
MOVWF TRISB ;置B口為輸出 BCF STATUS,5;STATUS,5復(fù)位
MOVW 0xAA ;可使B口的
LED間亮
MOVWF PORTB ;B口輸出10
101010
LOOP GOTO LOOP
END
上述源程序中因用了偽指令I(lǐng)NCLUDE,在這里是指把列表的PIC16F84文件(在MPLAB中)讀入源程序作為上述源程序的一部分,所以凡是MPLAB中有關(guān)PIC16F84已有的寄存器在上述源程序中無需再用賦值指令(EQU)賦值,這就使所建立的源程序大為簡化。
此外,由于有了偽指令I(lǐng)NCLUDE,所以根據(jù)MPLAB軟件中的格式,在源程序中的操作數(shù)凡是涉及MPLAB已規(guī)定的寄存器名稱,其字母一律只能大寫,不能小寫,其余操作碼、標(biāo)號字母可任意大小寫,但0x中的x應(yīng)小寫,否則匯編不會成功。鑒于上述原因,為了書寫方便,所以在使用MPLAB軟件時,PIC單片機的源程序均用大寫字母為宜(0x例外)。