單片機15章課件_第1頁
單片機15章課件_第2頁
單片機15章課件_第3頁
單片機15章課件_第4頁
單片機15章課件_第5頁
已閱讀5頁,還剩126頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機的C語言應用程序設(shè)計中#911引言單片機全稱為單片微型計算機(Single-ChipMicrocomputer),在一塊芯片上,集成了CPU,RAM,ROM,定時器/計數(shù)器(C/T)和多種I/O。一塊芯片就是一臺計算機(俗話說麻雀雖小,五臟俱全),它具有體積小、功能強、價格便宜等優(yōu)點,被廣泛應用在產(chǎn)品智能化和工業(yè)自動化上。

單片機存在:計算機鍵盤(8049)、硬盤控制器、陣列卡、網(wǎng)卡(i960)飯卡讀卡器VCD機、洗衣機、電飯煲、微波爐——家用電器商務通、好譯通、文曲星,PDA、手機——手持設(shè)備存儲示波器、溫控儀、電子秤——智能儀器儀表心電監(jiān)護儀(Holter)等醫(yī)療儀器智能玩具、游戲機、電子寵物高級汽車、飛機、火車及黑匣子智能大廈——電表、水表、煤氣POS、ATM、出租車計價器單片機應用特點:1.小巧、靈活、成本低,易于產(chǎn)品化2.面向控制3.抗干擾能力強4.方便實現(xiàn)多機和分布式控制單片機現(xiàn)狀:微機產(chǎn)量80%1.4位機NEC公司μPD75XX系列和NS公司COP400INTEL40402.8位機INTELMCS-51系列(PHILIPS,ATMEL,WINBOND,SILABS,SST,MAXIM,TI,ADI,STC)MOTOROLA68HCMICROCHIPPIC16XXATMELAVRNEC公司μPD78XX3.16位機INTELMCS-96系列

NSHPC16040

NEC783XX

PHILIPSXA系列4.32位機INTEL386EX,StrongARM,xScaleMOTOROLA68K,MX1ARM核芯片單片機的編程規(guī)范化、網(wǎng)絡化發(fā)展實時多任務操作系統(tǒng)(RTOS)Real-TimeOperatingSystemVxWorks,PSOS,QNX,WindowsCE,uC/OS,uClinux,RTLinux

現(xiàn)場總線技術(shù)(FieldBus)LonWorksLocalNetwork CANBusControlAreaNetwork

嵌入式Internet第一章單片機基礎(chǔ)知識1.1

8051單片機的特點

基本組成部件:中央處理器:CPU8位數(shù)據(jù)存儲器:RAM128B程序存儲器:ROM4KB定時器/計數(shù)器:2個16位I/O接口:8位×4(P0~P3)MCS-51INTEL1980年單片機標志:

MCS-48,MCS-51,MCS-96(16位)8位機:8051系列

教學首選8051

掩膜8031

無ROM,EPROM,FLASH8751

EPROM低功耗基本型:

80C51,80C31,87C51

AT89C51AT89C52閃存4KB8KB內(nèi)存128B256B工作頻率24MHz24MHz輸入/輸出線3232定時/計數(shù)器23中斷源58串行口11AT89C2051(20引腳)AT89S511.2

8051的內(nèi)部結(jié)構(gòu)

CY:進位標志。有進位/借位時置1AC:半進位標志。D3->D4進位/借位時置1OV:溢出標志。帶符號數(shù)超出-128~127置1,乘法結(jié)果超過255,除數(shù)為0P:奇偶標志。A中的1的個數(shù)為奇數(shù)F0:用戶設(shè)置標志RS1,RS0:通用寄存器選擇位,在存儲器組織部分介紹二、時鐘電路和基本時序周期

1.

8051時鐘內(nèi)部高增益放大器,引腳XTAL1和XTAL2時鐘產(chǎn)生方式:1)內(nèi)部方式:外接石英晶體(晶振)2)外部方式:外部振蕩信號作8051時鐘

