




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機原理與應用
第1章單片機的基礎知識學習目標(1)掌握單片機的概念、發(fā)展過程和應用領域。(2)掌握單片機的數制和字符表示。(3)掌握單片機系統開發(fā)與仿真的步驟與過程。(4)了解單片機應用系統開發(fā)常用工具軟件。學習重點和難點(1)單片機系統開發(fā)及仿真過程。(2)常用數制和字符表示。1.1單片機技術的發(fā)展及應用什么是單片機把組成微型計算機的微處理器、存儲器、輸入輸出接口電路集成在一塊芯片上,構成單片微型計算機,即單片機1.1.1單片機的發(fā)展歷史一、初級單片機階段1971年Intel公司最早推出的是4位單片機4004。1976年,Intel公司推出MCS-48單片機,具有8位CPU,RAM,并行I/O口,8位定時器/計數器,無串行口,尋址范圍不超過4KB。此階段以8048、8039為代表。二、結構成熟階段1978~1983年,單片機普及階段。此階段的單片機仍為8位CPU,片內RAM和ROM的容量加大,片外尋址范圍可達64KB,增加了串行口、多機中斷處理系統,以及16位的定時器/計數器。此階段的單片機以Intel公司的MCS-51系列、MOTOROLA公司的6801系列和Zilog公司的Z8系列單片機為代表。在此期間,單片機以其優(yōu)良的性能價格比得到了廣泛的應用。三、性能提高階段1983年以后,16位單片機階段。此階段的單片機的CPU為16位,片內RAM和ROM的容量進一步增大,增加了D/A、A/D轉換器,主頻增加,運算速度加快。此階段的單片機以Intel公司的MCS-96單片機為代表。32位的單片機也已進入實用階段。1.1.2單片機的應用領域1)智能家電:家用電器采用單片機智能化控制代替?zhèn)鹘y的電子線路控制,有利于提高控制功能,減小家電體積和重量。如洗衣機、空調、電視機、錄像機、微波爐、電冰箱、電飯煲以及各種視聽設備等。2)智能辦公設備:現代辦公室使用的辦公設備多數嵌入單片機,實現智能化控制。如打印機、復印機、傳真機、繪圖機等。3)工業(yè)控制:工業(yè)生產中往往需要根據控制對象的物理特征采用不同的智能算法進行過程控制。單片機可以采集溫度、濕度、電流、電壓、液位、流量、壓力等物理參數,因此,單片機正好適合工業(yè)生產的智能控制,提高生產效率和產品質量。典型的工業(yè)控制如各種測控系統、過程控制、電機轉速控制、溫度控制、自動生產線等,在化工、建筑、冶金等各種工業(yè)領域都要用到單片機控制。1.1.2單片機的應用領域4)智能儀器儀表:采用單片機的智能化儀表能夠提高儀器儀表的使用功能和精度,簡化儀器儀表的硬件結構,使儀器儀表智能化、微型化、數字化。采用單片機的智能儀表可以進行數據處理和存儲、故障診斷,典型的應用如各種智能電氣測量儀表(電壓表、示波器等)、智能傳感器、各種分析儀等。5)分布式系統的前端采集模塊:在采用分布式測控系統的工業(yè)系統中,經常要采用分布式測控系統完成大量的分布參數的采集。在這種系統中,采用單片機作為分布式的前端采集模塊,系統具有運行可靠、數據采集方便靈活、成本低廉等優(yōu)點。分布式系統通常分為多個子系統,是單片機的多機應用形態(tài)。其他領域:汽車電子、智能通信產品、航空航天系統、國防軍事等領域。1.2單片機的數制和表示1.2.1二進制數和十六進制數二進制數可以表示單片機中的數據信號、地址信號和控制命令,后綴用字母B表示。例如:01101001B是8位二進制數。為了縮短數字的位數,可以用十六進制表示,十六進制的后綴用字母H表示。例如:69H是十六進制數,且有01101001B=69H。二進制與十六進制轉換二進制數轉化為十六進制數的轉化方法是將二進制數從末位以四位為單位進行劃分,每個四位二進制數轉化為一位十六進制數,如果二進制數的位數不是4的整數倍,則在數位的高位補0,使其成為4的整數倍;十六進制數轉化為二進制數的轉化方法是將每位十六進制數轉化為四位二進制數。原碼、反碼計補碼機器數“0”表示正號,“1”表示負號。正數的原碼、反碼和補碼都相同,負數的原碼為其符號位和數值位,負數的反碼為其所對應的正數按位求反,負數的補碼為該負數的反碼加1?!纠?-1】機器字長為8位,求[+105]補和[-105]補。[+105]補=01101001=69H按位求反,得10010110,再加1,得10010111[-105]補=97H1.2.2BCD碼二進制編碼的十進制數1.2.3單片機的數據類型1.位(bit)位是指一個比特的二進制數據,是數據的最小長度單位。2.字節(jié)(Byte) 字節(jié)是相鄰的8個二進制位,通常從數據的末位開始劃分,每8個二進制位稱為一個字節(jié)。一個字節(jié)也可以用2個十六進制位表示。3.字(Word)字是2個相鄰的字節(jié),通常從末位開始劃分,每2個字節(jié)稱為一個字,字分為高低字節(jié),高字節(jié)表示高位數據,低字節(jié)表示低位數據。1.3單片機中的字符字符信息包括數字、字母、符號和漢字等美國信息交換標準代碼(ASCII碼)包括英文字母大小寫、數字、專用字符(如+、-、*、/、空格等)以及非打印的控制符號。共128種編碼。用一個字節(jié)表示,低7位為ASCII碼,最高位為0。簡體中文字符集GB2312是簡體中文字符集的中國國家標準,稱為信息交換用漢字編碼字符集-基本集,又稱GB0。GB2312共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個,同時,GB2312收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內的682個全角字符。漢字的點陣編碼漢字的編碼是點陣式的,通過軟件取??梢缘玫綕h字的點陣編碼例如:PCtoLCD字模舉例光(0)逐列式{0x40,0x80,0x40,0x80,0x42,0x40,0x44,0x20,0x58,0x18,0xC0,0x07,0x40,0x00,0x7F,0x00},{0x40,0x00,0xC0,0x3F,0x50,0x40,0x48,0x40,0x46,0x40,0x40,0x40,0x40,0x78,0x00,0x00},/*"光",0*/取模選項1.4單片機系統開發(fā)與仿真硬件與軟件單片機系統由硬件與軟件兩個部分組成,硬件實現單片機與外部的連接及單片機與外界信號的匹配,軟件實現運算、信號采集和信息輸出。單片機的系統開發(fā)就是要實現正確的硬件設計和良好的軟件設計,并使軟件設計和硬件設計相匹配,形成一個能夠完成某種具體功能的應用系統。1.4單片機系統開發(fā)與仿真一、系統開發(fā)過程
1總體設計:2硬件設計:3軟件設計:4系統調試和運行單片機開發(fā)的在系統編程(ISP)和在應用編程(IAP)技術1在系統編程技術在已經焊接好的單片機開發(fā)系統中對單片機芯片直接裝入目標程序稱為在系統編程技術。2在應用編程技術單片機系統處于運行狀態(tài)中對單片機的程序進行更新而不影響系統運行,并能實現程序切換,使系統運行新加載的程序,這種技術稱為在應用編程技術。本章小結單片機是把微處理器、存儲器、輸入/輸出接口電路集成在一片集成電路芯片上,構成的單片微型計算機,它具有體積小、重量輕、價格低、可靠性高和易于嵌入式應用等優(yōu)點,廣泛應用在工業(yè)控制、儀器儀表、航空航天、智能家電、智能辦公設備、汽車電子、智能傳感器等領域。單片機系統由硬件與軟件兩個部分組成,硬件實現單片機與外部的連接及單片機與外界信號的匹配,軟件實現運算、信號采集和信息輸出。單片機的系統開發(fā)就是要實現正確的硬件設計和良好的軟件設計,并使軟件設計和硬件設計相匹配,形成一個能夠完成某種具體功能的應用系統。單片機的數制和編碼常采用二進制、十進制、十六進制、BCD碼、ASCII碼和GB2312漢字編碼,單片機系統開發(fā)過程主要有系統設計、硬件設計、軟件設計和系統調試運行,單片機系統開發(fā)需要借助于計算機軟件完成,軟件設計調試工具有Keil、Wave,電路圖和電路板設計和仿真軟件有Multisim、Protel等,單片機的學習和掌握要在實踐中不斷深入。第2章單片機內部結構和匯編指令學習目標(1)熟悉單片機的內部結構和應用模式。(2)掌握單片機引腳信號功能,內部資源。(3)掌握單片機的存儲器空間分配及各I/O口的特點。(4)掌握單片機匯編指令的格式、尋址方式、字節(jié)數及執(zhí)行時間。(5)掌握單片機匯編指令的尋址方式。(6)掌握具體的五大類匯編指令。學習重點和難點(1)單片機存儲器配置與空間的分布。(2)程序狀態(tài)寄存器(PSW)。(3)單片機的I/O口的特點。(4)匯編指令的格式及尋址方式。(5)熟練掌握總共111條匯編指令。MCS-51是美國Intel公司的8位單片機系列這一系列的單片機有多種型號:8051/8751/8031、8052/8752/8032、80C51/87C51/80C31、80C52/87C52/80C32生產工藝1.生產工藝有兩種:HMOS工藝高密度短溝道MOS工藝CHMOS工藝互補金屬氧化物的HMOS工藝產品型號中帶有字母“C”的即為CHMOS芯片,CHMOS芯片的電平既與TTL電平兼容,又與CMOS電平兼容,具有低功耗的特點,如87C51。8051的功耗為630mW,80C51的功耗只有120mW。功能基本型:51子系列,8051/8751/8031、80C51/87C51/80C31增強型:52子系列是,8052/8752/8032、80C52/87C52/80C32。通常選用增強型芯片。片內程序存儲器配置即掩膜ROMEPROMROMLessFlashROM如:80C51有4K字節(jié)的掩膜ROM、87C51有4K字節(jié)的EPROM、80C31在芯片內無程序存儲器、89S51具有FlashROM4K字節(jié)。現在人們普遍采用具有Flash存儲器的芯片。2.1單片機內部結構組成2.1.180C51單片機的片內結構微處理器(運算器和控制器)存儲器I/O接口組成80C51單片機基本型包含有一、CPU系統1個8位微處理器(CPU)。時鐘電路。總線控制。二、存儲器系統128B數據存儲器(RAM,可再擴展64K)。4KB程序存儲器(ROM/EPROM/Flash,可外擴至64K)。特殊功能寄存器(SFR)。三、I/O口和其他功能單元4個8位的并行I/O接口P0~P3。2個16位定時/計數器。5個中斷源,其中包括2個優(yōu)先級嵌套中斷。1個可編程的全雙工串行I/O接口。80C51單片機基本型/增強型的組成2.1.280C51單片機的CPU80C51單片機的核心是一個8位高性能的CPU。主要由運算器和控制器構成。一、運算器算術/邏輯運算單元ALU累加器ACC寄存器B暫存寄存器程序狀態(tài)字寄存器PSW程序狀態(tài)字寄存器PSW
程序狀態(tài)字寄存器PSW是狀態(tài)標志寄存器,它用來保存ALU運算結果的特征(如:結果是否為0,是否有進位等)和處理器的狀態(tài)。這些特征和狀態(tài)可以作為控制程序轉移的條件,以供程序判別和查詢。PSW的各位定義如下,其字節(jié)地址為D0H。①Cy—
進位、借位標志。也可寫為C。在執(zhí)行算術運算和邏輯運算指令時,用于記錄最高位的進位或借位。有進位、借位時Cy=1,否則Cy=0。Cy可以被硬件或軟件置位或清零,在位處理器中,它是位累加器。②AC—
輔助進位、借位標志。用于表示Acc.3有否向Acc.4進位、借位。當進行加法或減法操作而產生由低4位數(十進制的一個數字)向高4位數進位或借位時,Ac將被硬件置位,否則就被清0。Ac用于十進制調整。③RS1、RS0—
當前工作寄存器組選擇控制位。RS1、RS0=00——0組(00H~07H)RS1、RS0=01——1組(08H~0FH)RS1、RS0=10——2組(10H~17H)RS1、RS0=11——3組(18H~1FH)④OV—
溢出標志。表示Acc在有符號數算術運算中的溢出。即超出了帶符號數的有效范圍(-128~+127)。有溢出時OV=1,否則OV=0。⑤P—
奇偶標志。表示Acc中“1”的個數的奇偶性。若1的個數為奇數,則P置位,否則清0。⑥F0、F1—
用戶標志位,由用戶自己定義。二、控制器程序計數器指令寄存器IR指令譯碼器ID控制邏輯電路
2.280C51單片機的引腳功能和最小系統、
2.2.180C51引腳封裝及功能采用雙列直插式(DIP)QFP44(QuadFlatPack)LCC(LeadedChipCarrier)總線型DIP40引腳封裝(1)電源及時鐘引腳(4個)VCC:電源接入引腳;VSS:接地引腳;XTAL1:晶體振蕩器接入的一個引腳(采用外部振蕩器時,對CHMOS型而言,如80C51,此引腳作為外部振蕩信號的輸入端);XTAL2:晶體振蕩器接入的另一個引腳。(采用外部振蕩器時,對CHMOS型而言,此引腳懸空)??偩€型DIP40引腳封裝(2)控制線引腳(4個)RST/VPD:復位信號輸入引腳/備用電源輸入引腳;ALE/:地址鎖存允許信號輸出引腳/編程脈沖輸入引腳;/VPP:內外程序存儲器選擇引腳/片內EPROM(或FlashROM)編程電壓輸入引腳;:外部程序存儲器選通信號輸出引腳??偩€型DIP40引腳封裝(3)并行I/O口引腳(32個,分成4個8位口)P0.0~P0.7:一般I/O口引腳或數據/低位地址總線復用引腳;P1.0~P1.7:一般I/O口引腳;P2.0~P2.7:一般I/O口引腳或高位地址總線引腳;P3.0~P3.7:一般I/O口引腳或第二功能引腳。與并行口P3(P3.0~P3.7)復用的第二功能引腳信號分別是:串行口輸入和輸出引腳RXD和TXD;外部中斷輸入引腳和;外部計數輸入引腳T0和T1;外部數據存儲器寫和讀控制信號和。2.2.280C51單片機的復位一、復位電路(a)上電復位電路(b)按鍵與上電復位二、單片機復位后的狀態(tài)1.程序計數器PC的值為0000H2.單片機啟動后,片內RAM為隨機值,運行中的復位操作不改變片內RAM的內容。3.P0~P3為FFH,SP為07H,SBUF不定,IP、IE和PCON的有效位為0,其余的特殊功能寄存器的狀態(tài)均為00H。相應的意義為:P0~P3=FFH,相當于各接口鎖存器已經寫入1,此時不但可用于輸出,也可以用于輸入;SP=07H,堆棧指針指向片內RAM的07H單元(第一個入棧內容將寫入08H單元);IP、IE和PCON的有效位為0,各中斷源處于低優(yōu)先級且均被關斷,串行通信的波特率不加倍;PSW=00H,當前工作寄存器為第0組。2.2.380C51單片機CPU的時鐘與時序時序:指令微操作的時間次序稱作時序單片機的時鐘信號用來為單片機芯片內部的各種微操作提供時間基準一、時鐘產生方式內部時鐘方式外部時鐘方式內部時鐘方式外部時鐘方式電容器C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率范圍為1.2~12MHz,典型值為12MHz、6MHz或11.0592MHz當系統要與PC機通信時,應選擇晶振頻率為11.0592MHz,這樣便于將波特率設定為標稱值。二、80C51的時鐘信號晶振周期(時鐘周期)S狀態(tài)機器周期指令周期三、80C51的典型時序單周期指令時序三、80C51的典型時序單字節(jié)雙周期指令時序三、80C51的典型時序訪問外部RAM的雙周期指令時序80C51單片機最小系統單片機最小系統就是使單片機工作的最低配置2.380C51單片機的存儲器組織隨機存取存儲器(RAM)只讀存儲器(ROM)2.3.180C51單片機的程序存儲器配置
尋址范圍:64KB一.芯片內、外程序存儲器的選擇1.引腳接高電平2.3.180C51單片機的程序存儲器配置2.引腳接低電平2.3.180C51單片機的程序存儲器配置二.程序存儲器的幾個特殊單元0000H:單片機復位后的入口地址;0003H:外部中斷0的中斷服務子程序入口地址;000BH:定時/計數器0溢出中斷服務子程序入口地址;0013H:外部中斷1的中斷服務子程序入口地址;001BH:定時/計數器1溢出中斷服務子程序入口地址;0023H:串行接口的中斷服務子程序入口地址。對于增強型單片機,002BH為定時/計數器2溢出或T2EX負跳變中斷服務子程序入口地址。ROM低端的入口地址基本程序結構2.3.280C51單片機的數據存儲器配置一、工作寄存器區(qū)80C51單片機片內RAM的低端地址為00H~1FH的共32個字節(jié)單元,分成4個工作寄存器組,每組占8個單元。寄存器0組:地址00H~07H;寄存器1組:地址08H~0FH;寄存器2組:地址10H~17H;寄存器3組:地址18H~1FH。當前工作寄存器組從某一組工作寄存器換至另一組工作寄存器時,原來工作寄存器組的各寄存器的內容將被屏蔽保護起來。利用這一特性可以方便地完成快速現場數據保護任務二、位尋址區(qū)內部RAM中地址為20H~2FH的共16個字節(jié)單元128個位的地址范圍是00H~7FH三、通用RAM區(qū)地址為30H~7FH的共80個字節(jié)單元為通用RAM區(qū)數據緩沖器80C51的堆棧一般設在30H~7FH的范圍內。棧頂的位置由SP寄存器指示。復位時SP的初值為07H,2.3.380C51單片機的特殊功能寄存器一、與運算器相關的寄存器(3個)累加器ACC,8位。ACC是80C51單片機中最頻繁使用的寄存器,用于向ALU提供操作數,許多運算的結果也存放在累加器中;寄存器B,8位。主要用于乘、除法運算。也可以作為RAM的一個單元使用;程序狀態(tài)字寄存器PSW,8位。它用來保存ALU運算結果的特征和處理器狀態(tài)。其中RS1和RS0位用來設定當前工作寄存器組。二、指針類寄存器(3個)堆棧指針SP,8位。它總是指向棧頂。復位初始值為07H;數據指針DPTR,16位。用來存放16位的地址。它由兩個8位寄存器DPH和DPL組成,可對片外64KB范圍的RAM或ROM數據進行間接尋址或變址尋址操作。三、與口相關的寄存器(7個)并行I/O口P0、P1、P2、P3,均為8位。通過對這4個寄存器的讀/寫操作,可以實現數據從相應并口的輸入/輸出;串行口數據緩沖器SBUF;串行口控制寄存器SCON;串行通信波特率倍增寄存器PCON(一些位還與電源控制相關,所以又稱為電源控制寄存器)。四、與中斷相關的寄存器(2個)中斷允許控制寄存器IE;中斷優(yōu)先級控制寄存器IP。五、與定時/計數器相關的寄存器(6個)定時/計數器T0的兩個8位計數初值寄存器TH0、TL0,可以構成16位的計數器,TH0存放高8位,TL0存放低8位;定時/計數器T1的兩個8位計數初值寄存器TH1、TL1,它們可以構成16位的計數器,TH1存放高8位,TL1存放低8位;定時/計數器的工作方式寄存器TMOD;定時/計數器的控制寄存器TCON。80C51的特殊功能寄存器(SFR)與片內RAM統一編址的21個特殊功能寄存器(SFR),離散地分布在80H~FFH的地址空間中。字節(jié)地址能被8整除的(即十六進制的地址碼尾數為0或8的)單元是具有位地址的寄存器。在SFR地址空間中,有效位地址共有83個2.4單片機指令系統和尋址方式簡介1.指令系統概述機器語言程序匯編語言匯編語言是用助記符、符號和數字來表示指令的程序語言,容易理解和記憶,它與機器語言指令是一一對應的2.指令格式[標號:]操作碼[目的操作數][,源操作數][;注釋]例如:MOVA,#00H3.尋址方式概述:七種尋址方式立即尋址、寄存器尋址、寄存器間接尋址、直接尋址、基址加變址尋址、相對尋址、位尋址1.立即尋址立即尋址方式(也稱立即數尋址)是直接在指令中給出操作數MOVA,#05H需要在操作數前面加前綴標志“#”2.寄存器尋址寄存器尋址方式就是指令中的操作數為某一寄存器的內容。MOVA,R03.寄存器間接尋址寄存器中存放操作數的地址MOVA,@R04.直接尋址指令中直接給出操作數的單元地址MOVA,50HMOV50H,60H5.基址加變址尋址以DPTR或者PC的內容作為基地址,然后在這個基地址的基礎上加上地址偏移量A的內容形成真正的操作數地址MOVCA,@A+DPTR6.相對尋址相對尋址只出現在相對轉移指令中。目的地址=源地址+相對轉移指令字節(jié)數+relrel是單字節(jié)的帶符號的8位二進制補碼數相對偏移在-128~+127單元之間7.位尋址操作數是8位二進制數中的某一位。指令中給出的是位地址,即片內RAM某一單元中的一位SETBbit2.4.4匯編指令描述符號Rn當前工作寄存器R0~R7(n=0~7)。Ri當前工作寄存器區(qū)中RO、R1(i=0,1)。direct直接地址#data包含在指令中的8位立即數。#data16包含在指令中的16位立即數。rel相對轉移指令中的偏移量,補碼(-128~+127)。DPTR數據指針bit直接尋址位。C或Cy進位標志位或位處理機中的累加器。addr1111位目的地址。addr1616位目的地址。@間接尋址寄存器前綴,如@Ri,@A+DPTR。(X)表示X地址單元或寄存器中的內容。((X))表示以X的內容為地址間接尋址單元的內容。2.5數據傳送類指令通用格式如下:
MOV[目的操作數],[源操作數]1.以累加器為目的操作數的指令MOVA,Rn;(Rn)→A,n=0~7MOVA,@Ri;((Ri))→A,i=0,1MOVA,direct;(direct)→AMOVA,#data;#data→A源操作數可以是寄存器、直接地址、間接地址、和立即數MOVA,R4;(R4)→A,寄存器尋址
MOVA,@R0;((R0))→A,寄存器間接尋址
MOVA,60H;(60H)→A,直接尋址
MOVA,#20H;20H→A,立即數尋址2.以Rn為目的操作數的指令MOVRn,A;(A)→Rn,n=0~7MOVRn,direct;(direct)→Rn,n=0~7MOVRn,#data;#data→Rn,n=0~7把源操作數的內容送入當前工作寄存器區(qū)的R0~R7中的某一個工作寄存器例如:(A)=42H,執(zhí)行指令MOVR0,A后,R0的內容為42H.3.以直接地址direct為目的操作數的指令MOVdirect,A;(A)→directMOVdirect,Rn;(Rn)→directMOVdirect,@Ri;((Ri))→direct,i=0,1MOVdirect1,direct2;(direct2)→(direct1)MOVdirect,#data;#data→direct把源操作數的內容送入直接地址單元direct指的是內部RAM或SFR地址例如:(43H)=12H,執(zhí)行指令MOV20H,43H后20H單元的內容為12H.
MOV@Ri,A;(A)→((Ri)),i=0,1MOV@Ri,direct;(direct)→((Ri)),i=0,1MOV@Ri,#data;#data→((Ri)),i=0,1把源操作數內容送入R0或R1指定的存儲單元中4.以寄存器間接地址為目的操作數的指令例如:(A)=12H,(R0)=30H,執(zhí)行指令MOV@R0,A后結果為RAM中(30H)=12HMOV@R0,AMOV30H,A。5.十六位數據傳送指令MOVDPTR,#data16
將高8位立即數dataH送入DPH,低8位立即數dataL送入DPL。如“MOVDPTR,#1234H”,執(zhí)行結果為(DPH)=12H,(DPL)=34H。6.堆棧操作指令PUSHdirect功能:首先將堆棧指針SP加1,然后把direct中的內容送到堆棧指針SP所指的內部RAM單元中。例如:當(SP)=60H,(A)=12H,(B)=34H,執(zhí)行下列指令
PUSHACC;(SP)+1=61H→SP,(A)→61HPUSHB;(SP)+1=62H→SP,(B)→62H結果為(61H)=12H,(62H)=34H,(SP)=62H(2)出棧指令POPdirect功能:將堆棧指針SP指示的棧頂內容送到direct字節(jié)單元中,堆棧指針SP減1。例如:當(SP)=62H,(62H)=12H,(61H)=34H,執(zhí)行下列指令POPACC;((SP))→A,(SP)-1→SPPOPPSW;((SP))→PSW,(SP)-1→SP結果為(A)=12H,(PSW)=34H,(SP)=60H。7.查表指令(1)MOVCA,@A+PC(2)MOVCA,@A+DPTR讀程序存儲器中表格數據執(zhí)行這兩條指令時,單片機的引腳信號有效例如:當(A)=06H,執(zhí)行地址2000H處的指令2000H:MOVCA,@A+PC該指令占用一個字節(jié),下一條指令的地址為2001H,(PC)=2001H,再加上A中的06H,得到2007H,結果是將程序存儲器中的2007H的內容送入累加器A。例如:(DPTR)=2000H,(A)=06H,執(zhí)行指令MOVCA,@A+DPTR結果是將程序存儲器中2006H單元內容送入累加器A中。8.累加器A與片外RAM傳送指令MOVXA,@Ri;((Ri))→AMOVXA,@DPTR;((DPTR))→AMOVX@Ri,A;A→((Ri))MOVX@DPTR,A;A→((DPTR))可以實現I/O接口輸入/輸出數據@Ri間址作低8位地址指針,高8位地址由P2口送出尋址范圍64KB讀寫信號9.字節(jié)交換指令XCHA,RnXCHA,@RiXCHA,direct功能:將累加器A中的內容與源操作數的內容進行互換例:若(R0)=80H,(A)=20H。執(zhí)行指令XCHA,R0
后,(A)=80H,(R0)=20H。
2/5/202310510.半字節(jié)交換指令XCHDA,@Ri功能:將Ri間接尋址的單元內容與累加器A中內容的低4位互換,高4位內容不變。該操作只影響標志位P。例如:(R0)=30H,(30H)=67H,(A)=20H,執(zhí)行指令XCHDA,@R0后,(A)=27H,(30H)=60H。11.累加器半字節(jié)交換指令SWAPA功能:將累加器A的高4位和低4位互換。例如:(A)=56H,執(zhí)行指令SWAPA,結果(A)=65H.2.6算術運算和邏輯運算類指令2.6.1算術運算類指令MCS-51算術運算指令包括加、減、乘、除、基本四則運算針對8位二進制無符號數其中:√表示有影響,×表示無影響,0表示清零
指令
標志ADD、ADDC、SUBBDAMULDIVCY√√00AC√√××OV√×√√P√√√√1.加法指令ADDA,Rn;(A)+(Rn)→AADDA,@Ri;(A)+((Ri))→AADDA,direct;(A)+(direct)→AADDA,#data;(A)+data→A影響標志位AC、CY、OV、P算數運算影響標志位示例例:有2個參與相加的機器數,一個是84H,另一個是8DH。試分析運算過程及其對狀態(tài)標志的影響。結果:CY為1;AC為1;OV為1;P為0
2/5/2023111例3-1:設(A)=0C3H,(R0)=0AAH,執(zhí)行指令ADDA,R0(A):11000011+(R0):10101010101101101所得和為6DH,標志位CY=1,AC=0,P=1,OV=1,溢出標志OV在CPU內部根據異或門輸出置位,OV=C72.帶進位加法指令ADDCA,Rn;(A)+(Rn)+CY→AADDCA,@Ri;(A)+((Ri))+CY→AADDCA,direct;(A)+(direct)+CY→AADDCA,#data;(A)+data+CY→A功能:同時把源操作數所指出的內容和進位標志位CY都加到累加器A中,結果存放在A中將影響標志位AC,CY,OV,P常用于多字節(jié)加法例3-2:設(A)=85H,(20H)=0FFH,CY=1,執(zhí)行指令ADDA,20H(A):10000101+(R0):11111111110000101所得和為85H,標志位CY=1,AC=1,OV=0,P=13.增1指令INCAINCRn;n=0~7INCdirectINC@Ri;i=0,1INCDPTR不影響PSW4.十進制調整指令DAA;調整A的內容為正確的BCD碼兩個壓縮的BCD碼按二進制相加后,必須經過調整方能得到正確的和。
當A中低4位出現了非BCD碼(1010~1111)或低4位的進位AC=1,則應在低4位加6調整。當A中高4位出現了非BCD碼(1010~1111)或高4位的進位CY=1,則應在高4位加6調整。
執(zhí)行十進制調整指令后,PSW中的CY表示結果的百位值2/5/2023116例:若(A)=01101001B,表示的BCD碼為(R2)=01011000B,表示的BCD碼為,執(zhí)行指令:ADDA,R2DAA(A)=00100111B,即且(CY)=1,即正確的結果為:127
2/5/20231175.帶借位減法用此組指令完成不帶借位的減法,只需先清CY為0即可
CY為1,表示D7位需借位
AC為1,表示D3位需借位OV為1,表示“D6有借位D7無借位”或“D7有借位D6無借位”2/5/2023118例:若(A)=C9H,(R2)=54H,(CY)=1,試分析指令SUBBA,R2執(zhí)行后,累加器的內容及狀態(tài)標志。(A):11001001(201)-(CY):
1(1)11001000-(R2):01010100(84)結果:01110100(116)即:(A)=74H,(CY)=0,(AC)=0,(OV)=1,(P)=0。分析:數據為無符號類型。該指令執(zhí)行前CY=1,說明此指令不是運算的最低字節(jié),即在此指令執(zhí)行之前,一定執(zhí)行過低字節(jié)的減法并產生了借位。因此,本次相減(201-1-84=116=74H)結果為74H。2/5/20231196.減1指令這組指令僅DECA
影響P標志。其余指令都不影響標志位的狀態(tài)。2/5/20231207.乘法指令僅有一條乘法指令MULAB;A與B相乘無符號結果:B中為積的高8位,A中為積的低8位。
CY總是被清0;OV=1表示積大于FFH
8.除法指令僅有一條除法指令DIVAB;A除以B
無符號結果:A中為商的整數部分,B中為余數
CY總是被清0;OV=1表示除數為02/5/20231212.6.2邏輯操作類指令邏輯操作包括與、或、異或、清零、求反、移位等操作1.累加器A清零指令CLRA該指令的功能是將累加器A的內容清零,不影響CY、AC、OV等標志位。2.累加器A求反指令CPLA該指令的功能是將累加器A的內容進行求反操作,不影響CY、AC、OV等標志位。3.累加器A循環(huán)左移指令RLA該指令功能是將累加器A的內容向左循環(huán)移動一位,最高位移入最低位。4.累加器A循環(huán)右移指令RRA該指令功能是將累加器A的內容向右循環(huán)移動一位,最低位移入最高位。5.帶進位循環(huán)左移指令RLCA該指令功能是將累加器A的內容連同進位標志位CY一起向左循環(huán)移一位,ACC.7移入CY,CY移入ACC.0。6.帶進位循環(huán)右移指令RRCA該指令功能是將累加器A的內容連同進位標志位CY一起向右循環(huán)移一位,ACC.0移入CY,CY移入ACC.7。例3-4:無符號二進制數(A)=10101100B,CY=0。執(zhí)行指令RLCA的結果為A=01011000,CY=17.邏輯“與”指令ANLA,#data;ANLA,direct;ANLA,Rn;ANLA,@Ri;ANLdirect,#dataANLdirect,A功能:位進行邏輯與,結果存入目的操作數例2-6:(A)=85H,(40H)=7FH,執(zhí)行指令 ANLA,40H
10000101∧)0111111100000101結果為(A)=05H8.邏輯“或”指令ORLA,#data;ORLA,direct;ORLA,Rn;ORLA,@Ri;ORLdirect,#dataORLdirect,A按位進行邏輯或,結果存入目的操作數。例2-7:(A)=76H,R5=8AH,執(zhí)行指令 ORLA,R5
01110110∨)1000101011111110結果為(A)=FEH9.邏輯“異或”指令XRLA,#data;XRLA,direct;XRLA,Rn;XRLA,@Ri;XRLdirect,#data;XRLdirect,A;按位進行邏輯“異或”,結果存入目的操作數例2-8:(A)=56H,R2=77H,執(zhí)行指令 XRLA,R2
01010110⊕)0111011100100001結果為(A)=21H2.7控制轉移類和位操作指令2.7.1控制轉移類指令無條件轉移:條件轉移:絕對轉移:相對轉移:長轉移或長調用:目的地址距當前PC64KB地址范圍內。短轉移或短調用:目的地址距當前PC2KB地址范圍。這一類指令的功能是改變指令的執(zhí)行順序絕對轉移AJMPaddr11;PC←(PC)+2,PC10~0←addr111.無條件轉移指令長轉移(長跳轉)LJMPaddr16;PC←addr16相對轉移SJMPrel;PC←(PC)+2,PC←(PC)+rel目標地址rel
對應范圍為+127~-128。
2/5/2023137【例】若“NEWADD”為地址1022H,PC的當前值為1000H。執(zhí)行指令SJMPNEWADD后,程序將轉向1022H處執(zhí)行(rel=20H=1022H-1000H-2)。解析如下:2/5/2023138間接轉移(散轉移)JMP@A+DPTR;PC←(PC)+1,PC←(A)+(DPTR)
可完成多條判跳指令的功能【例】功能:當(A)=00H時,程序將轉到ROUT0處執(zhí)行;當(A)=02H時,程序將轉到ROUT1處執(zhí)行;……。
MOVDPTR,#TABLEJMP@A+DPTRTABLE:AJMPROUT0AJMPROUT1AJMPROUT2AJMPROUT32/5/20231392.條件轉移指令(1)累加器判零轉移指令JZrel;A=0則轉移,否則順次執(zhí)行JNZrel;A≠0則轉移,否則順次執(zhí)行(2)減1不為零轉移指令DJNZRn,relDJNZdirect,rel(3)比較不相等轉移指令CJNEA,direct,relCJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,rel3.調用及返回指令長調用指令
短調用指令
指令執(zhí)行時將返回地址入棧
SP應設為合適值(默認值07H)
例:若(SP)=07H,標號“XADD”表示的實際地址為0345H,PC的當前值為0123H。執(zhí)行指令ACALLXADD
后:返回地址為:(PC)+2=0125H。其低8位的25H壓入堆棧的08H單元,其高8位的01H壓入堆棧的09H單元(低地址對應于低字節(jié))。(PC)=0345H,程序轉向目標地址0345H處執(zhí)行。2/5/2023144(3)子程序返回指令中斷子程序返回指令RETI專用于中斷服務程序返回,它具有清除內部相應的中斷狀態(tài)觸發(fā)器(以保證正確的中斷邏輯)的功能。
4.空操作指令
NOPCPU不進行任何實際操作,除PC加1外,不影響其他寄存器和標志位。該指令常用來產生一個機器周期的延時2.7.2位操作指令在程序中位地址的表達有多種方式:1)用直接位地址表示,如D4H。2)用“·”操作符號表示,如PSW.4,或D0H.43)用位名稱表示,如RS1。4)用用戶自定義名表示。如ABCBITD4H,其中ABC定義為D4H位的位名,BIT為位定義偽指令。以上各例均表示PSW.4的RS1位。1.位清零指令CLRC;0→CYCLRbit;0→bit2.位置1指令SETBC;1→CYSETBbit;1→bit3.位取反指令CPLC;CY→CYCPLbit;bit→bit4.位傳送指令MOVC,bit;(bit)→CYMOVbit,C;CY→(bit)5.位邏輯“與”指令ANLC,bit;CY∧(bit)→CYANLC,/bit;CY∧(/bit)→CY6.位邏輯“或”指令ORLC,bit;CY∨(bit)→CYORLC,/bit;CY∨(/bit)→CY7.位轉移指令JCrel;CY=1,則轉移,否則程序順序執(zhí)行JNCrel;CY=0,則轉移,否則程序順序執(zhí)行JBbit,rel;(bit)=1,則轉移,否則程序順序執(zhí)行JNBbit,rel;(bit)=0,則轉移,否則程序順序執(zhí)行JBCbit,rel;(bit)=1,則轉移,且該位清零;否則程序順序執(zhí)行2.880C51并行口結構與驅動4個8位的并行I/O接口,分別是P0、P1、P2和P3由口鎖存器、輸出驅動器和輸入緩沖器組成P0口、P2口可用作通用的輸入/輸出口。當需要外部程序存儲器和數據存儲器擴展時(如80C31的應用),P0口作為分時復用的低8位地址/數據總線,P2口作為高8位地址總線。P1口是80C51唯一的單功能口,僅能用作通用的數據輸入/輸出口。P3口是雙功能口,除具有數據輸入/輸出功能外,每一口線還具有特殊的第二功能。2.880C51并行口結構與驅動2.8.1P0口的結構2.880C51并行口結構與驅動2.8.2P1口的結構2.880C51并行口結構與驅動2.8.3P2口的結構2.880C51并行口結構與驅動2.8.4P3口的結構2.8.5并口驅動簡單外設一、并口的負載能力對于典型的單片機器件AT89S52,每根口線最大可吸收10mA的(灌)電流;但P0口所有引腳吸收電流的總和不能超過26mA,P1、P2和P3口每個口吸收電流的總和限制在15mA,全部4個并口所有口線的吸收電流總和限制在71mA。2.8.5并口驅動簡單外設二、驅動輸出設備1.驅動發(fā)光二極管LED2.驅動數碼管2.驅動數碼管若數據總線D7~D0與dp、g、f、e、d、c、b、a順序對應相接,要想顯示數字“8”時,共陰極數碼管送01111111B至數據總線,即字形碼為7FH;而共陽極數碼管送數據10000000B至數據總線,即字形碼為80H。3.驅動蜂鳴器三、驅動輸入設備按鍵開關的抖動現象和去抖電路通常采用軟件延時10ms的方法本章小結180C51單片機由微處理器、存儲器、I/O接口以及特殊功能寄存器SFR構成內部的各種微操作都以晶振周期為時序基準。晶振信號二分頻后形成兩相錯開的節(jié)拍信號P1和P2,十二分頻后形成機器周期。一個機器周期包含12個晶振周期(或6個S狀態(tài))。指令的執(zhí)行時間稱作指令周期。80C51單片機有4個8位的并行I/O口:存儲器在物理上設計成程序存儲器和數據存儲器兩個獨立的空間單片機的復位操作使單片機進入初始化狀態(tài)。本章小結2單片機的復位操作使單片機進入初始化狀態(tài)。復位后,PC內容為0000H,P0口~P3口內容均為FFH,SP內容為07H,SBUF內容不定,IP、IE和PCON的有效位為0,其余的特殊功能寄存器的內容均為00H。對于典型的單片機器件AT89S52,每根口線最大可吸收10mA的(灌)電流;但P0口所有引腳吸收電流的總和不能超過26mA,P1、P2和P3每個口吸收電流的總和限制在15mA,全部4個并口所有口線的吸收電流總和限制在71mA。簡單輸出設備有LED二極管、LED數碼管及蜂鳴器等。用單片機驅動時除了考慮口線的負載能力,還要注意P0口上拉電阻的配置。簡單的輸入設備有按鍵和撥動開關。對于按鍵開關,按鍵在閉合和斷開時,觸點會存在抖動現象。按鍵較少時可以采用硬件去抖電路,按鍵較多時采用軟件延時消抖。本章小結3MCS-51單片機的匯編指令系統由111條指令組成。尋址方式是指尋找操作數的方法,或者說通過什么方式找到操作數。匯編指令系統可分為五大類:數據傳送類指令、算術運算類指令、邏輯運算類指令、控制轉移類指令、位操作類指令。數據傳送類指令完成的功能是在單片機內部或者和單片機外部進行數據的傳輸,包括內部傳送指令和外部傳送指令。算術運算類指令是將數據進行算術運算,有些指令會對標志位產生影響。邏輯運算類指令是將數據進行邏輯運算,例如與、或、邏輯移位等操作。控制轉移類指令是控制程序執(zhí)行的順序,其中的跳轉及調用指令能夠靈活的控制指令運行的方式。位操作類指令是對可尋址位的內容進行操作,包括位傳送、及位邏輯操作等。第3章C51語言編程基礎學習目標(1)了解C51編程的一般設計流程。(2)掌握C51程序設計的基本方法。學習重點和難點(1)C51的數據類型、存儲器類型和存儲模式。(2)C51的函數定義及使用方法。(3)C51指針的使用。3.1單片機的C51基礎知識(1)對單片機的指令系統不要求了解,僅要求對8051的存儲器結構有初步了解;(2)寄存器分配、不同存儲器的尋址及數據類型等細節(jié)可由編譯器管理;(3)程序有規(guī)范的結構,可分成不同的函數,這種方式可使程序結構化;(4)提供的庫包含許多標準子程序,具有較強的數據處理能力;(5)由于具有方便的模塊化編程技術,使已編好程序容易移植;3.1.2C51的基本數據類型1.char字符類型無符號字符類型unsignedchar有符號字符類型signedchar,默認值為signedchar類型。2.int整型有符號int整型數signedint無符號整型數unsignedint,默認值為signedint類型3.long長整型有符號long長整型signedlong無符號長整型unsignedlong,默認值為signedlong類型4.float浮點型5.bit位變量6.sfr特殊功能寄存器,例如:sfrP1=0x907.sfr1616位特殊功能寄存器8.sbit可尋址位sfrP1=0x90;//因P1端口的寄存器是可位尋址的,所以能定義sbitP1_1=P1^1;//P1_1為P1中的P1.1引腳3.1.3存儲器類型存儲器類型描述data直接尋址內部數據存儲器,訪問變量速度最快(128bytes)bdata可位尋址內部數據存儲器,允許位與字節(jié)混合訪問(16bytes)idata間接尋址內部數據存儲器,可訪問全部地址空間(256bytes)pdata分頁(256bytes)外部數據存儲器,由操作碼MOVX@Ri訪問xdata外部數據存儲器(64KB),由MOVX@DPTR訪問code代碼數據存儲器(64KB),由MOVC@A+DPTR訪問3.1.4存儲器模式存儲器模式描述SMALL參數及局部變量放入可直接尋址的內部寄存器(最大128bytes128bytes,默認存儲器類型是DATA)COMAPCT參數及局部變量放入分頁外內部存儲區(qū)(最大256bytes256bytes,默認存儲器類型是PDATA)LARGE參數及局部變量直接放入外部數據存儲器(最大64K64K,默認存儲器類型是XDATA)3.1.5C51常量1.整型常量能表示為十進制如123、0、-89等。十六進制則以0x開頭如0x34、-0x3B等。長整型就在數字后面加字母L,如104L、034L等。2.浮點型常量可分為十進制和指數表示形式。如0.888,3345.345,0.0等如125e3,7e9,-3.0e-33.字符型常量是單引號內的字符,如‘a’,‘d’等,4.字符串型常量由雙引號內的字符組成,如“test”,“OK”等。5.位常量,它的值是一個二進制數。3.2C51的基本運算1.算術運算符+加A=x+y-減B=x-y*乘C=x*y/除D=x/y%取余數E=x%y2.關系運算符符號功能范例說明==相等x==y比較x與y變量的值,相等則結果為1,不相等則為0!=不相等x!=y比較x與y變量的值,不相等則結果為1,相等則為0>大于x>y若x變量的值大于y變量的值,其結果為1,否則為0<小于x<y若x變量的值小于y變量的值,其結果為1,否則為0>=大等于x>=y若x變量的值大于或等于y變量的值,其結果為1,否則為0<=小等于x<=y若x變量的值小于或等于y變量的值,其結果為1,否則為03.邏輯運算符符號功能范例說明&&及運算(x>y)&&(y>z)若x變量的值大于y變量的值,且y變量的值也大于z變量的值,其結果為1,否則為0||或運算(x>y)||(y>z)若x變量的值大于y變量的值,或y變量的值大于z變量的值,其結果為1,否則為0!反相運算!(x>y)若x變量的值大于y變量的值,其結果為0,否則為14.位運算符符號 功能 范例& 及運算 A=x&y| 或運算 B=x|y^ 異或 C=x^y~ 取反 D=~x<< 左移 E=x<<n>> 右移 F=x>>n5.遞增/減運算符符號功能范例說明++加1x++將x變量的值加1--減1x--將x變量的值減13.3C51的程序設計基礎1.while循環(huán)語句的格式如下:While(表達式){語句;}2.for循環(huán)語句for語句是一個很實用的計數循環(huán),其格式如下:格式:for(表達示1;表達示2;表達示3) { 語句;}3.if選擇語句if-else語句提供條件判斷的語句,稱為條件選擇語句,其格式如下:if(表達式){ 語句1;}else{ 語句2;}4.多分支條件語句和開關語句
(1)多分支語句格式如下:if(條件表達式1)語句1elseif(條件表達式2)語句2…elseif(條件表達式m)語句m…elseif(條件表達式n)語句nelse語句p4.多分支條件語句和開關語句
(2)開關語句switch(表達式){case常量1:語句1break;case常量2:語句2break;…case常量m:語句mbreak;…case常量n:語句nbreak;default:語句p}5.其它語句(1)絕對跳轉語句:gotogoto標號;(2)返回語句:returnreturn(表達式或變量);(3)退出語句:break和continue
3.3.2數組unsignedintxcount[10];//定義無符號整形數組,有10個數據單元charinputstring[5];//定義字符形數組,有5個數據單元floatoutnum[10],[10];//定義浮點型數組,有100個數據單元表3-10數組定義數據類型數組名[常量表達式];數據類型數組名[常量表達式1]......[常量表達式N];
3.3.2指針用一個變量來存放另一個變量的地址,那么用來存放變量地址的變量稱為“指針變量”變量的指針就是變量的地址,用取地址運算符‘&’取得賦給指針變量。&STR就是把變量STR的地址取得。要訪問變量STR除了能用‘STR’這個變量名來訪問之外,還能用變量地址來訪問。方法是先用&STR取變量地址并賦于STRIP指針變量,然后就能用*STRIP來對STR進行訪問了?!?’是指針運算符,用它能取得指針變量所指向的地址的值。
3.4C51的函數1.函數的定義函數定義格式如下:返回值的數據類型函數名(形參變量1說明,。。。,形參變量n說明){局部變量定義函數體語句返回語句}void函數名(void){函數體語句}2.主函數voidmain(void){語句}3.中斷函數voidT0_interrupt(void)interrupt1中斷源名稱中斷號外部中斷INT00定時器/計數器T0中斷1外部中斷INT12定時器/計數器T1中斷3串行口中斷UART4定時器/計數器T2中斷T5在main函數里調用TwoDataAdd函數:voidmain(void){chara,b;intc;a=38;b=99;c=TwoDataAdd(a,b);}4.庫函數函數庫對應的頭文件功能字符函數CTYPE.H與ASKII碼表相關一般I/O函數STDIO.H與UART相關字符串函數STRING.H字符串的截取、查找、比較等標準函數STDLIB.H字符串與數字之間的轉換數學函數MATH.H求絕對值、平方開方、三角函數絕對地址訪問ABSACC.H絕對地址訪問內部函數INTRINS.H只有_NOP_()函數有用,相當于匯編里的NOP變量參數表STDARG.H不用全程跳轉SETJMP.H不用SFR訪問REG51/52.H特殊功能寄存器聲明5.函數的調用voidmain(void){chara,b;intc;a=38;b=99;c=TwoDataAdd(a,b);}變量a、b叫實參,調用TwoDataAdd()函數時,實參a、b的值分別傳遞給形參FirstData和SecondData,用變量c接收函數的返回值。值傳遞的點是,在函數調用結束后,實參仍舊保持原來的值,即a=38、b=99,而形參被釋放?!纠?-1】寫出一個完整的調用子函數的例子,用單片機控制一個LED燈閃爍發(fā)光。用P1口的第一個引腳控制一個LED燈,1秒鐘閃爍一次。#include<reg52.h>//頭文件#defineuintunsignedint//宏定義sbitD1=P1^0;//聲明單片機P1口的第一位uintx,y;voidmain(){ while(1)//大循環(huán) { D1=0;//點亮第一個發(fā)光二極管 for(x=500;x>0;x--) for(y=110;y>0;y--); D1=1;//關閉第一個發(fā)光二極管 for(x=500;x>0;x--) for(y=110;y>0;y--); }}#include<reg52.h>//頭文件#defineuintunsignedint//宏定義sbitD1=P1^0;//聲明單片機P1口的第一位voiddelay();//聲明子函數voidmain(){ while(1)//大循環(huán) { D1=0;//點亮第一個發(fā)光二極管 delay();//延時500毫秒 D1=1;//關閉第一個發(fā)光二極管 delay();//延時500毫秒 }}
voiddelay()//延時子程序延時約500毫秒{ uintx,y; for(x=500;x>0;x--) for(y=110;y>0;y--);}【例3-3】調用子函數的例子,用單片機控制一個LED燈閃爍發(fā)光。用P1口的第一個引腳控制一個LED燈,讓它亮500ms,滅800ms。#include<reg52.h>//頭文件#defineuintunsignedint//宏定義sbitD1=P1^0;//聲明單片機P1口的第一位voiddelay(uintz);//聲明子函數voidmain(){ while(1)//大循環(huán) { D1=0;//點亮第一個發(fā)光二極管 delay(500);//延時500毫秒 D1=1;//關閉第一個發(fā)光二極管 delay(800);//延時800毫秒 }}voiddelay(unsignedintz)//延時子程序延時約500毫秒{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}本章小結C51是面向51系列單片機所使用的程序設計語言,使MCS-51單片機的軟件具有良好的可讀性和可移植性。具有操作直接、簡潔和程序緊湊的優(yōu)點,為大多數51單片機實際應用最為廣泛的語言。C51編譯器常用的數據類型有字符型、整型、長整型、浮點型、位型和指針型。任何數據都要以一定的存儲器類型定位到單片機的存儲區(qū)中,如用戶未做定義,則依據系統默認存儲器類型進行存儲。第4章MCS-51單片機程序設計方法學習目標(1)掌握單片機程序設計的步驟和方法。(2)掌握匯編語言源程序的指令格式和常用偽指令的基本功能。(3)掌握C51語言源程序的基本結構和常用預處理指令的基本功能。學習重點和難點(1)匯編語言源程序和C51語言源程序編寫方法(2)偽指令與執(zhí)行指令的區(qū)別和使用方法(3)預處理指令的功能及使用方法4.1程序編制的步驟、方法和技巧4.1.1程序編制的步驟1、任務分析2、算法設計3、程序流程設計4、源程序編輯和編譯5、程序調試常用的流程圖符號“超級循環(huán)”結構4.1.2編制程序的方法和技巧一、模塊化程序設計方法采用模塊化程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年商丘市夏邑縣招聘專職消防員筆試真題
- 建筑工程外包成本控制措施
- 初中英語作文提升計劃與范文分享
- 小學四年級數學下冊教學計劃的創(chuàng)新思路
- 2025年法拍房屋拍賣價格協商合同
- 幼兒園秋季運動會活動計劃
- 二零二五年度紅棗種植基地與加工企業(yè)聯營合同
- 二零二五年度教育機構職業(yè)經理人教育教學聘用協議
- 2025年喹吖啶酮類合作協議書
- 二零二五年度合伙經營韓式料理餐廳合同
- 林木林地權屬爭議處理申請書
- 阿里云+跨國企業(yè)上云登陸區(qū)(Landing+Zone)白皮書
- 家鄉(xiāng)鹽城城市介紹江蘇鹽城介紹課件
- 市政工程施工安全檢查標準
- 銀行整村授信工作經驗材料工作總結匯報報告2篇
- 四川事業(yè)單位工作人員收入分配制度改革實施意見
- 陜西省2023第二屆長安杯大中小學國家安全知識競賽題庫及答案
- 基建礦井應急救援預案之綜合應急預案匯編(完整版)資料
- GA/T 830-2021尸體解剖檢驗室建設規(guī)范
- 《PEP英語六年級下冊Unit3Readandwrite》東城虎英小學王曉惠
- GB/T 3778-2021橡膠用炭黑
評論
0/150
提交評論