1、用keil 寫(xiě)C程序時(shí),可以調(diào)用匯編程序的,但匯編程序要嵌在C程序中的,就像正常的C程序一樣,聲明一個(gè)全局變量,這個(gè)全局變量,C程序和匯編程序都可以使用了,或者就用這個(gè)變量傳遞參數(shù)了。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括惠城網(wǎng)站建設(shè)、惠城網(wǎng)站制作、惠城網(wǎng)頁(yè)制作以及惠城網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,惠城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到惠城省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
2、子程序 ,當(dāng)參數(shù)不超過(guò)4個(gè)時(shí),可以使用寄存器R0~R3來(lái)進(jìn)行 參數(shù)傳遞 ,當(dāng)參數(shù)超過(guò)4個(gè)時(shí),還可以使用數(shù)據(jù)棧來(lái)傳遞參數(shù).在參數(shù)傳遞時(shí),將所有參數(shù)看做是存放在連續(xù)的 內(nèi)存單元 中的字?jǐn)?shù)據(jù)。
3、)寄存器傳遞法:適用于參數(shù)少時(shí)。2)變量傳遞法:適用于同一源文件(程序模塊)中。3)堆棧傳遞法:只適用于傳遞入口參數(shù)。
4、匯編程序的設(shè)計(jì)要遵守ATPCS,保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序中使用IMPORT偽操作聲明將要調(diào)用的C程序。下面是一個(gè)匯編程序調(diào)用C程序的例子。其中在匯編程序中設(shè)置好各參數(shù)的值。
在單片機(jī)的C語(yǔ)言編程中,可以使用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)延時(shí)操作。具體而言,可以使用一個(gè)for循環(huán)來(lái)實(shí)現(xiàn)一段時(shí)間的延時(shí)。
delay函數(shù)是一般自己定義的一個(gè)延時(shí)函數(shù)。c語(yǔ)言定義延時(shí)函數(shù)主要通過(guò)無(wú)意義指令的執(zhí)行來(lái)達(dá)到延時(shí)的目的。下面給出一個(gè)經(jīng)典的延時(shí)函數(shù)。
比如12M晶振for(j=0;j120;j++);大概延時(shí)1毫秒,10592M晶振那么for(j=0;j110;j++);延時(shí)1毫秒,你這里的for(j=0;j100;j++);延時(shí)1毫秒的話,晶振應(yīng)該是10M,不太常見(jiàn)喲,特別是在單片機(jī)方面。
C程序中可使用不同類型的變量來(lái)進(jìn)行延時(shí)設(shè)計(jì)。經(jīng)實(shí)驗(yàn)測(cè)試,使用unsigned char類型具有比unsigned int更優(yōu)化的代碼,在使用時(shí)應(yīng)該使用unsigned char作為延時(shí)變量。
1、c51 匯編調(diào)用c函數(shù):一般都是C調(diào)用匯編的,倒是反過(guò)來(lái)了,在C函數(shù)中,如果要嚴(yán)格時(shí)序或者精確操作的要求,某一段會(huì)用匯編來(lái)寫(xiě),不管是C調(diào)用匯編,還是匯編調(diào)用C。
2、應(yīng)該不能直接調(diào)用的??梢詫?xiě)出替代函數(shù),就以輸出為例。將光標(biāo)定位在下一個(gè)位置,向顯存輸入字符。用足夠大的連續(xù)的空間存放字符串。這樣做成可以隨時(shí)調(diào)用的子函數(shù)就好了。還可以鍛煉自己?;蛘呤欠磪R編一下VC的PRINTF 函數(shù)。
3、如果匯編程序是可執(zhí)行文件,比如exe文件,則可以使用system函數(shù)直接調(diào)用。比如下面的代碼,用system()打開(kāi)windows上的記事本程序。