2.基本時序周期

振蕩周期:1/fOSC

時鐘周期:2/fOSC

機器周期:12/fOSC=T

指令周期:1~4T1.2.2存儲器組織存儲器特點

程序存儲器分開,哈佛型

數(shù)據(jù)存儲器合并,普林斯頓型物理上的4個空間:

1)

片內(nèi)程序存儲器

2)

片外程序存儲器 3)

片內(nèi)數(shù)據(jù)存儲器 4)

片外數(shù)據(jù)存儲器

程序存儲器

ROM型(只讀):程序,表格常數(shù)當PC超過4KB,

自動轉(zhuǎn)1000H~FFFFH(片外)

數(shù)據(jù)存儲器

RAM型(讀,寫):數(shù)據(jù)暫存,

運算結(jié)果,

標志位,堆棧片內(nèi):256B,MOV片外:64KB,MOVX

片內(nèi)部分2塊:

00~7FH,128B,RAM區(qū)80H~FFH,128B,SFR區(qū)(特殊功能寄存器)1.通用寄存器區(qū)

4個組:

0區(qū)00H~07H1區(qū)08H~0FH2區(qū)10H~17H3區(qū)18H~1FH

由PSW中的RS1,RS2來決定用哪個工作區(qū)(00,01,10,11)2.可位尋址區(qū)

20~2FH,16字節(jié)

00~7FH,128位

3.用戶RAM

30H~7FH

堆棧,60H(向上增長)

復位后設(shè)置SP<=07H

4.特殊功能寄存器

21個SFR(SpecialFunctionRegister)

80H~FFH,只能直接尋址除PC和4組R0~R7外,其他都是SFR,

可位尋址的SFR,其地址可被8整除與通用微機不同的特點:·程序存儲器和數(shù)據(jù)存儲器嚴格分開·特殊功能寄存器和內(nèi)部數(shù)據(jù)存儲器統(tǒng)一編址1.2.3片內(nèi)并行接口4部分:端口鎖存器,輸入緩沖器,輸出驅(qū)動器,端口引腳準雙向口沒有專用地址總線:

P2高8位,A15~A8;P0低8位,A7~A0;專用數(shù)據(jù)總線:P0,D7~D0P0口采用總線復用技術(shù)共性的部分輸出驅(qū)動FET(場效應管),受輸出控制電路控制寫操作時讀操作時,“讀-修改-寫”指令例如:ORLP0,A端口引腳讀操作:FET導通,鉗位于0。作普通I/O口讀入時應先向端口寫1——準雙向口1.2.48051的內(nèi)部資源串行口、定時器/計數(shù)器、中斷系統(tǒng)

1.2.5

8051的芯片引腳引腳功能VCC:電源+5VVSS:接地XTAL1和XTAL2:外接晶振引腳P0口:地址/數(shù)據(jù)總線P1口:準雙向通用I/O口P3口:多用途端口ALE/PROG:地址鎖存信號輸出端。RST:復位引腳SP<=07HP0~P3<=0FFHPC<=0SFR<=0

復位后,從0000H開始執(zhí)行程序EA/VPP:內(nèi)部和外部程序存儲器選擇。

0:外,1:內(nèi)PSEN:片外程序存儲器讀選通,低電平有效1.2.6單片機工作方式一、低功耗操作方式

兩種:節(jié)電(空閑)方式——CPU停止,RAM、定時器、串行口和中斷系統(tǒng)繼續(xù)工作

掉電方式——僅給RAM供電,50μA二、EPROM編程和校驗三、單步執(zhí)行方式用于單片機開發(fā)工具或仿真器1.4指令系統(tǒng)

1.4.1尋址方式

一、寄存器尋址MOVA,R0 ;A<=(R0)ADDA,R0 ;A<=(A)+(R0)

尋址空間:R0~R7,A,B,C,DPTR,AB(乘除法)二、直接尋址

1)MOVA,4FH ;A<=(4FH)二字節(jié)

