第3章80C51單片機(jī)C語言程序設(shè)計_第1頁
第3章80C51單片機(jī)C語言程序設(shè)計_第2頁
第3章80C51單片機(jī)C語言程序設(shè)計_第3頁
第3章80C51單片機(jī)C語言程序設(shè)計_第4頁
第3章80C51單片機(jī)C語言程序設(shè)計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2022-6-111第第3 3章章 80C5180C51單片機(jī)單片機(jī)C C語言程序設(shè)計語言程序設(shè)計C51對標(biāo)準(zhǔn)對標(biāo)準(zhǔn)C的擴(kuò)展的擴(kuò)展3.1C51的的指針指針3.2C51的函數(shù)的函數(shù)3.3C51與匯編程序的接口與匯編程序的接口3.42022-6-1123.1 C51對標(biāo)準(zhǔn)對標(biāo)準(zhǔn)C的擴(kuò)展的擴(kuò)展 3.1.1 C513.1.1 C51的數(shù)據(jù)類型的數(shù)據(jù)類型 數(shù)據(jù)數(shù)據(jù)是計算機(jī)操作的對象,包含是計算機(jī)操作的對象,包含常量常量和和變量變量。 C51C51擴(kuò)展了擴(kuò)展了ANSI CANSI C,以適應(yīng)單片機(jī)的結(jié)構(gòu)和特點。,以適應(yīng)單片機(jī)的結(jié)構(gòu)和特點。 n 數(shù)據(jù)類型數(shù)據(jù)類型就是就是數(shù)據(jù)的格式數(shù)據(jù)的格式,它決定數(shù)據(jù)的,它

