欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 我的C語言嵌套匯編哪有問題? [打印本頁]

作者: madnick16    時間: 2018-11-27 19:11
標題: 我的C語言嵌套匯編哪有問題?
#include "reg52.h"
#include<intrins.h>        
sbit beep=P1^5;
void del(void)
{
#pragma asm
del3:mov r5,#100
del2:mov r6,#100
del1:mov r7,#25
del0:nop
            nop
                        djnz r7,del0
                        djnz r6,del1
                        djnz r5,del2
#pragma endasm
}
void main()
{
while(1)
{
  beep=~beep;
         del(void);
}
}


作者: angmall    時間: 2018-11-27 19:42
使用C51進行單片機編程是事半功倍的事,但是很多算法上以及編譯上的問題,往往使用ASM代碼更為方便又高效。但不知什么原因,Keil在實現C51夾雜ASM代碼比SDCC麻煩很多,方法如下:
預處理指令 #pragma asm 開始ASM代碼
預處理指令 #pragma endasm 結束ASM代碼

如果就這樣直接編譯的話,會出現以下錯誤:
error C272: 'asm/endasm' requires src-control to be active
解決方法:在 Files Toolbar 中選中當前C51文件,點右鍵查看文件選項,將 Generate Assembler SRC File 與 Assemble SRC File 的勾選由灰色變為黑色,即使這兩項有效!
這時進行編譯沒有問題,但是Link時產生了兩個警告:
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
解決方法是需要在 Source Group 中添加一個 LIB 文件,根據專案的內容不同有所區別:
C51S.LIB - 沒有浮點運算的 Small model
C51C.LIB - 沒有浮點運算的 Compact model
C51L.LIB - 沒有浮點運算的 Large model
C51FPS.LIB - 帶浮點運算的 Small model
C51FPC.LIB - 帶浮點運算的 Compact model
C51FPL.LIB - 帶浮點運算的 Large model
LIB 方件在 Keil 安裝目錄下的 /C51/LIB/ 目錄中。



作者: madnick16    時間: 2018-11-27 19:44
我嵌套其他匯編完全沒問題,就是精準延時的特別難弄
作者: caiseshamo    時間: 2018-11-27 20:20
    選中 Project  窗口中的C  文件,比如CX1.C,并右鍵,選擇“Options  for  ...”,點擊右邊的“Generate Assembler SRC File”和“Assemble SRC File”,使復選框的打鉤由灰色變成黑色狀態(雙擊即可);
build的時候需要在SOURCE GROUP 1中插入相關的LIB庫文件

最后一行
del();

作者: qaz.123    時間: 2018-11-27 20:32
程序還行,nice
作者: Y_G_G    時間: 2018-11-28 08:16
不過是延時,你還不如看編譯之后匯編代碼來改,只要C可以正確編譯,都是可以看到對應函數的匯編代碼,然后可以根據匯編代碼來修改延時時長




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1