999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言在單片機開發中的應用

2012-03-15 07:46:04遼寧對外經貿學院
電子世界 2012年14期
關鍵詞:單片機程序

遼寧對外經貿學院 孫 靜

C是一種編譯型語言.有高級語言的特點,并具備匯編語言的功能,移植性能好,便于自頂向下結構化程序設計,C語言在單片機中的應用,給開發者帶來了很大的方便.軟件開發者不需要對單片機硬件的結構有很深人的了解,編譯器可以自動完成變量存儲單元的分配.使得單片機的程序設計更加簡單可靠。指針、地址、數組及其相互關系是C語言中最有特色的部分。在編寫單片機的應用程序時,常常需要對端口及存儲單元進行尋址.因此,掌握指針在這些尋址過程的工作原理是很有必要的,這有利于編寫靈活高效的程序。

一、指針結構聲明

C語言中,對于指針的聲明采用如下形式:類型標識符*指針變量名;由于單片機存儲區的關系,所以單片機C語言的指針聲明格式有別于普通C語言指針的聲明格式,其格式為:

類型標識符[存儲區類型]

指針變量名[指針變量存儲區類型]

單片機C語言的指針的定義比普通C語言指針的定義多兩個部分:存儲區類型是指指針變量所指向的數據的存儲區,可以是所有的數據存儲類型;指針變量存儲區類型是指指針變量的存放區域的數據,可以是data、ldata、xdata或pdata如下聲明:unsigned char xdata *data yc;

上聲明語句是指在RAM(data)內聲明一指針變量yc,該指針變量指向一無符號字符型數據,該無符號型字符存在xdata區內。該指針變量的應用格式如下:

其編譯后的的匯編為:MOV 08H,#00H;0x08和0x09是在片內RAM存儲區分配的yc指針變量的地址空間。

二、指針尋址的實現

單片機C語言的數組的尋址和普通C語言的尋址基本上是一樣的,只是當數組存儲在片內時,由于片內RAM資源十分有限,所以很難有比較復雜的數據結構,而且在編程過程中也盡量避免在片內RAM中使用較大的數組。

1.指向data區的指針尋址的實現

這是最基本的尋址方法,比如一個檢測系統中,通過A/D轉換把外部數據輸入單片機中,單片機對這6次采樣數據求和,具體程序如下:

2.指向程序存儲區的指針尋址實現

指針指向數據存儲區其其實質就是C語言中指向函數的指針這一概念,可以利用這種指針來實現函數指針調用函數。指向函數的指針變量定義格式為:類型標識符(*指針變量名)([參數1],[參數2]……);定義好后用(*指針變量名)([參數],[參數]……)即可調用這個函數。例如,主程序中要引用一個鍵盤掃描函數scan,程序如下所示:

三、C51熱啟動代碼的編制

對于工業控制計算機,往往設有看門狗電路,當看門狗動作使計算機復位,這就是熱啟動。熱啟動時,一般不允許從頭開始,這將導致現有的已測量到或計算到的值復位,導致系統工作異常。因而在程序中必須判斷是熱啟動還是冷啟動,常用的方法是:確定某內存單位為標志位(如0x7f位和0x7e位),啟動時首先讀該內存單元的內容,如果它等于一個特定的值(例如兩個內存單元的都是0xaa),就認為是熱啟動,否則就是冷啟動,程序執行初始化部份,并將0xaa賦與這兩個內存單元。

根據以上的設計思路,編程時,設置一個指針,讓其指向特定的內存單元如0x7f,然后在程序中判斷,程序如下:

然而實際調試中發現,無論是熱啟動還是冷啟動,開機后所有內存單元的值都被復位為0,當然也實現不了熱啟動的要求。這是為什么呢?原來,用C語言編程時,開機時執行的代碼并非是從main()函數的第一句語句開始的,在main()函數的第一句語句執行前要先執行一段“起始代碼”。正是這段代碼執行了清零的工作。C編譯程序提供了這段起始代碼的源程序,名為“startup.a51”,打開這個文件,可以看到如下代碼:

