久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 單片機keil 常見問題

單片機keil 常見問題

關鍵字:keil 單片機 作者:admin 來源:不詳 發布時間:2018-05-19  瀏覽:25

一、混合編程

1、模塊內接口:

使用如下標志符:

#pragma asm

匯編語句

#pragma endasm

注意:如果在c51程序中使用了匯編語言,注意在keil編譯器中需要激活Properties中的“Generate Assembler SRC File” 和“Assembler SRC File ”兩個選項

來個實例吧:

#i nclude

void main(void)

{

P2=1;

#pragma asm

MOV R7,#10

DEL:MOV R6,#20

DJNZ R6,$

DJNZ R7,DEL

#pragma endasm

P2=0;

}

另:

1、把"xx.c"加入工程中,右擊"xx.c"選擇“options for file"xx.c" 選擇“Generate Assembler SRC File”和“Assemble SRC File”打上黑勾有效;

2、根據選擇的編譯模式,把相應的庫文件象加"xx.c"一樣加入工程中并放在"xx.c"下面,如smail模式下選"keilc51libc51s.lib"加入工程中,如果要進行浮點運算把"keilc51libc51fpl.lib"也加入工程中。

在 Keil 安裝目錄下的 C51LIB 目錄的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

3、在"xx.c"頭文件中加入優化:比如#pragma OT(4,speed)

4、在"xx.c"中加入匯編代碼

#pragma ASM

;Assembler Code Here

#pragma ENDASM

5、編譯生成xx.hex

注意:

沒有做第一步會有如下警告:'asm/endasm' requires src-control to be active

沒有做第二步會有如下警告:UNRESOLVED EXTERNAL SYMBOL;

REFERENCE MADE TO UNRESOLVED EXTERNAL等

沒有做第三步會有如下警告:UNDEFINED SYMBOL (PASS-2)

二、中斷使用

interrupt xx using y

跟在interrupt 后面的xx 值得是中斷號,就是說這個函數對應第幾個中斷端口,一般在51中

0 外部中斷0

1 定時器0

2 外部中斷1

3 定時器1

4 串行中斷

其它的根據相應的單片機有自己的含義,實際上c在編譯的時候就是把你這個函數的入口地址放到這個對應中斷的跳轉地址 。 using y 這個y時說這個中斷函數使用的那個寄存器組就是51里面一般有4個 r0 -- r7寄存器,如果你的終端函數和別的程序用的不是同一個寄存器組則進入中斷的時候就不會將寄存器組壓入堆棧返回時也不會彈出來節省代碼和時間。

三、關于reentrant的使用方法

云清燕 發表于 2006-11-15 21:27:00

我在程序中出現了如下警告:

*** WARNING L15: MULTIPLE CALL TO SEGMENT

SEGMENT: ?PR?_CRCDATA?PANEL_DISP

CALLER1: ?C_C51STARTUP

CALLER2: ?PR?UART_RECV?PANEL_DISP

*** WARNING L15: MULTIPLE CALL TO SEGMENT

SEGMENT: ?PR?ANALOGALLBECKON?PANEL_DISP

CALLER1: ?C_C51STARTUP

CALLER2: ?PR?UART_RECV?PANEL_DISP

*** WARNING L15: MULTIPLE CALL TO SEGMENT

SEGMENT: ?PR?SWITCHALLBECKON?PANEL_DISP

CALLER1: ?C_C51STARTUP

CALLER2: ?PR?UART_RECV?PANEL_DISP

我的程序編譯出來就這3個警告,但是程序可以正常下載運行。但是我覺得有這些警告會使程序存在bug。從字面上看是它的意思是我程序中接受函數UART_RECV()多調用了analogAllBeckon()、switchAllBeckon()。

