單片機的一些開(kāi)發(fā)技巧(一)
很多朋友正在學(xué)習單片機開(kāi)發(fā)技術(shù),但開(kāi)發(fā)中免不了要碰到這樣、那樣的問(wèn)題,有些問(wèn)題可能無(wú)礙大局,但有一些問(wèn)題卻直接影響到產(chǎn)品的成本、體積、性能。這里介紹筆者的幾個(gè)技巧,希望對大家的工作有幫助。
一.C語(yǔ)言中嵌入匯編語(yǔ)言
單片機開(kāi)發(fā)中,通常我們使用C語(yǔ)言編寫(xiě)主程序,這樣可以充分借助C語(yǔ)言工具提供的運算庫函數及強大的數據處理能力。但C語(yǔ)言的可控性不及匯編語(yǔ)言,在有些對時(shí)序要求嚴格的處理上,我們還需用靈活性更強的匯編語(yǔ)言來(lái)編寫(xiě)。上海AVR單片機培訓這樣就產(chǎn)生了C語(yǔ)言和匯編語(yǔ)言混合編程的問(wèn)題,一般分成三種方式:1.匯編語(yǔ)言調用C語(yǔ)言函數;2. C語(yǔ)言調用匯編語(yǔ)言;3. C語(yǔ)言中嵌入匯編語(yǔ)言。這里我們主要介紹第3種,即C語(yǔ)言中嵌入匯編語(yǔ)言。
下面的一段程序是主程序調用精確的205μS延時(shí)子程序并使P1.0交替輸出高、低電平的方波。
/*------------程序名test.c------------*/
#include P 晶振頻率12.000MHz《》
/****************/
void delay(void)//延時(shí)205μS
{
#pragma asm
MOV R0,#100
LOOP:
DJNZ R0,LOOP
#pragma endasm
}
/***************/
void main (void)//主函數,其功能使P1.0交替輸出高、低電平的方波
{
while(1)
{P1_0=!P1_0;
delay();}

評論