可見,在執行到判斷是否熱啟動的代碼之前,起始代碼已將所有內存單元清零。如何解決這個問題呢?好在啟動代碼是可以更改的,方法是:修改startup.a51源文件,然后用編譯程序所附帶的a51.exe程序對startup.a51編譯,得到startup.obj文件,然后用這段代碼代替原來的起始代碼。具體步驟是(設C源程序名為HOTSTART.C):

修改startup.a51源文件(這個文件在C51LIB目錄下)。

執行如下命令:

A51 startup.a51得到startup.obj文件。將此文件拷入HOTSTART.C所在目錄。

將編好的C源程序用C51.EXE編譯好,得到目標文件HOTSTART.OBJ。

用L51 HOTSTART,STARTUP.OBJ命令連接,得到絕對目標文件HOTSTART。

用OHS51 HOTSTART得到HOTSTART.HEX文件,即可。

對于startup.a51的修改,根據自已的需要進行,如將IDATALEN EQU 80H中的80H改為70H,就可以使6F到7F的16字節內存不被清零。

四、結束語

單片機C語言的應用是十分靈活的,要充分發揮C語言的優勢,對內外部數據和程序進行方便自如的操作,必須要掌握好指針的應用。

[1]馬忠棒.單片機的C語言應用程序設計[M].北京航空航天大學出版社,2001.

[2]曹聰,岳繼光.單片機C語言指針的應用[J].微型電腦應用,2003.

猜你喜歡
單片機程序
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于單片機的平衡控制系統設計
電子制作(2017年19期)2017-02-02 07:08:27
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 午夜毛片福利| 国产精品吹潮在线观看中文| 69精品在线观看| 精品欧美日韩国产日漫一区不卡| 日韩欧美成人高清在线观看| 日韩中文精品亚洲第三区| 无码区日韩专区免费系列 | 精品视频一区在线观看| 麻豆精品久久久久久久99蜜桃| 日本精品一在线观看视频| 久草国产在线观看| 99re在线观看视频| 三上悠亚一区二区| 亚洲男人的天堂网| 欧美一级在线看| 综合人妻久久一区二区精品 | 亚洲欧美另类日本| 天堂网亚洲系列亚洲系列| 毛片免费高清免费| 亚洲最新在线| 无码内射中文字幕岛国片| 亚洲一级毛片免费看| 亚洲中文字幕久久精品无码一区| 国产69精品久久久久妇女| 99久久精品国产麻豆婷婷| 国产精品偷伦视频免费观看国产| 国产精品丝袜视频| 日韩av高清无码一区二区三区| 成人av专区精品无码国产 | 亚洲av成人无码网站在线观看| 亚洲伊人天堂| 中文天堂在线视频| 久久中文无码精品| 午夜毛片免费看| 成人字幕网视频在线观看| 91福利片| 亚洲人成在线精品| 免费大黄网站在线观看| 久久久久亚洲Av片无码观看| 在线亚洲精品自拍| 久久公开视频| 日韩第九页| 欧美yw精品日本国产精品| 蜜臀AVWWW国产天堂| 欧美狠狠干| 亚洲品质国产精品无码| 国产成人综合亚洲欧美在| 精品国产aⅴ一区二区三区| 亚洲成a人片7777| 午夜国产大片免费观看| 欧美综合中文字幕久久| 婷婷综合色| 色婷婷啪啪| 成年人免费国产视频| 欧美午夜理伦三级在线观看| 国精品91人妻无码一区二区三区| 精品一区二区三区四区五区| 成人午夜免费观看| 91系列在线观看| 国产96在线 | 欧美国产日韩在线| 久久久精品国产亚洲AV日韩| 亚洲开心婷婷中文字幕| 草草影院国产第一页| 国产日韩精品欧美一区灰| 成人午夜福利视频| 91国内在线观看| 亚洲一区二区三区国产精品 | 亚洲综合18p| 亚洲欧美日韩中文字幕在线一区| 国产爽爽视频| 熟女日韩精品2区| 亚洲中久无码永久在线观看软件| 91久久性奴调教国产免费| 日韩在线网址| 在线观看国产小视频| 福利一区三区| 国产精品久久久久无码网站| 国产极品嫩模在线观看91| 欧美A级V片在线观看| 欧美亚洲欧美| 自拍中文字幕|