因為51的普通函數是不可重入的,變量放在固定的地址,兩個函數同時運行時,就會修改同一個變量,從而導致結果錯誤。于是我在analogAllBeckon()、switchAllBeckon()函數后面加了void analogAllBeckon()reentrant{//All Analog data beckon使程序消除了警告。這種方法是表明函數是可被多哥任務調用而不修改函數里邊的變量值,以此來實現函數的重入性。

關于reentrant的使用keil的官方論壇上有詳細的討論.

Andy Neil(官方工程師)建議

"Are you sure that you really need to make everything reentrant?...A reading of the Keil app notes & knowledgebase articles on this subject showed that it was not necessary. "

由于每一次調用被reentrant聲明的函數都要把函數的參數和內部變量壓棧,所以很容易使堆棧區溢出,S52只有256Bytes的data段,一個簡單的函數如果有一個參數三個內部變量,則需要壓棧4字節以上,這還不包括函數調用堆棧.reentrant其實并不是適合低端的單片機,keil論壇上有人說對于那些有KB以上RAM的單片機reentrant才適合.

四、變量聲明有關

在51系列中data,idata,xdata,pdata的區別 data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。 idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指針式的訪問效果很好) xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。 pdata:外部擴展RAM的低256個字節,地址出現在A0-A7的上時讀寫,用movx ACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG, 建議少用。但也有他的優點,具體用法屬于中級問題,這里不提。

startup.a51的作用和匯編一樣,在C中定義的那些變量和數組的初始化就在startup.a51中進行,如果你在定義全局變量時帶有數值,如unsigned char data xxx="100";,那startup.a51中就會有相關的賦值。如果沒有=100,startup.a51就會把他清0。(startup.a51==變量的初始化)。這些初始化完畢后,還會設置SP指針。對非變量區域,如堆棧區,將不會有賦值或清零動作。有人喜歡改startup.a51,為了滿足自己一些想當然的愛好,這是不必要的,有可能錯誤的。比如掉電保護的時候想保存一些變量, 但改startup.a51來實現是很笨的方法,實際只要利用非變量區域的特性,定義一個指針變量指向堆棧低部:0xff處就可實現。, 為什么還要去改? 可以這么說:任何時候都可以不需要改startup.a51,如果你明白它的特性。

五、類型有關

用bit能夠定義一個變量,用sbit卻不行,sbit能夠定義端口。

擴展閱讀:如何學習51單片機/心得/KEIL4/DXP

編輯:admin  最后修改時間:2018-05-19