2)MOVA,P0

尋址空間:內(nèi)部RAM低128字節(jié),

SFR

三、寄存器間接尋址

1)MOVA,@R1 ;A<=((R1))

(R1)=40H,A<=(40H)

PUSH30H ;(SP)<=(30H)2)MOVXA,@R0 ;A<=((R0))External——MOVP2,#10HMOVXA,@DPTR ;A<=((DPTR))尋址空間:內(nèi)部RAM(@R0,@R1,@SP);

外部RAM(@R0,@R1,@DPTR)

四、立即尋址MOVA,#6FH ;A<=6FH二字節(jié)MOVDPTR,#1234H;DPTR<=1234H;三字節(jié)

尋址空間:程序存儲器

五、變址尋址

MOVCA,@A+DPTR;A<=((DPTR)+(A))單字節(jié)

MOVCA,@A+PC ;A<=((PC)+(A))

變址尋址方式只適用于8051的程序存儲器,用于讀取數(shù)據(jù)表。

六、相對尋址

SJMPrel ;PC<=PC+2+rel

尋址空間:程序存儲器

七、位尋址

SETBbit ;(bit)<=1尋址空間:內(nèi)部RAM可位尋址區(qū);SFR可位尋址位1.4.2指令分類說明共111條指令,分5大類:·數(shù)據(jù)傳送指令·算術(shù)運算指令·邏輯運算及移位指令·轉(zhuǎn)移指令·十進制指令一、數(shù)據(jù)傳送指令

傳送指令不破壞源地址中的數(shù)據(jù)而只是把數(shù)據(jù)拷貝到目的地址,沒有寄存器到寄存器的傳送和間接/間接傳送。

(一)

內(nèi)部RAM間的數(shù)據(jù)傳送MOV(move)1.

立即尋址MOVA,#dataMOVRn,#dataMOV@Ri,#dataMOVdirect,#dataMOVDPTR,#data例如:MOVA,#30HMOVR1,#20HMOV@R1,#40HMOV32H,#50HMOVDPTR,#1000H2.

直接尋址MOVA,directMOVRn,directMOV@Ri,direct MOVdirect2,direct13.

間接尋址:MOVA,@RiMOVdirect,@Ri4.

寄存器尋址:

MOVA,RnMOVRn,AMOV@Ri,AMOVdirect,AMOVdirect,Rn(二)涉外RAM傳送

MOVX——外RAM(External)MOVC——外ROM(Code)

1.

外RAM

MOVXA,@Ri

MOVX@Ri,A

MOVXA,@DPTR

MOVX@DPTR,A2.外ROMMOVCA,@A+DPTR ;遠程查表MOVCA,@A+PC ;近程查表例: ADDA,#01H MOVCA,@A+PCRET DB30H ;0 DB31H ;1… DB39H ;9(三)堆棧指令PUSPdirectPOPdirect

(四)數(shù)據(jù)交換 XCHA,Rn

XCHA,@Ri

XCHA,direct

SWAPA(五)位傳送MOVC,bitMOVbit,C

二、算術(shù)運算

1.

加法

1)

ADDA,Rn

2)

ADDA,direct

3)

ADDA,@Ri

4)

ADDA,#data

影響標志:CY2.帶進位加法(AddwithCarry)ADDCA,Rn3.帶借位減法(SubstrctwithBorrow)SUBBA,Rn

沒有不帶借位標志的減法指令4.乘法

MULAB結(jié)果在累加器(低字節(jié))和B寄存器(高字節(jié))中。5.

除法

DIVAB;

結(jié)果在ACC中,余數(shù)(不是小數(shù)部分)在B中。6.

加1和減1

(Increment&Decrement)

INCA DECA

INCR2 DECR5

INC45H DEC3EH

INC@R0 DEC@R1

INCDPTR三、邏輯運算1.

邏輯與(Logical-AND) ANL A,Rn ;A<=A^Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ANL C,bit ANL C,/bit

