四川雅安西門子PLC模塊銷售
4 對(duì)芯片重復(fù)編程
對(duì)無(wú)硬件仿真器的用戶,總是選用帶EPROM的芯片來(lái)調(diào)試程序。每更改一次程序,都是將原來(lái)的內(nèi)容先擦除,再編程,其過(guò)程浪費(fèi)了相當(dāng)多的時(shí)間,又縮短了芯片的使用壽命。如果后一次編程的結(jié)果較前一次,僅是對(duì)應(yīng)的機(jī)器碼字節(jié)的相同位由“1"變成“0",就可在前一次編程芯片上再次寫入數(shù)據(jù),而不必擦除原片內(nèi)容。
在程序的調(diào)試過(guò)程中,經(jīng)常遇到常數(shù)的調(diào)整,如常數(shù)的改變能保證對(duì)應(yīng)位由“1"變“0",都可在原片內(nèi)容的基礎(chǔ)繼續(xù)編程。另外,由于指令“NOP"對(duì)應(yīng)的機(jī)器碼為“00",調(diào)試過(guò)程中指令的刪除,先用“NOP"指令替代,編譯后也可在原片內(nèi)容上繼續(xù)編程。
另外,在對(duì)帶EPROM的芯片編程時(shí),特別注意程序保密狀態(tài)位。廠家對(duì)新一代帶EPROM芯片的保密狀態(tài)位已由原來(lái)的EPROM可擦型改為了熔絲型,一旦程序代碼保密熔絲編程為“0",可重復(fù)編程的 EPROM 芯片就無(wú)法再次編程了。使用時(shí)應(yīng)注意這點(diǎn),以免造成不必要的浪費(fèi)(Microchip 資料并未對(duì)此做出說(shuō)明)。
編寫PIC單片機(jī)的源程序,除了源程序的開始處要求嚴(yán)格的列表指令外,還需注意源程序中字母符號(hào)大小寫的有關(guān)規(guī)則,否則在PC機(jī)上匯編源程序時(shí)不會(huì)成功。筆者用下列的PIC16F84單片機(jī)對(duì)B口送數(shù)的源程序(源程序各自定義)為實(shí)例,說(shuō)明其注意的問(wèn)題。
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已有的寄存器在上述源程序中無(wú)需再用賦值指令(EQU)賦值,這就使所建立的源程序大為簡(jiǎn)化。
此外,由于有了偽指令I(lǐng)NCLUDE,所以根據(jù)MPLAB軟件中的格式,在源程序中的操作數(shù)凡是涉及MPLAB已規(guī)定的寄存器名稱,其字母一律只能大寫,不能小寫,其余操作碼、標(biāo)號(hào)字母可任意大小寫,但0x中的x應(yīng)小寫,否則匯編不會(huì)成功。鑒于上述原因,為了書寫方便,所以在使用MPLAB軟件時(shí),PIC單片機(jī)的源程序均用大寫字母為宜(0x例外)。