2、決定數(shù)據(jù)的值域值域范圍范圍、占用存儲單元的個數(shù)占用存儲單元的個數(shù)及能及能參與哪種運算參與哪種運算。 n 編寫編寫C51C51程序,先要確定數(shù)據(jù)類型、儲存分區(qū)程序,先要確定數(shù)據(jù)類型、儲存分區(qū)n 應(yīng)盡可能采用無符號格式(應(yīng)盡可能采用無符號格式(unsignedunsigned) n C51C51中,多字節(jié)數(shù)據(jù)采用中,多字節(jié)數(shù)據(jù)采用“大端對齊大端對齊”格式格式數(shù)據(jù)數(shù)據(jù)起始起始字節(jié)置于字節(jié)置于高地址端高地址端2022-6-113數(shù)據(jù)類型數(shù)據(jù)類型長度長度(位位)取值范圍取值范圍字符型字符型signed char8-128127unsigned char80255整整 型型signed int16-327

3、6832767unsigned int16065535長整型長整型signed long32-2147488364821474883647unsigned long3204294967295浮點型浮點型float321.75494E-383.402823E+38位位 型型bit10,1sbit10,1訪問訪問SFRsfr80255sfr1616065535C51C51數(shù)據(jù)類型表數(shù)據(jù)類型表2022-6-114n bitbit定義定義位變量名字,編譯器在位尋址區(qū)位變量名字,編譯器在位尋址區(qū)自自動分配動分配該位變量;該位變量;n SbitSbit聲明聲明位變量的名字和地址,地址是確位變量的名字和地址

4、,地址是確定的(定的(SFRSFR區(qū)確定位、位尋址區(qū)變量的某確定區(qū)確定位、位尋址區(qū)變量的某確定位位)。幾點說明:幾點說明:unsignedunsigned char bdata ibase;char bdata ibase;sbit mybitf = ibase0;sbit mybitf = ibase0;sbit CY = 0 xD7;sbit CY = 0 xD7;bit flag1 = 0;bit flag1 = 0;含義:含義:賦值賦值含義:含義:聲明聲明2022-6-1153.1.2 C513.1.2 C51數(shù)據(jù)的存儲分區(qū)數(shù)據(jù)的存儲分區(qū)存儲器類型存儲器類型長度(位)長度(位)對應(yīng)單片

5、機(jī)存儲器對應(yīng)單片機(jī)存儲器bdata1片內(nèi)片內(nèi)RAM位尋址區(qū),共位尋址區(qū),共128位。(亦能字節(jié)訪問)位。(亦能字節(jié)訪問)data8直接尋址,共直接尋址,共128字節(jié)。字節(jié)。idata8間接尋址,共間接尋址,共256字節(jié)。字節(jié)。pdata8片外片外 RAM分頁間址,共分頁間址,共256字節(jié)。(字節(jié)。(MOVX Ri)xdata16間接尋址,共間接尋址,共64k字節(jié)。(字節(jié)。(MOVX DPTR)code16ROM間接尋址,共間接尋址,共64k字節(jié)。(字節(jié)。(MOVC A,A+DPTR)n經(jīng)常使用的變量應(yīng)該置于片內(nèi)經(jīng)常使用的變量應(yīng)該置于片內(nèi)RAMRAM中,要用中,要用bdatabdata、data

6、data、idataidata來定義來定義n不常使用的變量或規(guī)模較大的變量應(yīng)該置于片外不常使用的變量或規(guī)模較大的變量應(yīng)該置于片外RAMRAM中,中,要用要用pdatapdata、xdataxdata來定義來定義bit bdata flagsbit bdata flags; /位變量位變量flagsflags定位在片內(nèi)位尋址區(qū)定位在片內(nèi)位尋址區(qū) char data varchar data var; /字符變量字符變量varvar定位在片內(nèi)定位在片內(nèi)RAMRAM區(qū)區(qū) float idata x,yfloat idata x,y; / /實型變量實型變量x x,y y定位在片內(nèi)間址定位在片內(nèi)間址R

7、AMRAM區(qū)區(qū) unsigned char pdata zunsigned char pdata z; /無符號字符變量無符號字符變量z z定位在片外分頁間址定位在片外分頁間址RAMRAM區(qū)區(qū) 2022-6-117編譯模式編譯模式默認(rèn)默認(rèn)存儲分區(qū)存儲分區(qū)特特 點點SMALLdata小模式。小模式。 變量默認(rèn)在片內(nèi)變量默認(rèn)在片內(nèi)RAM??臻g小,速度塊??臻g小,速度塊。COMPACTpdata緊湊模式。緊湊模式。變量默認(rèn)在片外變量默認(rèn)在片外RAM的頁(的頁(256字節(jié),頁號字節(jié),頁號由由P2口決定)??跊Q定)。LARGExdata大模式。大模式。 變量默認(rèn)在片外變量默認(rèn)在片外RAM的的64KB范圍

8、。空間大,范圍。空間大,速度慢。速度慢。編譯模式默認(rèn)的變量存儲分區(qū)編譯模式默認(rèn)的變量存儲分區(qū)3.1.3 C513.1.3 C51的編譯模式的編譯模式未對變量存儲分區(qū)定義時,未對變量存儲分區(qū)定義時,C51C51編譯器采用編譯器采用默默認(rèn)認(rèn)存儲分區(qū)。例如:存儲分區(qū)。例如:char varchar var; /SMALL/SMALL模式時,模式時,varvar定位于定位于datadata存儲區(qū)存儲區(qū) /COMPACT/COMPACT模式時,模式時,varvar定位于定位于pdatapdata存儲區(qū)存儲區(qū) /LARGE/LARGE模式時,模式時,varvar定位于定位于xdataxdata存儲區(qū)存儲區(qū)

9、 2022-6-1193.1.4 3.1.4 用用_at_at_定義變量絕對地址定義變量絕對地址 v 用關(guān)鍵字用關(guān)鍵字“_at_at_”定義變量存放的首地址定義變量存放的首地址 idata int y _at_ 0 x30idata int y _at_ 0 x30;/ idata/ idata區(qū)域整型變量區(qū)域整型變量y y的首地址為的首地址為0 x30 0 x30 例如:例如:又如:又如:xdata char string20 _at_ 0 x3000 xdata char string20 _at_ 0 x3000;/xdata/xdata中字符型數(shù)組中字符型數(shù)組stringstring的

10、首地址為的首地址為0 x30000 x3000 注意,注意,C51C51編程時不要輕易使用絕對地址定位變量。編程時不要輕易使用絕對地址定位變量。 2022-6-11103.2 C51的指針的指針n對于一個變量對于一個變量a a,利用,利用& &a a表示變量表示變量a a的地址。則語句的地址。則語句 p p = & = &a a; 表明表明把把a(bǔ) a的地址賦給了指針變量的地址賦給了指針變量p p,則,則“p p指向了指向了變量變量a a”。 n 可以用可以用* *P P表示變量表示變量a a指針變量的定義指針變量的定義 char char * *p; p; / 定義指針變量定義指針變量P P

11、p = 30H ; p = 30H ; / / 指針變量賦值,指針變量賦值,30H30H為片內(nèi)為片內(nèi)RAMRAM地址地址 x = x = * *p; p; / / 30H30H單元的內(nèi)容送給變量單元的內(nèi)容送給變量x x* *P P指針變量指針變量數(shù)據(jù)變量數(shù)據(jù)變量3.2.1 3.2.1 已定義數(shù)據(jù)存儲分區(qū)的指針已定義數(shù)據(jù)存儲分區(qū)的指針定義時就定義時就指定了指定了所所指向數(shù)據(jù)指向數(shù)據(jù)的的存儲分區(qū)。存儲分區(qū)。 n 該指針占該指針占1 1個字節(jié)個字節(jié)(idata idata * *,data data * *,pdata pdata * *)或)或2 2個字節(jié)個字節(jié)(code code * *,xda

12、ta xdata * *) 示例:示例:charchar datadata * *strstr; / / 指針指針strstr指向的指向的charchar型數(shù)據(jù)型數(shù)據(jù)存于存于data data 空間空間intint xdataxdata * *numnum; / / 指針指針numnum指向的指向的intint型數(shù)據(jù)型數(shù)據(jù)存于存于xdataxdata 空間空間 基于存儲器的基于存儲器的指針長度指針長度比通用指針比通用指針短短,可以節(jié)省存儲,可以節(jié)省存儲器空間,器空間,運行速度快運行速度快,但它所指對象具有確定的存儲器,但它所指對象具有確定的存儲器空間,空間,兼容性不好兼容性不好。數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)分

13、區(qū)數(shù)據(jù)分區(qū)2022-6-1112定義時定義時未指定未指定所指向的所指向的數(shù)據(jù)數(shù)據(jù)的的存儲分區(qū)存儲分區(qū) 。也稱。也稱通用指針通用指針。3.2.2 3.2.2 未定義數(shù)據(jù)存儲分區(qū)的指針未定義數(shù)據(jù)存儲分區(qū)的指針-通用指針通用指針 n 通用指針占通用指針占3 3個個字節(jié)字節(jié)第一字節(jié)存放該指針的第一字節(jié)存放該指針的默認(rèn)默認(rèn)存儲器存儲器類型編碼類型編碼(見表見表)第二字節(jié)存放該指針的第二字節(jié)存放該指針的高高位地址偏移量位地址偏移量第三字節(jié)存放該指針的第三字節(jié)存放該指針的低低位地址偏移量位地址偏移量 存儲器類型編碼存儲器類型編碼 存儲器類型存儲器類型bdata/ data / idataxdatapdata

14、code編碼編碼0 x000 x010 xfe0 xff2022-6-1113通用指針定義示例:通用指針定義示例:charchar * *xdata strptrxdata strptr; / / 指針本身存于指針本身存于xdata xdata 空間空間,它指向,它指向charchar型數(shù)據(jù)型數(shù)據(jù)intint * *data numberdata number; / / 指針本身存于指針本身存于data data 空間空間,它指向,它指向intint型數(shù)據(jù)型數(shù)據(jù) 由于指向?qū)ο蟮拇鎯臻g在編譯時無法確定(由于指向?qū)ο蟮拇鎯臻g在編譯時無法確定(運行時確運行時確定定),因此必須生成通用代碼以保證對

15、任意空間的對象進(jìn)),因此必須生成通用代碼以保證對任意空間的對象進(jìn)行存取。所以行存取。所以通用指針通用指針生成的代碼速度較慢生成的代碼速度較慢。指針指針charchar型型數(shù)據(jù)數(shù)據(jù)指針分區(qū)指針分區(qū)2022-6-11143.2.3 3.2.3 利用指針進(jìn)行絕對地址訪問利用指針進(jìn)行絕對地址訪問 unsigned char data unsigned char data * *p p; p=0 x40 p=0 x40 ; * *p=0 x55p=0 x55; /數(shù)據(jù)數(shù)據(jù)0 x550 x55送入內(nèi)部送入內(nèi)部RAMRAM的的0 x400 x40單元單元 例如:例如:v C51C51編譯器提供了一組宏定義實

16、現(xiàn)對編譯器提供了一組宏定義實現(xiàn)對80C5180C51絕對地址的訪問。絕對地址的訪問。這組宏定義原型放在這組宏定義原型放在absacc.habsacc.h文件中,形如:文件中,形如: #define #define DBYTEDBYTE (unsigned char volatile data (unsigned char volatile data * *) 0) 0)從而使從而使DBYTEDBYTE用于以用于以字節(jié)字節(jié)形式對形式對datadata區(qū)訪問,可以寫成:區(qū)訪問,可以寫成: * *(DBYTE)=0 x55H(DBYTE)=0 x55H;或或 DBYTE0=0 x55HDBYTE0=

17、0 x55H; 與此類似:與此類似:C CBYTEBYTE用于以用于以字節(jié)字節(jié)形式對形式對codecode區(qū)區(qū)進(jìn)行訪問;進(jìn)行訪問;P PBYTEBYTE用于以用于以字節(jié)字節(jié)形式對形式對pdatapdata區(qū)區(qū)進(jìn)行訪問;進(jìn)行訪問;X XBYTEBYTE用于以用于以字節(jié)字節(jié)形式對形式對xdataxdata區(qū)區(qū)進(jìn)行訪問。進(jìn)行訪問。C CWORDWORD、D DWORDWORD、P PWORDWORD和和X XWORDWORD用于以用于以字字形式對形式對codecode區(qū)、區(qū)、datadata區(qū)、區(qū)、pdatapdata區(qū)區(qū)和和xdataxdata區(qū)區(qū)進(jìn)行訪問。進(jìn)行訪問。 3.2.4 C513.2.4

18、 C51程序編寫示例程序編寫示例 【例例3-13-1】將將30H30H至至3FH3FH共共1616個個RAMRAM單元初始化為單元初始化為“55H”55H”。#include #include #include #include void main(void)void main(void) unsigned char i;unsigned char i;for (i=0;i=15;i+)for (i=0;i=15;i+) DBYTE0 x30+i=0 x55;DBYTE0 x30+i=0 x55; while(1);while(1); 編譯系統(tǒng)自動連接了編譯系統(tǒng)自動連接了startup.a51

19、startup.a51生成代碼生成代碼n一是將內(nèi)部一是將內(nèi)部RAMRAM的的00H00H7FH7FH清清0 0;n二是設(shè)置堆棧指針二是設(shè)置堆棧指針SPSP。 有全局變量賦值時有全局變量賦值時編譯系統(tǒng)會自動連接編譯系統(tǒng)會自動連接init.a51init.a51生成代碼生成代碼C:0 x0000 020011 LJMP C:0011C:0 x0000 020011 LJMP C:0011C:0 x0003 E4 CLR AC:0 x0003 E4 CLR AC:0 x0004 FF MOV R7,AC:0 x0004 FF MOV R7,AC:0 x0005 7430 MOV A,#0 x30C:

20、0 x0005 7430 MOV A,#0 x30C:0 x0007 2F ADD A,R7C:0 x0007 2F ADD A,R7C:0 x0008 F8 MOV R0,AC:0 x0008 F8 MOV R0,AC:0 x0009 7655 MOV R0,#0 x55C:0 x0009 7655 MOV R0,#0 x55C:0 x000B 0F INC R7C:0 x000B 0F INC R7C:0 x000C BF10F6 CJNE R7,#0 x10,C:0005C:0 x000C BF10F6 CJNE R7,#0 x10,C:0005C:0 x000F 80FE SJMP C

21、:000FC:0 x000F 80FE SJMP C:000FC:C:0 x00110 x0011 787F MOV R0,#0 x7F 787F MOV R0,#0 x7FC:0 x0013 E4 CLR AC:0 x0013 E4 CLR AC:0 x0014 F6 MOV R0,AC:0 x0014 F6 MOV R0,AC:0 x0015 D8FD DJNZ R0,C:0014C:0 x0015 D8FD DJNZ R0,C:0014C:0 x0017 758107 MOV SP,#0 x07C:0 x0017 758107 MOV SP,#0 x07C:0 x001A 020003

22、LJMP C:0003C:0 x001A 020003 LJMP C:0003反匯編如下:反匯編如下:編譯系統(tǒng)自動連接了編譯系統(tǒng)自動連接了startup.a51startup.a51生成代碼生成代碼n一是將內(nèi)部一是將內(nèi)部RAMRAM的的00H00H7FH7FH清清0 0;n二是設(shè)置堆棧指針二是設(shè)置堆棧指針SPSP。 另:另:全局變量賦值時全局變量賦值時編譯系統(tǒng)會自動連接編譯系統(tǒng)會自動連接init.a51init.a51生成代碼生成代碼2022-6-11193.3 C51的函數(shù)的函數(shù) 3.3.1 C513.3.1 C51函數(shù)的定義函數(shù)的定義一般形式一般形式: :返回值類型返回值類型 函數(shù)名函數(shù)名

23、(形式參數(shù)列表)(形式參數(shù)列表) 編譯模式編譯模式reentrantinterrupt nusing nreentrantinterrupt nusing n 函數(shù)體函數(shù)體 n 編譯模式為編譯模式為SMALLSMALL、COPACTCOPACT或或LARGELARGEn reentrantreentrant用于定義可重入函數(shù)用于定義可重入函數(shù)n interrupt n interrupt n 用于定義中斷函數(shù)用于定義中斷函數(shù),n,n為中斷號為中斷號, ,可以為可以為0 03131n using n using n 確定工作寄存器組,取值為確定工作寄存器組,取值為0 03 3 【例例3-23-2

24、】延時延時nMsnMs函數(shù)示例(晶振函數(shù)示例(晶振11.0592MHz11.0592MHz)。)。void DelayMs( unsigned int n ) void DelayMs( unsigned int n ) /延時函數(shù)延時函數(shù) unsigned char j;unsigned char j;while (n- -)while (n- -) for (j = 0; j 113; j+); for (j = 0; j 113; j+); 調(diào)試:調(diào)試:RegistersRegisters窗口中的窗口中的secsec值。值。 3.3.2 C513.3.2 C51函數(shù)定義的選項函數(shù)定義的選

25、項v編譯模式編譯模式 n SMALL SMALL模式:變量默認(rèn)在片內(nèi)模式:變量默認(rèn)在片內(nèi)RAMRAM;n COMPACT COMPACT模式:變量默認(rèn)在片外模式:變量默認(rèn)在片外RAMRAM的頁內(nèi);的頁內(nèi);n LARGE LARGE模式:變量默認(rèn)在片外模式:變量默認(rèn)在片外RAMRAM的的64KB64KB范圍。范圍。vreentrantreentrant定義為重入函數(shù)定義為重入函數(shù) n ANSI C ANSI C中,函數(shù)默認(rèn)都是可重入的中,函數(shù)默認(rèn)都是可重入的n C51C51函數(shù)函數(shù)默認(rèn)默認(rèn)是是不可重入不可重入的,使用可重入函數(shù)會消耗較的,使用可重入函數(shù)會消耗較多的存儲器資源,多的存儲器資源,應(yīng)該

26、盡量少用應(yīng)該盡量少用。 vinterrupt n interrupt n 定義中斷函數(shù)定義中斷函數(shù) 常用的中斷源對應(yīng)的中斷號常用的中斷源對應(yīng)的中斷號vusing nusing n確定中斷服務(wù)函數(shù)所使用的工作寄存器組確定中斷服務(wù)函數(shù)所使用的工作寄存器組 中斷源中斷源外中斷外中斷0定時器定時器0外中斷外中斷1定時器定時器1串行口串行口定時器定時器2中斷號中斷號012345【例例3-33-3】中斷函數(shù)定義示例中斷函數(shù)定義示例#include #include sbit P10 = P10;sbit P10 = P10;void void IntSrv(void)interrupt 0IntSrv(v

27、oid)interrupt 0 if(INT0=0)if(INT0=0)/測開關(guān)狀態(tài)測開關(guān)狀態(tài) P10=!P10;P10=!P10;while(INT0=0);while(INT0=0); 3.3.3 C513.3.3 C51的庫函數(shù)的庫函數(shù)常用的C51庫函數(shù)參見附錄B.2 【例例3-43-4】C51C51庫函數(shù)調(diào)用示例。庫函數(shù)調(diào)用示例。#include “intrins.h” #include “intrins.h” /在在intrins.hintrins.h中有對函數(shù)中有對函數(shù)_nop_( )_nop_( )的定義的定義void Delay(void)void Delay(void) in