2.

邏輯或(Logical-OR) ORL A,Rn 3.

邏輯異或(LogicalExclusive-OR) XRL A,Rn4.

取反(Complement) CPL A CPL C CPL bit

5.

清除(Clear) CLR A CLR C CLR bit6.

置位(SetBit) SETB C SETB bit7.

移位(Rotate)RLA ;RotateLeftRRA ;RotateRightRLCA ;RotateLeftthroughtheCarryflagRRCA ;RotateRightthroughtheCarryflag四、十進制指令1.

XCHDA,@R0交換累加器和間接地址的低四位,高四位保留原值。2.

SWAPA交換累加器的高四位和低四位。3.

DA(Decimal-Adjust)

DA A五、轉(zhuǎn)移指令1.無條件轉(zhuǎn)移沒有測試條件的轉(zhuǎn)移AJMPSUBROUTINE ;必須在同一2K塊內(nèi) ;(AbsoluteJump)LJMPPOINTA;64K程序空間的任意位置 ;(LongJump)SJMPWAITING;相對轉(zhuǎn)移+127~-128 ;(ShortJump)JMP@A+DPTR ;間接轉(zhuǎn)移(JumpIndirect)2.條件轉(zhuǎn)移測試并完成短轉(zhuǎn)移或繼續(xù)下一條指令JZPOINTX ;ZeroJNZPOINTY ;NotZeroJCPOINTZ ;JumpifCarryJNCPOINTZ ;JumpifNotCarryJBP3.5,POINTA ;JumpifBitissetJNBP3.1,POINTB ;JumpifNotBitJBC22.3,POINTC ;ifBitissetandClearbit

3.CJNE(CompareandJumpifNotEqual)比較,不相等就轉(zhuǎn)移CJNEA,3EH,POINTZCJNEA,#10,POINTWCJNER5,#34,LOOPCJNE@R1,#5,GOINGON4.DJNZ(DecrementandJumpifNotZero)用于重復循環(huán)的指令,次數(shù)在循環(huán)外設(shè)置,循環(huán)減到零時退出。DJNZR3,POINTQDJNZ3FH,POINTJ5.CALL(子程序調(diào)用)ACALLROUTINE ;AbsoluteCall

LCALLDISPLAY ;LongCall ;PC<=PC+3 ;SP<=SP+1;(SP)<=PC7~0;SP<=SP+1;(SP)<=PC15~8 ;PC<=ADDR166.RET(Return)子程序返回RET ;把堆棧上的兩個字節(jié)的值放入程序計數(shù)器,在子程序完成后繼續(xù)原程序流RETI ;恢復中斷邏輯,允許同一優(yōu)先級的中斷。

7.NOP(NoOperation)沒有實質(zhì)性操作,用于延時。1.4.3偽指令1.ORG偽指令(Origin)

指令出現(xiàn)在源程序或數(shù)據(jù)塊的開始,指明語句后面的目標程序或數(shù)據(jù)塊存放的起始地址。2.DB偽指令(DefineByte)

將項表中的字節(jié)數(shù)據(jù)存放到從標號開始的連續(xù)字節(jié)單元中。3.DW偽指令(DefineWord)

功能與DB類似,用于定義16位的地址表。4.EQU(Equal)

用于給一個表達式的值或字符串起一個名字,之后的名字可以用做程序的地址、數(shù)據(jù)地址或立即數(shù)使用。5.DATA偽指令(Data)給一個8位內(nèi)部RAM單元起一個名字,同一單元地址可以有多個名字。6.XDATA偽指令(ExternalData)給一個8位外部RAM單元起一個名字7.BIT偽指令

給可位尋址的位單元起名字。8、END偽指令

指出源程序到此結(jié)束,一個源程序只在最后使用一個END

