C语言编译器用户手册.doc_第1页
C语言编译器用户手册.doc_第2页
C语言编译器用户手册.doc_第3页
C语言编译器用户手册.doc_第4页
C语言编译器用户手册.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EASY LAGUAGE USER MANUALEMC+ 使用手冊EMC+ 是國內自行開發的八位元單晶片高階指令程式特點如下:1.直接使用在組合語言文字檔案下2.可外掛程式檔,具有5層能力3.提供函數sin,cos,.等運算4.有 +,-,*,/ .等很多運算符號5.BIT單名稱變數6.BIT之布林代數之運算7.左右旋之多重參數設定8.加減法可含C旗標之巨集運算9.函數庫之呼叫,並可傳遞或返回引數10.高階指令之使用,具有32層處理能力,位元及位元組均可使用 IF - ELSE - ENDIF FOR - NEXT -CONTINUE - BREAK DO - WHILE - BREAK SWITCH - CASE - DEFAULT - ENDS - BREAK11.自動跳、切頁處理12.EMC-ICE線上直接編輯簡易語言程式目錄43(V1.04)0.作者的話1.KEYPRO安裝2.軟體安裝3.程式編輯4.工作環境設定5.常數(函數SIN.)之使用6.定義與字串之使用7.四則運算、邏輯運算、左右旋、I/O設定8.BIT宣告與使用9.函數宣告與使用10.IF-ELSE-ENDIF指令說明11. FOR-NEXT-CONTINUE-BREAK指令說明12.DO-WHILE-BREAK指令說明13.SWITCH-CASE-DEFAULT-ENDS-BREAK指令說明14._IF,_FOR之使用(EMC,PIC適用)15.切頁設定(跳曜、函數呼叫及返回)16.各系列晶片補充說明17.ELC.LIB之設定與PE2.EXE之使用18.範例程式功能說明19.其它0.作者的話0.1 嗨!您好,首先感謝您購買本軟體,在使用本軟體以前,作者希望您已經會使用以下的軟體,一:文書編輯器、二:單晶片的組譯程式、三:單晶片ICE或相關程式,若以上這些程式都還不會用時,請先不用使用本軟體,因為會找不出錯誤出在那個程式上,當上面軟體都沒有問題時,作者也希望您對您所使用的單晶片先瞭解一下,或者先看看作者所附的示範程式等等,這樣會比較好,因為不同的晶片在本軟體下,使用上會有點差異,當上面都沒有問題時,那就恭喜您啦 _ ,本軟體將會帶給您設計上的便利喔!0.2 另外,本使用說明書前面章節所講述的為共用指令,若為較特殊或各系列晶片應注意事項,在第16章節會補充說明,若還有任何本軟體上的疑問,歡迎使用E-mail寫信給作者,若是想取得晶片最新的消息,請翻至第19章,那兒有提供各廠商的網址.0.3 因本軟體會不斷地更新版本,甚至至windows版本,故作者希望您有E-mail帳號,這樣就能即時獲得最新版本.0.4 本磁片所附之檔案,無附送其組譯程式,請向其IC代理商索取,因牽涉軟體使用權等問題.或經其原公司同意後,才加以附贈之.0.5 本說明書所轉換出來之指令碼,是以EMC晶片指令為藍本,若讀者想取得該使用晶片之指令時,建議讀者邊學習邊操作,這樣對學習的效果較佳,並同時可以瞭解本軟體所轉換出的指令架構.1.KEPPRO之安裝1.1 請將KEYPRO安裝在電腦之印表機埠上,程式會自動搜尋,並顯示其KEYPRO之序號及支援晶片在螢幕上,如無安裝KEYPRO時,軟體無法繼續往下執行.1.2 如KEYPRO安裝後,仍無法執行時,可能電腦正在執行印表作業或與其它KEYPRO相互衝突,此時先將其它KEYPRO拔除,單一安裝KEYPRO再進行測試.1.3 並列埠之設定,可在執行程式ELC.EXE後加上參數/L1(代表LPT1)、/L2(代表LPT2)及/L3(代表LPT3),如果加上參數後,程式就不會進行掃描,可防止與其它並列埠之衝突,但輸入參數時,須先知道目前KEYPRO安裝在那一並列埠上,否則程式將無法執行.1.4 若使用EMC-ICE時,且KEYPRO裝在其ICE與連接線之間時,此時必須將KEYPRO內部電路做調整,先將KEYPRO外殼須拆開來,會找到KEYPRO字樣,其下方之200歐姆電阻換成一50歐姆電阻,若以後又改接印表機時,再接回200歐姆電阻即可,方可使用,出廠時KRYPRO為設定接50歐姆(EMC的KEYPRO),其餘晶片為設定接200歐姆電阻.1.5 在此建議KEYPRO獨立使用,連印表機之排線亦不要連接.2.軟體之安裝2.1 請執行磁片上之程式INSTALL.BAT,安裝程式會在硬碟(C:)中建立一子目錄(C:ELC),並將所有程式安裝完成,簡易語言執行檔為ELC.EXE,欲執行晶片程式轉換時,只要執行ELC.EXE即可,ELC.EXE輸入參數如下:指令ELC.EXE(輸入檔名) (輸出檔名) (/L1.)範例C:ELC DEMO.ELC DEMO.DT /L1 (ENTER)執行的畫面: 3.程式編輯之流程3.1 本軟體程式執行之流程:程式撰寫簡易語言程式轉換進行組譯ICE測式程式完成3.2 程式編輯,與一般寫組合語言是一樣的,並且多加了簡易語言的指令,當在撰寫程式時,可以用原來的組合指令,也可以用簡易語言的指令,相互使用之.範例NOP;原組合指令NOP;A=DATA+2;簡易語言指令 3.3 簡易語言轉換,當程式編輯好了以後,就可執行程式轉換,也就是執行ELC.EXE此程式,此程式可放入批次檔內使用,或者直接執行ELC.EXE程式,再輸入檔名也可以,一些訊息都會顯示在WORK MESSAGE之視窗中,包含程式那裡錯了,都會顯示之,若要離開,只要按ESC即可,當轉換後,會產生標準指令檔案外,另產生程式的錯誤檔(*.ERR),與程式的資訊檔(*.INF)等.範例C:ELC DEMO.ELC DEMO.DT /L1 (ENTER) 經轉換後產生DEMO.DT與DEMO.ERR與DEMO.INF等檔案3.4 組譯,是將組合語言轉換成機械碼的一個程式,當轉換出來的機械碼檔案,就可燒寫在單晶片上,或使用在ICE上.範例C:COMPI DEMO.DT (ENTER)3.5 ICE模擬,是模擬單晶片的一個電子工具,可以看程式是如何執行的,或抓出程式的問題,是很好用的工具,EMC-ICE須搭配本軟體所附的PE2.EXE(後面說明)使用,這樣就可在使用EMC-ICE時,直接線上編輯簡易語言之程式.3.6 INCLUDE之使用,在程式編輯中,可以使用假指令INCLUDE來含入其它的程式檔案,好像本軟體所用的MATH.H,若在程式中有用到乘與除,則須含入MATH.H此檔案.語法#INCLUDE FILE.NAME範例#INCLUDE MATH.H4. 環境設定4.1 在本軟體執行轉換後,會將原簡易語言之指令,轉換成註解,形成與指令之對照表,而註解之功能,有以下參數之設定,在本軟體一開始執行式,內定為產生對照表模式,從第23字元開始.語法#DOC +,-,NUMBER範例#DOC +;產生對照表#DOC 23;從第23字元開使產生對照表範例二A=A+2經轉換後ADD A,2 ;A=A+25. 常數(函數)之使用5.1 本章所講的是對一些常數或函數之運用,好像大家都背過九九乘法表,但12*13就沒有背過了,像這類的運算均可交給此軟體處理,本軟體的運算符號有四則運算加減乘除,邏輯運算或(OR)和(AND)及互斥(XOR),比較式有等於(=),大於().,以下將列出其運算符號,並將從最高優先運算開使排起.運算符號一欄表優先權運算符號說 明1( )為左右括號,裡面之運算,最優先處理2!,+,-!為反相,為補數,+為加一,-為減一 之運算3*,/,%*為乘法,/為除法,%為餘數 之運算4+,-+為加法,-為減法 之運算5為右旋 之運算6,=為比較符號7=,!=為比較符號8&為和(AND)之運算9為互斥(XOR)之運算10|為或(OR)之運算11&為比較符號,進行AND運算12為比較符號,進行XOR運算13|為比較符號,進行OR運算範例(以下所使用A為假設各晶片之暫存器,如PIC為W,EMC為A等等) A=10+2*3 ;得A=16 A=105+12 ;得A=0 A=10*(1|2) ;得A=305.2 常數之種類5.2.0 常數之種類亦指我們平常所看到的數字,但我們所接受的都是十進制,在電腦的世界裡,都是二進制,因二進制不易理解,而產生出來的種類有二進制,八進制,十進制,及十六進制,故在此介紹各位如何輸入各進制的常數方法.進制種類一欄表項次進制種類範例120B100,0B001280123,0113101234,3214160X12A,0XFF5162CH,0ABH,12H5.2.1 二進制,只有0與1,在0與1的最前面加上0B就代表此數字為二進制,如0B111為十進制的7,其值是一樣的.5.2.2 八進制,只有0至7,在數字最前面加上0就代表此數字為八進制,如輸入011,為十進制9,其值是一樣的.5.2.3 十進制,只有0至 十六進制,有0至9及A至F等,在數字前面加上0X或在數字後面加上H都是為十六進制,但0X是為標準十六進制模式,建議您採用0X模式,但有些組譯軟體不接受0X模式,故此,您必須先瞭解組譯軟體所能接受之種類,在本軟體中,若用0X模式時,轉換出來之值,均為十進制,然而有些為晶片之假指令,如ORG等,這些一般都採用XXXXH模式,故此,若是用本軟體之指令其兩種模式都可以使用,而組譯器或是其晶片之指令,須看其原廠之使用手冊.如 0XA0 與 0A0H 均為十進制160,其值是一樣的.範例 A=0B11+0X10;得A=19 A=0X123;得A=23,因A為8BIT暫存器若想得高位元,可寫以下之式子 A=0X123/256;得A=15.2.5 指數之用法,當我們在輸入一個很大的數字時,且此數字後面有許多個零時,可以用指數的方式加以輸入.語法NUMBERE(+,-)NUMBER範例 A=1E2 ;得 A=100 A=12E6/4 ;得 A=3E6 A=1000E-2 ;得 A=105.3數學函數之使用5.3.0 函數是相當重要,在數學函數中,扮演著重要的角色,在此介紹函數的使用方法,然而這些函數最終轉換為常數,也就是說它不是程式,而是在本軟體已經先換算好了,所以輸入之值必為常數,而非變數,而程式函數是自己要開發的,好像本軟體所用的乘與除是要另外寫程式而變成一程式函數等.常數函數一欄表項次語法說 明1SIN(n)求得正弦函數2COS(n)求得餘弦函數3TAN(n)求得正切函數4ABS(n)求得絕對值5SQRT(n)開根號6INT(n)求得整數5.3.1 SIN為數學函數,用來求得正弦函數數值,此SIN為徑度量,其一圓周之範圍為0至2*3.141592,當然這些值可以是倍數或任意值,而SIN所輸出之值為0至1,所以一般都必須乘上一常數,以8BIT來講,都乘以255或乘以100,而其輸出範圍就會變大,當然您也可以乘以更大,只是多占些程式碼而以,但確能提高準確度.語法SIN(NUMBER)範例A=SIN(3.141592/2)*100 ;得A=100,因為90度角A=SIN(3.141592/4)*100 ;得A=70,因為45度角5.3.2 COS為數學函數,用來求得餘弦函數值,用法與SIN一樣.語法COS(NUMBER)5.3.3 TAN為數學函數,用來求得正切函數值,用法與SIN一樣.語法TAN(NUMBER)5.3.4 ABS(NUMBER)為數學函數-絕對值,其輸出都是正數.語法ABS(NUMBER)範例A=ABS(-10);得A為105.3.5 SQRT(NUMBER)為數學函數-開根號.語法SQRT(NUMBER)範例A=SQRT(9);得A為35.3.6 INT為數學函數-整數.語法INT(NUMBER)範例A=INT(10.123);得A為10綜合範例A=10+(SIN(3.141592/4)*1005)*100 ;得A=06. 定義與字串之使用6.1定義,定義之用途是將程式中與TXT1相同之文字改成TXT2之文字,此用於程式之最前面幾行,通常程式用到的常數如果是一樣而且很多時,用定義來表示時,就很好用,不必改一大堆,而且還有可能漏掉而沒有改到,造成程式的BUG.其中TXT1為一文字,不能為一數字,TXT2可以為任易字串,TXT1與TXT2以空白字元作區分.語法#DEFINE TXT1 TXT2範例#DEFINE ABC DATA DATA=2 A=ABC+3;得A=56.2 字串定義,上面我們曾說過常數的種類設定,現在要說明字串或文字的定義,在本軟體裡,我們使用單引號或雙引號來表示,單引號表示法TXT,雙引號表示法“TXT”,內部的TXT文字將被轉成常數,或一堆常數變成程式碼,一般來講單引號所含的TXT通常只有一個文字,而此文字將被轉成ASCII碼,若在單引號內之TXT僅有一個文字,本軟體會轉換成常數(如A,得常數65),若兩個以上時,則被轉成字串常數,無法做常數運算,須注意.而雙引號之文字(TXT)通常都是兩個以上,而轉成一堆ASCII碼,若只有一個文字時,亦被當做字串,與單引號不同之處.在此介紹RETNRUN與字串之用法,在指令RETURN後面可加上一字串或多字串或常數或多常數,而用逗號加以隔開,這樣的用法通常都是用來建資料表,故此若您用這樣來建表,RETURN指令不會支援切頁功能,純資料建表功能,RETURN切頁功能將在後面詳加敘述之.語法RETURN TXT,NUMBER,(TXT,NUMBER).範例RETURN ABC,123,4+3 經轉換後 RETL 65 ;RETURN ABC,123,4+3 RETL 66 ; RETL 67 ; RETL 123 ; RETL 7 ;6.2.1 字串其它設定,如果您學過C語言,就知道字串中的“n”是在做什麼,以功能來講,是換行的功能,以資料來講地話,只是常數10而已,但在鍵盤上找不到其鍵碼,故此,我們知到“n”是擴充碼,方便我們之輸入,而字元就是關鍵字,其後n是其識別碼,不同的識別碼,可轉出不同的相對碼或功能,在本軟體中,也是以字元為關鍵字,而其後的字元為識別字元,以下將列出所有的識別字元(注意大小寫)與其功能,若不在列出之中之字元時,將會被轉換成自己的ASCII碼(如1得49).識別字元一欄表識別字元數值功 能(以電腦而言)a7BEL 嗶一聲b8BS 退一字元(BACK SPACE)f0xcFF 每頁最前頭,即第一行n0xaLF 跳一行r0xdCR 到第一字元,即歸位t9HT 水平TAB移動v0xbVT 垂直TAB移動範例RETURN n,a,1,n+a經轉換後 RETL 10 ;RETURN n,a,1,n+a RETL 7 ; RETL 49 ; RETL 17 ;6.2.2 在字串中,若使用單引用時,其雙引號之字元可以直接使用之,反之若用雙引號時,單引號之字元可以直接使用之,若使用單引號時,且其字串有單引號之字元時,須用字元加以處理,雙引號亦是一樣.範例RETURN RETURN 經轉換後 RETL 34 ;RETURN RETL 39 ; RETL 34 ;RETURN RETL 39 ;7. 四則運算、邏輯運算、左右旋、I/O設定7.1 在本章所講的運算,均會轉成指令碼,而且有一定的輸入語法,這些語法有用到的種類(運算元素)有常數(NUMBER)、變數(RAM)、暫存器(W或A),在常數部分可以事先由許多的常數先進行運算,但最後只須剩下一個常數,不管這常數是否超過255,或者是含有小數等等,均以LOW位元組處理之;而變數可分為BYTE與BIT兩種變數,在此以“BYTE”與“BIT”做為變數符號,變數是為晶片內部的記憶體,在程式前端須先宣告其位置,在組譯時才不會發生錯誤;暫存器也是晶片內部的記憶體,但與變數不同的是在晶片指令裡以有此暫存器之定義,所以不必宣告其位置,如8051為A,PIC為W,EMC為A等等,在此以A為暫存器之符號.在以下之語法中以.代表元素體,而內部為運算元素,每個元素以逗點(,)分開,而以多個.(元素體)形成一種語法,另外介紹另一元素體為(.),其意義是為其中的元素可用或不用.7.2 在BYTE前面若加在&字元,則代表其BYTE的記憶體位置,會變成一常數處理之,但先前須先定意(EQU等),方可使用,否則無效.語法&BYTE範例DATAEQU 10HA=&DATA+2;得A為12H7.3 I/O設定,在EMC晶片中,I/O腳為輸出或輸入,是有一方向暫存器加以控制,而如何設定呢?由下列之兩語法處理之.語法一!BYTE=A,BYTE,NUMBER說明存入方向控制暫存器語法二A,BYTE=!BYTE說明讀取方向控制暫存器7.4 另EMC晶片有一模態設定暫存器,其設定方法如下.語法一!OPTION=A,BYTE,NUMBER說明存入模態設定暫存器語法二A,BYTE,NUMBER=!OPTION說明讀取模態設定暫存器 綜合範例!OPTION=7!P6=0B10101111經轉換後 MOV A,7 ;!OPTION=7 CONTW ; MOV A,175 ; !P6=0B10101111 IOW P6 ;7.5 運算符號表: 項次名稱符 號1運算符號_1+,-,*,/,%,&,|,2運算符號_2=,+=,-=,*=,/=,%=,&=,=,|=,=3運算符號_3,!4比較符號=,=,=,!=,(&,|,BYTE使用),(&,| (BIT使用)7.6 四則運算語法表(注意,以下之運算語法有可能破壞A值,所以不要在A暫存器中存任何重要之變數)項次語 法說 明1A,BYTE=A,BYTE,NUMBER資料搬移2A,BYTE=&BYTE資料位置搬移3A,BYTE運算符號_2()A,BYTE,NUMBER.取補數4+,-A,BYTE或A,BYTE+,-加減一5A,BYTE=+,-A,BYTE先加減一後做搬移6A,BYTE=A,BYTE+,-先搬移後做加減一7A,BYTE+=,-=A,BYTE加減法,先加減後回存8A,BYTE=A,BYTE,NUMBER+,-A,BYTE,NUMBER兩變數做加減後回存9A,BYTE=NUMBER(+C,+_1,+_0)若無參數時,為暫存器本身自旋之,若為+C時則暫存器左右旋並含C旗標,_1與_0為旋入C之值10A,BYTE=A,BYTE,NUMBERNUMBER (+C,+_1,+_0)(同上),最後再做搬移11A,BYTE&=,=,|=A,BYTE,NUMBERAND,XOR,OR運算12A,BYTE=A,BYTE,NUMBER&,|A,BYTE,NUMBERAND,XOR,OR運算13A,BYTE*=,/=,%=A,BYTE,NUMBER乘、除、餘數運算14A,BYTE=A,BYTE,NUMBER*,/,%A,BYTE,NUMBER乘、除、餘數運算語法(1) 資料搬移A,BYTE=A,BYTE,NUMBER指令圖解 範例DATA = 0x10DATA2 = 0x13DATA2=DATA語法(2) 資料位置搬移A,BYTE=&BYTE指令圖解 範例DATA = 0x10DATA2 = 0x13DATA2=&DATA語法(3) 取補數A,BYTE運算符號_2 ()A,BYTE,NUMBER.指令圖解 範例DATA = 0x10DATA2 = 0x11DATA2=DATA語法(4) 加減一+,-A,BYTE或A,BYTE+,-指令圖解 範例DATA = 0x10 DATA+語法(5) 先加減一後做搬移A,BYTE=+,-A,BYTE指令圖解 範例DATA = 0x10DATA2 = 0x11DATA2=+DATA語法(6) 先搬移後做加減一A,BYTE=A,BYTE+,-指令圖解 範例DATA = 0x10DATA2 = 0x11DATA2=DATA+語法(7) 加減法,先加減後回存A,BYTE+=,-=A,BYTE指令圖解 範例DATA = 0x10DATA2 = 0x11DATA2+=DATA語法(8) 兩變數做加減後回存A,BYTE=A,BYTE,NUMBER+,- A,BYTE,NUMBER指令圖解 範例DATA = 0x10DATA2 = 0x11DATA3 = 0X12DATA2=DATA+DATA3語法(9) 暫存器左右旋並可含C旗標,_1與 _0為旋入C之值A,BYTE=NUMBER(+C,+_1,+_0)指令圖解 範例DATA = 0x10 DATA=1 DATA=1+_0 DATA=1+_1語法(10) 同語法(9),最後做搬移A,BYTE=A,BYTE,NUMBER NUMBER(+C,+_1,+_0)指令圖解 範例DATA = 0X10DATA2 = 0X11 DATA2=DATA1 DATA2=DATA1+_0語法(11) AND,XOR,OR運算A,BYTE&=,=,|=A,BYTE,NUMBER指令圖解 範例DATA = 0x10DATA2 = 0x11 DATA2&=DATA DATA2=DATA語法(12) AND,XOR,OR運算A,BYTE=A,BYTE,NUMBER&,| A,BYTE,NUMBER指令圖解 範例DATA = 0x10DATA2 = 0x11DATA3 = 0x12DATA2=DATA|DATA3語法(13) 乘、除、餘數運算A,BYTE*=,/=,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论