28、t i=5000; int i=5000; while(i-)_nop_( ); while(i-)_nop_( ); 【例例3-53-5】C51C51標(biāo)準(zhǔn)輸入輸出函數(shù)調(diào)用示例。標(biāo)準(zhǔn)輸入輸出函數(shù)調(diào)用示例。#include #include #include #include void InitSPort(void)void InitSPort(void) SCON=0 x50; / SCON=0 x50; /串口方式串口方式1 1,允許接收,允許接收 TMOD=0 x20; /T1 TMOD=0 x20; /T1方式方式2 2(自動重裝)(自動重裝) TH1= 0 xFD; / TH1= 0

29、xFD; /波特率波特率96009600 TR1 =1; / TR1 =1; /啟動啟動T1T1 TI =1; / TI =1; /發(fā)送中斷置發(fā)送中斷置1 1 void main(void)void main(void) InitSPort(); InitSPort(); printf(Hello World n);printf(Hello World n); while(1); while(1); 標(biāo)準(zhǔn)標(biāo)準(zhǔn)I/OI/O的重定向!的重定向! 在調(diào)試狀態(tài):在調(diào)試狀態(tài):ViewViewSerial WindowsSerial WindowsUART #1 UART #1 3.4 C51與匯編程序的

30、接口與匯編程序的接口 3.4.1 3.4.1 在在C51C51程序中嵌入?yún)R編指令程序中嵌入?yún)R編指令 【例例3-63-6】利用預(yù)編譯指令。利用預(yù)編譯指令。 #include reg51.h#include reg51.hvoid Init(void);void Init(void);void main()void main() while(1) while(1) Init(); Init(); void Init(void)void Init(void) #pragma asm#pragma asmMOV R7,#16MOV R7,#16MOV R1,#20HMOV R1,#20HMOV A,#