例: ORG 0100H MOV A,#23H ADD A,#34H END1.5實用程序設(shè)計一、256種分支轉(zhuǎn)移程序JMP256功能:根據(jù)入口條件轉(zhuǎn)移到256個目的地址。入口:(R3)=轉(zhuǎn)移目的地址的序號(00~FFH)出口:(PC)=為轉(zhuǎn)移子程序的入口地址。JMP256: MOV A,R3 ;取地址 MOV DPTR,#TBL ;裝轉(zhuǎn)移表基址 CLR C RLC A ;變址×2 JNC LOW128;是前128個子程序,則轉(zhuǎn)移 INC DPH ;否,基址加256LOW128: MOV SAVE,A ;暫存變址 MOVCA,@A+DPTR PUSH ACC ;子程序首址低8位進棧 MOV A,SAVE INC A MOVCA,@A+DPTR PUSH ACC ;子程序首址高8位進棧 RET ;子程序首址彈入PCTBL: DW ROUT0;256個子程序首址 DW ROUT1 . . . DW ROUT255說明:執(zhí)行這段程序后,棧指針SP并不受影響,仍恢復為原來的值。

二、

m×n矩陣元素查找程序MATRIX設(shè)m×n矩陣如下:X0,0X0,1…X0,j…X0,n-1X1,0X1,1…X1,j…X1,n-1............Xi,0Xi,1…Xi,j…Xi,n-1............Xm-1,0Xm-1,1…Xm-1,j…Xm-1,n-1元素在存儲器中逐行存放,即從低地址到高地址為X0,0X0,1…Xm-1,n-1共占m×n,各占2個單元,這樣元素Xi,j存放地址的算法應為:元素地址=表基址+(i×n+j)×2其中i=0~(m-1);j=0~(n-1)功能:根據(jù)元素下標查找元素值。入口:(I)=元素下標變量i

(J)=元素下標變量j出口:(AR3)=雙精度矩陣元素Xi,j的值MARTIX: MOV A,I MOV B,#N MUL AB ;(A)=i×n+j ADD A,JRL A;(A)=(i×n+j)×2 MOV R3,A ;保存變址 ADD A,#05 ;修改變址 MOVCA,@A+PC ;查Xi,j的低位 XCH A,R3 ;低位送R3,恢復變址 INC A ;修正變址 INC A MOVCA,@A+PC ;查Xi,j的高位 RETTAB: DW X0,0,X0,1,…X0,n-1 . . . DW Xm-1,0,Xm-1,1,…Xm-1,n-1

三、通過堆棧傳遞參數(shù)的方法通常在調(diào)用子程序前要給子程序運行所要用到的參數(shù),也就是入口參數(shù)。子程序運行的結(jié)果應返回給調(diào)用程序,也就是出口參數(shù)。調(diào)用程序與子程序之間的這些參數(shù)傳遞一般可以采用以下三種方法:1.把參數(shù)裝載到規(guī)定的工作寄存器(R0~R7)或A中;2.把參數(shù)放在存儲器中,通過地址R0,R1,DPTR;3.

通過堆棧傳遞參數(shù)。通過堆棧傳遞參數(shù)的方法調(diào)用程序:I DATA 30HJ DATA 31H PUSH J PUSH I ACALL SUB POP ACC子程序:SUB: DEC SP DEC SP POP ACC ;I MOV B,#N MUL AB ;I×N POP 02H ;J ADD A,R2 ADD A,#7 INC SP MOVCA,@A+PC PUSH ACC INC SP INC SP RET DB …說明:程序中兩條DECSP指令是為了調(diào)整指針SP,使它指向下標變量I,而兩條INCSP指令則是調(diào)整指針使執(zhí)行RET指令時正確返回。

習題一P3411、14、21、24、28第二章

C與80512.18051的編程語言有4種語言支持,即匯編、PL/M、C和BASICC語言作為一種方便的語言而得到支持,不依賴于機器的硬件系統(tǒng)。2.2C51編譯器

作為工業(yè)標準地位,從1985年開始就有8051單片機的C語言編譯器,簡稱C51。P38