聯系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
美女扒开大腿让男人桶| 欧美三级午夜理伦三级富婆| 亚洲色欲综合一区二区三区| 岛国av免费在线| 欧美成人高潮一二区在线看| 黄网站色视频免费观看 | 日韩视频一二三| 欧美 日韩 国产精品| 一二三四中文字幕| 97在线国产视频| 国产成人无码精品久久久性色| 欧美日韩在线一| 五月天婷婷激情视频| 欧美午夜aaaaaa免费视频| 激情五月俺来也| 亚洲AV无码成人精品一区| 精品少妇在线视频| 污污的视频免费观看| 欧美aaa在线观看| 中文字幕第17页| 天天av天天操| 日本中文字幕一级片| 国产精品97在线| 国产福利精品一区二区三区| 青青在线免费视频| 成年网站在线免费观看| 亚洲第一天堂久久| 国产97在线 | 亚洲| 天天干天天草天天| 日韩xxxx视频| 亚洲精品在线网址| 日韩 欧美 高清| 性欧美18一19内谢| caopor在线视频| 日韩中文在线字幕| 久久免费视频3| 香蕉视频免费版| 亚洲娇小娇小娇小| 国产二级片在线观看| 免费成人黄色大片| 国产最新免费视频| 日韩在线观看a| 在线黄色免费看| 男人天堂网视频| 热久久最新地址| 日韩精品视频网址| 国产一级片自拍| 亚洲乱码国产一区三区| 激情五月宗合网| 日韩成人手机在线| 性生活免费观看视频| 亚洲天堂2018av| 五月天激情视频在线观看| 色欲色香天天天综合网www| 天天成人综合网| 色噜噜狠狠一区二区三区狼国成人 | www..com日韩| 999香蕉视频| 永久免费网站视频在线观看| 日本 片 成人 在线| 91激情视频在线| 色戒在线免费观看| 污污网站免费观看| 九色porny自拍| 在线免费观看av的网站| 国产高潮免费视频| 男人午夜视频在线观看| 五月天视频在线观看| 婷婷激情四射五月天| 欧美美女一级片| 天天色综合天天色| 亚洲网中文字幕| 国产又爽又黄ai换脸| 大片在线观看网站免费收看| 久久久久久久香蕉| 极品美女扒开粉嫩小泬| 国产精品亚洲二区在线观看| 久久久999视频| 欧美日韩成人免费视频| 日韩国产一级片| 爱福利视频一区二区| 天天干天天综合| 手机av在线网站| 国产精彩视频一区二区| 黄色片久久久久| 国产精品av免费| 大伊香蕉精品视频在线| 久久久国产欧美| 国产91在线亚洲| 九九视频精品在线观看| 伊人成人免费视频| 97在线播放视频| avove在线观看| 国产精品久久久久9999小说| jizzzz日本| 免费一级特黄特色毛片久久看| 无码人妻丰满熟妇区毛片18| 国内外成人免费在线视频| 久久6免费视频| 激情五月亚洲色图| 蜜桃网站在线观看| jizz18女人| 日韩人妻无码精品久久久不卡| 日韩精品视频在线观看视频| 成人免费观看视频在线观看| 邪恶网站在线观看| 天天做天天躁天天躁| 黄色aaa级片| 波多野结衣综合网| 超碰中文字幕在线观看| 激情综合网俺也去| 欧美二区在线视频| 日韩久久久久久久久久久久| 亚洲综合欧美在线| 日韩av资源在线| 成年人午夜免费视频| 天天干天天色天天爽| 无尽裸体动漫2d在线观看| 国产成人久久婷婷精品流白浆| www.av91| 免费网站在线观看视频| 狠狠干视频网站| 天堂av在线中文| 四虎免费在线观看视频| 国产色一区二区三区| 国产免费999| 国产精品视频一区二区三区四区五区| 亚洲综合在线网站| 国产精品秘入口18禁麻豆免会员| 国产又粗又大又爽的视频| 成人不卡免费视频| 亚洲av毛片在线观看| 91香蕉视频网址| 最新中文字幕久久| 人妻互换免费中文字幕| 久久久久久av无码免费网站下载| 亚洲涩涩在线观看| 777久久精品一区二区三区无码| 人人爽人人爽av| 黑人巨大国产9丨视频| 欧美大黑帍在线播放| 久久久久亚洲av无码专区喷水| 亚洲国产午夜精品| 99热这里只有精品免费| 免费观看美女裸体网站| 国产成人亚洲精品无码h在线| 成年人在线观看视频免费| 欧美日韩一区二区三区69堂| 999热精品视频| 蜜桃网站在线观看| 亚洲午夜精品一区| 97在线免费视频观看| 青青在线免费观看| 国产91对白刺激露脸在线观看| 日批视频在线免费看| 天天爽天天爽夜夜爽| 国产又黄又猛的视频| 国产在线无码精品| 男人天堂999| 亚洲国产欧美91| 久色视频在线播放| 狠狠干狠狠操视频| 黄色一级片在线看| 污版视频在线观看| 99国产精品白浆在线观看免费| 激情五月开心婷婷| 亚洲最新免费视频| 欧美 日韩 国产 激情| 狠狠干视频网站| 污网站免费在线| 今天免费高清在线观看国语| 青青草原av在线播放| av 日韩 人妻 黑人 综合 无码| 99热在线这里只有精品| 午夜啪啪福利视频| 亚洲视频在线a| 成 年 人 黄 色 大 片大 全| 天天综合网久久| 欧美日韩亚洲第一| 你真棒插曲来救救我在线观看| 亚洲黄色片免费看| 中文字幕永久视频| 成人午夜视频免费在线观看| 毛片av在线播放| av在线网站免费观看| 日本高清久久久| 一区二区在线播放视频| 免费黄色日本网站| 免费在线观看视频a| 成人在线免费观看视频网站| 超碰免费在线公开| 手机福利在线视频| 午夜视频在线网站| 天天干天天操天天玩| 久久精品午夜福利| 欧美一级裸体视频| 中文字幕第88页| 亚洲视频第二页| 在线观看视频在线观看| 自拍一级黄色片|