31、55HMOV A,#55H LP:MOV R1,A LP:MOV R1,AINC R1INC R1 DJNZ R7,LP DJNZ R7,LP #pragma endasm#pragma endasmreturn;return; 要進(jìn)行以下設(shè)置:要進(jìn)行以下設(shè)置:2022-6-1127n將嵌有匯編語句的源文件加入工程文件,將將嵌有匯編語句的源文件加入工程文件,將鼠標(biāo)指向該文件,選擇右鍵菜單鼠標(biāo)指向該文件,選擇右鍵菜單 “option option for for insertasm. cinsertasm. c”。n將屬性將屬性propertiesproperties書簽下的書簽下的 “Gene

32、rate Generate Assembler SRC FileAssembler SRC File”與與“Assemble SRC Assemble SRC FileFile”選項置成選項置成“”。n再加入庫文件(如再加入庫文件(如C51S.LIBC51S.LIB),然后編譯。),然后編譯。 3.4.2 3.4.2 在在C51C51程序中調(diào)用匯編子程序程序中調(diào)用匯編子程序 【例例3-73-7】不含參數(shù)傳遞的子程序調(diào)用。不含參數(shù)傳遞的子程序調(diào)用。先構(gòu)造匯編語言源文件:先構(gòu)造匯編語言源文件: d1ms:MOV R6,#249 ;d1ms:MOV R6,#249 ; DL:NOP DL:NOP ;