KEIL和IAR領(lǐng)先KEIL以它的緊湊代碼和使用方便領(lǐng)先;IAR以它性能完善和資料完善領(lǐng)先。FRANKLINV4.0ARCHIMEDESV4.0《單片機的C語言應用程序設(shè)計》(第3版)北京航空航天大學出版社IntelMicrocontrollerDataSheet.1984Schltz,ThomasW.Cand8051:Programmingformultitasking.PrenticeHall嵌入式C編程技術(shù)

《單片機與嵌入式系統(tǒng)應用》2001(1~6)《單片機C語言Windows環(huán)境編程寶典》KEILCx51uVision2

2.3C51編程實例小項目

編譯鏈接選項

程序開發(fā)過程P47圖2-3.c.a51.obj.lst.lib.omf.hex.map.sym第三章

C51數(shù)據(jù)與運算

3.1數(shù)據(jù)與數(shù)據(jù)類型

數(shù)據(jù)——具有一定格式的數(shù)字或數(shù)值叫做數(shù)據(jù)。

數(shù)據(jù)類型——數(shù)據(jù)的不同格式叫做數(shù)據(jù)類型。

數(shù)據(jù)結(jié)構(gòu)——數(shù)據(jù)按一定的數(shù)據(jù)類型進行的排列、組合、架構(gòu)。

C51編譯器具體支持的數(shù)據(jù)類型:位型,無符號字符,有符號字符,無符號整型,有符號整型,無符號長型,有符號長型,浮點和指針類型等。bit,unsignedchar,signedchar,unsignedint,signedint,unsignedlong,signedlong,float,doubleP50表3-1保存方式P523.2常量與變量常量——在程序運行的過程中,其值不能改變的。變量——在程序運行中,其值可以改變的。

習慣上,符號常量名用大寫,變量用小寫,以示區(qū)別。

只有bit和unsignedchar兩種數(shù)據(jù)類型可以直接支持機器指令,必須慎重變量和數(shù)據(jù)類型的選擇。

3.3C51數(shù)據(jù)的存儲類型與8051存儲器結(jié)構(gòu)

8051系列機在物理上有四個存儲空間

1)片內(nèi)程序存儲器空間

2)片外程序存儲器空間

3)片內(nèi)數(shù)據(jù)存儲器空間

4)片外數(shù)據(jù)存儲器空間

8051片內(nèi)數(shù)據(jù)存儲器可劃分為兩類: 00H~7FH為片內(nèi)低128字節(jié)RAM區(qū);

80H~0FFH為特殊功能寄存器區(qū)。

低字節(jié)RAM區(qū)又可以劃分為3個區(qū)域:

1)通用寄存器區(qū)(00H~1FH)

每個寄存器可以用寄存器名尋址,也可直接用字節(jié)地址尋址。

2)可位尋址區(qū)

可以按字節(jié)尋址操作,也可按位地址操作。

3)用戶RAM區(qū)程序存儲器與數(shù)據(jù)存儲器嚴格分開,特殊功能寄存器與片內(nèi)數(shù)據(jù)存儲器統(tǒng)一編址。

片內(nèi)數(shù)據(jù)存儲區(qū)是存放臨時性傳遞變量或使用頻率較高的變量的。

訪問片內(nèi)數(shù)據(jù)存儲器速度較快,經(jīng)常使用的變量置于片內(nèi)數(shù)據(jù)存儲器,而將不常用的置于片外數(shù)據(jù)存儲器中。尋址方式可使用直接和間接尋址。存儲類型

說明code程序,MOVC@A+DPTR訪問xdata外部數(shù)據(jù),由MOVX@DPTR訪問pdata分頁外部數(shù)據(jù),由MOVX@Ri訪問data直接尋址內(nèi)部數(shù)據(jù)存儲區(qū)bdata可位尋址內(nèi)部數(shù)據(jù)存儲區(qū)idata間接尋址內(nèi)部數(shù)據(jù)存儲區(qū)

