EMC的單片機全部是OTP的,開發(fā)時只能使用仿真器,但很多情況下,仿真器并不能仿真實際的運行環(huán)境,如工作電壓為3.3V左右、測試系統(tǒng)的功耗、測試系統(tǒng)的穩(wěn)定性、測試ADC、DAC、看門狗使用等,如果使用仿真器會根實際情況有很大差別,只有燒片子才能測試到實際結果,這樣一次試驗下來,如果運氣不好,可能需要浪費10~20個芯片,造成很大的浪費。 要有效使用ADD A,@0xFF這條指令,需要對單片機系統(tǒng)編程進行一些分析,從仿真結果(包含硬件仿真器)根實際芯片運行的差異方面分析程序,可以把程序分為兩個相對獨立的系統(tǒng):算法級程序和硬件級程序。 算法級程序:指與硬件無關的程序,如加減乘除算法,控制算法等,總之不涉及硬件單元的操作,這些程序由于其硬件無關性,使用仿真器和芯片結果肯定相同。 硬件級程序:與硬件相關的程序,如WDT、計數(shù)器、端口、中斷、休眠、喚醒等等,特別是WDT、中斷、休眠、喚醒等需要在芯片上才能測試出實際的結果,比如測試休眠狀態(tài)的功耗,用仿真器無論如何是試驗不出來的。 閑話少說,書歸正傳。 有效使用ADD A,@0xFF可以將一個芯片當作數(shù)片使用,甚至可以到數(shù)十片,原理如下: EMC單片機寫燒寫的過程實際就是將為1的熔絲位熔斷成為0,即可以從1寫為0,但不能從0到1,ADD A,@0xFF的機器碼剛好是0x1FFF,全為1。例程如下: 第一次編程代碼如下: ORG 0X000 ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF MAIN1: ... ... JMP MAIN1 如果MAIN1程序運行結果不能達到預期目標,需要修改程序,假定為MAIN2。修改后代碼如下: ORG 0X000 ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF JMP MAIN2 MAIN1: ... ... JMP MAIN1 MAIN2: ... ... JMP MAIN2 |