33、1 ;1s s NOP NOP ;1 ;1s s DJNZ R6,DL ;2 DJNZ R6,DL ;2s,s,循環(huán)內(nèi)約循環(huán)內(nèi)約1ms1ms RET RET ENDEND ?PR?d1ms?EP4_7B?PR?d1ms?EP4_7B SEGMENT SEGMENT CODECODE PUBLIC PUBLIC d1msd1ms RSEG RSEG ?PR?d1ms?EP4_7B?PR?d1ms?EP4_7B注:注:d1msd1ms對應(yīng)對應(yīng)C51C51的的d1msd1ms()()EP4_7BEP4_7B對應(yīng)對應(yīng)ep4_7b.asmep4_7b.asm編寫編寫C51C51語言程序如下,完成匯編子程序調(diào)用:語言程序如下,完成匯編子程序調(diào)用:#include #include sbit P2_0=P20;sbit P2_0=P20;externextern void d1ms(void); void d1ms(void);void main()void main() for(;)for(;) P2_0=0;P2_0=0;d1ms();d1ms(); / /* * 調(diào)用匯編子程序調(diào)用匯編子程序 * */ /P2_0=1;P2_0=1;d1ms();d1ms(); / /* * 調(diào)用匯編子程序調(diào)用匯編子程序 * */ / v 主調(diào)函數(shù)要向

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論