當使用code存儲類型定義數(shù)據(jù)時,C51編譯器會將其定義在代碼空間(ROM或FLASH)。訪問片內(nèi)數(shù)據(jù)存儲器(data,bdata,idata)比訪問片外數(shù)存(xdata,pdata)相對要快一些,因此可將經(jīng)常使用的變量置于片內(nèi)數(shù)存。例:bitflag; 布爾值codeuchartable[]={1,2,3,”help”,oxff};idatauinttemp;datacharvar;/chardatavar; 等價,盡量用后一種staticunsignedlongxdataarray[100]; 靜態(tài)變量externfloatidatax,y,z; 模塊化編程uintpdatadimension;ucharxdatavector[10][4][4];charbdataflags;bitflag_0=flags^0;sbitP1_1=P1^1;如果省略掉數(shù)據(jù)類型,存儲模式將自動決定變量的默認存儲類型。作為編譯的選項。存儲模式

說明SMALL可直接尋址的內(nèi)部數(shù)據(jù)存儲區(qū)COMPACT分頁外部數(shù)據(jù)存儲區(qū)LARGE外部數(shù)據(jù)存儲區(qū)參數(shù)和局部變量放入3.48051特殊功能寄存器及其C51定義

對SFR的操作,只能用直接尋址方式。SFR中有11個寄存器具有位尋址能力。特殊功能位代表了一個獨立的定義類,不能與其它位定義和位互換。說明:1.bit8051單片機有位操作指令,完整布爾處理器2.char即字節(jié),int即字;

分為有符號和無符號數(shù),默認值為signedchar即char無論何時,應盡可能地使用無符號字符變量,因為它能直接被8051所接受。如果使用有符號和無符號兩種數(shù)據(jù)類型,那么就得使用兩種格式類型的庫函數(shù),占用的存儲空間成倍增長。需要進行額外的操作來測試代碼的符號位。這無疑會降低代碼效率。使用縮寫形式定義數(shù)據(jù)類型。

#defineucharunsignedchar#defineuintunsignedint3.變量可以組合為結(jié)構(gòu)和聯(lián)合,也可定義多維數(shù)組,可通過指針訪問變量。4.sbit,sfr簡化對8051的SFR的訪問頭文件reg51.h中有所有8051的SFR及可位尋址的位的定義,只要:#include<reg51.h>使用:P1=0x10;TMOD=0x01;TR0=1;EA=1;程序的開頭都加上以下三行:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint頭文件reg51.h中有所有8051的SFR及可位尋址位的定義

bitdirection_bit;uchari;{ i=PSW; C=direction_bit;

P1=0x10; direction_bit=C; PSW=i;}#include<absacc.h>#definePORTAXBYTE[0xffc0]{ i=PORTA;PORTA=i;

}習題三 P721、6第五章

C51構(gòu)造數(shù)據(jù)類型

5.1數(shù)組

數(shù)組是一組具有固定數(shù)目和相同類型成分分量的有序集合。5.2指針

指針是C語言的一個重要概念,也是重要特色之一。5.2.1指針的基本概念

變量的指針:就是變量的地址。

指向變量的指針變量:若有一個變量專門來存放另一個變量的地址,則該變量稱為指向變量的指針變量。5.2.2數(shù)組指針和指向數(shù)組的指針變量

數(shù)組的指針:就是數(shù)組的起始地址。

指向數(shù)組的指針變量:用來存放一個數(shù)組的起始地址。5.2.3

關(guān)于KEILC51的指針類型支持“基于存儲器的”指針和“一般”指針兩種類型。

基于存儲器的指針:

在編譯時,一般被“行內(nèi)”編碼,無須庫調(diào)用。

一般指針:

一般指針包括3個字節(jié):2字節(jié)偏移和1字節(jié)存儲器類型。為了表示這種指針,必須用長整數(shù)來定義存儲類型。

溫馨提示

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

最新文檔

評論

0/150

提交評論