版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機與嵌入式系統(tǒng)實驗指導(dǎo)書趙學(xué)軍計算機系自控實驗室2006年5月刖訂2實驗一、輸入輸出接口編程3實驗二、鍵盤與顯示編程5實驗三、定時與計數(shù)器編程6實驗四、外部中斷的編程7實驗五、模數(shù)轉(zhuǎn)換與數(shù)據(jù)采集8實驗六、模數(shù)轉(zhuǎn)換與信號發(fā)生9實驗七、串行通訊編程10實驗八、電子鐘程序設(shè)計11實驗九、簡單計算器程序設(shè)計12嵌入式系統(tǒng)的在電子產(chǎn)品中得到廣泛的應(yīng)用,其硬件以單片機或嵌入式微處理器為 核心進(jìn)行設(shè)計。常用的單片機有:MCS51系列、AT90系列、PIC系列、68HC系列、MSP430系列、C8051F系列;常用嵌入式微處理器有:X86系列、68000、ARM7、ARM9 等。在低端電子產(chǎn)品開發(fā)中,MC
2、S51系列有著廣泛的軟硬件資源,低檔有 MCS51系列 價格低廉,高檔C8051F系列性能達(dá)到8951的50倍,接近ARM7的性能。在高端電子 產(chǎn)品開發(fā)中,ARM7、ARM9內(nèi)核的嵌入式微處理器為主流,ARM7系列價格適中,得 到廣泛于網(wǎng)絡(luò)通訊、信息家電、數(shù)碼產(chǎn)品、工業(yè)控制等領(lǐng)域。在軟件設(shè)計開發(fā)中,用匯 編語言和C語言進(jìn)行程序設(shè)計,一般簡單軟件設(shè)計中采用前后臺的程序結(jié)構(gòu),在復(fù)雜軟件設(shè)計中要以嵌入式實時RTOS為平臺,以簡化程序設(shè)計提高開發(fā)效率。我們用的開發(fā)裝置是周立功 DP51PROC單片機綜合仿真實驗儀,支持ASM語言和 C語言的編程,提供了數(shù)碼管顯示、圖形 LCD顯示、鍵盤、發(fā)光二極管、撥
3、動開關(guān)、 串行A/D、串行D/A等硬件資源;能進(jìn)行I2C接口、USB接口、CAN總線、RS485 RS232串行、紅外等計算機通信實驗;實驗前一定要進(jìn)行全面的預(yù)習(xí),畫出程序框圖并編寫出程序,作為預(yù)習(xí)報告進(jìn)行檢 查,在預(yù)習(xí)的基礎(chǔ)上進(jìn)行實驗,才能得到滿意的收獲。鼓勵同學(xué)們自學(xué)單片機 C語言來 完成本實驗。實驗一、輸入輸出接口編程、實驗?zāi)康?掌握單片機的開發(fā)工具的使用。2、掌握單片機基本I/O 口的編程二、實驗內(nèi)容1單片機的開發(fā)過程學(xué)習(xí)單片機實驗儀的一般操作,在開發(fā)環(huán)境下練習(xí)單片機ASM語言或C語言程序的錄入、編譯、下載、執(zhí)行和調(diào)試等過程。2、霓虹燈控制程序用P1 口控制8個LED,按P3 口輸入信
4、號的不同模式選擇4種16次循環(huán)點亮方式, 用軟件延時實現(xiàn)1秒的掃描周期。三、實驗原理單片機的P0P3為雙向端口,每一位都可以獨立地定義為輸入或輸出, 在作輸入時 必須先向該位寫“1”,該位才能作為輸入。本實驗中要實現(xiàn)循環(huán)輸出,最常用的方法是循環(huán)計數(shù)實現(xiàn)循環(huán)次數(shù)控制,對計數(shù)器 值進(jìn)行查表轉(zhuǎn)換得出輸出值,輸出到 P1 口進(jìn)行顯示,“ 0”表示燈亮,“ 1”表示燈滅。本實驗中的延時,用軟件延時方法產(chǎn)生,延時時間 二程序總機器周期數(shù)*循環(huán)次數(shù), 機器周期。實驗程序框圖如下:輸出表格確定發(fā)光模式,實驗中定義表格如下:TAB1: DB 01H,03H,02H,06H,04H,0CH,08H,18HTAB2
5、: DB 01H,02H,04H,08H,10H,20H,40H,80HTAB3: DB 80H,40H,20H,10H,08H,04H,02H,01H,TAB4: DB用戶自己定義輸入信號使用P3 口的2個位,如P3.0和P3.1,可以確定4種模式 四、實驗預(yù)習(xí)1學(xué)習(xí)匯編語言編程的有關(guān)知識2、提前編寫程序,寫出預(yù)習(xí)報告五、實驗報告1總結(jié)出實驗的詳細(xì)步驟。2、寫出調(diào)試正確的程序及框圖*參考程序ORG 0000HLP:MOV P1,#0FFHSETB P3.0SETB P3.1;P1,P3.0,F(xiàn)LP0:MOV R7,#8MOV R4,#0;置旋環(huán)次數(shù)LP1:LCALL GETDPTR;判斷取何
6、表值MOV A,R4MOVC A,A+DPTRCPL A;查表MOV P1,AINC R4LCALL DELAY1DJNZ R7,LP1SJMP LP0;送 P1 口;(250);延時一秒DELAY1: MOV R5,#250復(fù)位LL1:LCALL DELAY0LCALL DELAY0DJNZ R5,LL1RETDELAY0: MOV R6,#250LL0:NOPNOPJNZ R6,LL0RETGETDPTR:MOV A,P3ANL A,#03HL0:JNZ L1MOV DPTR,#TAB1RET;P3.1P3.0=00 的情況L1:CJNE A,#01H ,L2MOV DPTR,#TAB2R
7、ET;P3.1P3.0=01 的情況L2:CJNE A,#02 H,L3MOV DPTR,#TAB3RET;P3.1P3.0=10 的情況的情況RETTAB1:DB 03H,06H,0CH,18H,30H,60H,0C0H,81HTAB2:DB 01H,02H,04H,08H,10H,20H,40H,80HTAB3:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FHTAB4:DB 80H,40H,20H,10H,08H,04H,02H,01HEND實驗二、鍵盤與顯示編程、實驗?zāi)康?、熟悉ZLG7290芯片的接口和編程2、掌握鍵盤與數(shù)碼管顯示程序的設(shè)計二、實驗內(nèi)容
8、設(shè)計單片機程序,讀取鍵盤的按鍵值(鍵值為116),并將鍵值在數(shù)碼管上以10進(jìn) 制進(jìn)行顯示。三、實驗原理數(shù)碼管動態(tài)掃描顯示的基本原理是,單片機依次向每個數(shù)碼管發(fā)出段選碼和對應(yīng)的 位選碼,對數(shù)碼管逐個循環(huán)點亮,選擇適當(dāng)?shù)膾呙杷俣?,利用人眼的視覺暫留效應(yīng),使 得雖然每個時刻只有一個數(shù)碼管在顯示,但得看上去好像同時顯示,動態(tài)掃描在定時中 斷中調(diào)用,以保證準(zhǔn)確的掃描速度。需要顯示的數(shù)字必須先進(jìn)行譯碼變成能顯示的段碼 才能進(jìn)行顯示,譯碼可以通過查表來實現(xiàn)。鍵盤掃描的基本原理是,首先進(jìn)行判斷掃描,如有鍵被按下則進(jìn)行讀鍵掃描,確定 被按下鍵的鍵值。判斷掃描過程為,在列線全輸出低電平,讀行線是否全為高電平,如
9、不全為高電平則表明有鍵被按下。讀鍵掃描過程為,列線逐列輸出低電平,同時檢測行 線的電平,如其中有低電平時,表明當(dāng)位于前行列位置上的鍵被按下,然后由行和列確 定鍵值。在按鍵處理操作中,鍵被按下再被釋放為一次按鍵操作,另外還進(jìn)行鍵盤去抖 動處理,用軟件延時方法解決。ZLG7290是I2C接口的鍵盤與數(shù)碼管顯示,接口如下圖2.1所示,可以管理8個數(shù)碼管和64個按鍵,具有自動譯碼和鍵盤掃描功能,相關(guān)命令參考有關(guān)資料。四、電路接線圖四、實驗預(yù)習(xí)1學(xué)習(xí)有關(guān)數(shù)碼管掃描顯示和鍵盤掃描的知識。2、學(xué)習(xí)有關(guān)I2C接口協(xié)議和ZLG7290芯片的知識3、提前編寫程序,寫出預(yù)習(xí)報告。五、實驗報告1總結(jié)出實驗的詳細(xì)步驟2
10、、寫出調(diào)試正確的程序及框圖;+RSTBITP1.0;復(fù)位 ZLG7290SDABITP1.1;I2C總線數(shù)據(jù)SCLBITP1.2;I2C總線時鐘KEYBITP1.3;鍵盤中斷ACKBIT10H;應(yīng)答標(biāo)志位ZLG7290EQU70H;ZLG7290的器件地址MTDEQU40H;發(fā)送數(shù)據(jù)緩沖器MRDEQU49H;接收數(shù)據(jù)緩沖器SLADATA50H;器件的從地址SUBADATA 51H;器件的子地址NUMBYTEDATA52H ;讀/寫的字節(jié)數(shù)變量ORG0000H;復(fù)位地址LJMPMAINORG0030H;主程序MAIN:MOVSP,#60HCLRRST;ZLJ7290 復(fù)位LCALLDELAY ;
11、延時子程序SETB RSTWAIT:JB KEY, NEXTLCALL SCANKEYNEXT:MOV R0,#0MOV R1,MRD;等待按鍵;調(diào)用按鍵讀取程序;數(shù)碼管位置;顯示內(nèi)容;調(diào)用顯示子程序;將按鍵的數(shù)值變?yōu)镾JMP WAIT$INCLUDE(VI2C_AS M.INC) $INCLUDE(ZLG7290NC)10進(jìn)制進(jìn)行顯示;包含VIIC軟件包;包含ZLG7290軟件包LCALL DISPLAY 在此添加程序完成如下要求的功能實驗三、定時器/計數(shù)器編程、實驗?zāi)康?、掌握定時器的基本編程方法。2、掌握計數(shù)器的基本編程方法。二、實驗內(nèi)容設(shè)計單片機程序,用T0作定時器產(chǎn)生周期為1秒的方波
12、在P3.0輸出,以邏輯筆進(jìn) 行指示,用T1作計數(shù)器對該脈沖進(jìn)行計數(shù)并在 LED上顯示。三、實驗原理當(dāng)晶振為12M時機器周期為1微秒,要實現(xiàn)500毫秒的定時,需要500000個機器 周期,對于51單片機內(nèi)部定時器來說,最大只能定時65536個機器周期,能定時65.535 毫秒,不能滿足要求,為此必須借助軟件循環(huán)進(jìn)行擴展,當(dāng)中斷定時為10毫秒時,擴展50倍可得到500毫秒的定時,當(dāng)?shù)竭_(dá)500毫秒時,在輸出P3.0輸出一個脈沖信號。讓T1工作于計數(shù)器模式,就可以對外部引腳 P3.5的脈沖進(jìn)行計數(shù),所以將 P3.5 與P3.0相連,能對P3.0進(jìn)行計數(shù)。對計數(shù)值進(jìn)行顯示需要讀出T1的計數(shù)值,送到LED
13、 上顯示。有關(guān)定時計數(shù)器的特殊功能寄存器,請參考課本。四、實驗預(yù)習(xí)1、學(xué)習(xí)有關(guān)定時器和計數(shù)器的知識2、提前編寫程序,寫出預(yù)習(xí)報告五、實驗報告1、總結(jié)出實驗的詳細(xì)步驟2、寫出調(diào)試正確的程序及框圖:+MAIN:DISP:ORG0000HAJMPMAINORG000BHAJMPIINT0ORG0030HMOVR4,#00HMOVR6,#10MOVTMOD,#61HMOVTL0,#LOW(-50000)MOVTH0,#HIGH(-50000)MOVIE,#82HSETBTR0MOVTL1,#0MOVTH1,#0SETBTR1MOVA,TL1CPL AMOV P1,ASJMP DISPIINT0:PUS
14、H ACCPUSH PSWMOV TL0,#LOW(-50000)MOV TH0,#HIGH(-50000)DJNZ R6,LOOP3CPL P3.0MOV R6,#10LOOP3:POP PSWPOP ACCRETIEND實驗四、外部中斷的編程、實驗?zāi)康?掌握外部中斷的基本編程方法。2、掌握計數(shù)器的擴展編程。二、實驗內(nèi)容設(shè)計單片機程序,基于TO用定時中斷設(shè)計秒表,秒計數(shù)結(jié)果在 LED上輸出,用外 部中斷INTO (邊沿觸發(fā)方式)對秒計數(shù)結(jié)果進(jìn)行清零,用外部中斷 INT1 (邊沿觸發(fā)方 式)對秒計數(shù)進(jìn)行啟動和停止控制。三、實驗原理TO定時中斷50毫秒,進(jìn)行20次中斷得到1秒的定時,秒計數(shù)結(jié)果送
15、P1 口進(jìn)行LED 顯示,將外部中斷設(shè)置成邊緣觸發(fā)方式。P1 口接 LED ;P3.0 接 SW1 ;P3.2 接 K1 ;四、實驗預(yù)習(xí)1、學(xué)習(xí)外部中斷的有關(guān)知識。2、提前編寫程序,寫出預(yù)習(xí)報告。五、實驗報告1、總結(jié)出實驗的詳細(xì)步驟。2、寫出調(diào)試正確的程序及框圖;+SECDATA30HRUNBITP3.0ORG0000HAJMPMAIN0003HORGMOVRETIORGAJMPORGMAIN:MOVMOVSETBMOVMOVSEC,#0000BHIINT00030HSP,#60HR6,#20RUNTMOD,#01HTL0,#L0W(-50000)MOV TH0,#HIGH(-50000)MO
16、VSETBSETBIE, #10000011BIT0TR0MOVA,SECCPLAMOVP1,ASJMPLOOP0PUSH ACCPUSHPSWMOVTL0, #LOW(-50000)MOVTH0, #HIGH(-50000)DJNZR6, LOOP3MOVR6, #20JNBRUN, LOOP3 ;RUNINCSECPOPPSWPOPACCRETIENDLOOPO:IINTO:LOOP3:、實驗?zāi)康?、掌握2、掌握實驗五、模數(shù)轉(zhuǎn)換A/D轉(zhuǎn)換與單片機的接口方法;A/D芯片TLC549的編程方法;3、掌握數(shù)據(jù)采集程序的設(shè)計方法;二、實驗內(nèi)容利用實驗開發(fā)裝置上的 TLC549做A/D轉(zhuǎn)換器,對電位
17、器提供的模擬電壓信號進(jìn)行定時中斷采樣, 結(jié)果在LED上進(jìn)行顯示。時鐘位 數(shù)據(jù)位 選片位A/D 轉(zhuǎn)換芯片TLC549CLK P1.5DAT P1.6CS P1.7VREF 接 +5V三、實驗線路將TLC549的CLK接P1.5、DAT接P1.6、CS接P1.7,將模擬電壓輸入端連到電位器的電壓輸出端,并接萬用表進(jìn)行輸入電壓測量。四、實驗步驟在PC機輸入源程序并匯編,然后下載到單片機上,進(jìn)行調(diào)試。調(diào)節(jié)電位器,電壓從 0V到5V變化,記錄數(shù)碼管的顯示數(shù)值。記錄到表中。輸入電壓V00.511.522.533.544.55A/D結(jié)果五、實驗報告(1) 整理好實驗程序和實驗記錄,進(jìn)行數(shù)據(jù)處理分析并做圖。(
18、2) 數(shù)據(jù)采集中,如何實現(xiàn)精確的定時數(shù)據(jù)采集?(3) 數(shù)碼管動態(tài)掃描顯示程序設(shè)計中,顯示刷新的時間如何確定?;+CSBITP3.0DATBITP3.1CLKBITP3.2ADCDATA30HORG0000HMAIN:MOVSP,#60HWAIT:ACALL TLC549LCALLDELAYACALL TLC549;讀取上次ADCMOVA,ADCCPLAMOVP1,ASJMPWAITTLC549:CLRCLKCLRCS;選中 TLC549MOVR6,#8TLCAD:SETBCLKMOVC,DAT值,并再次啟動AD轉(zhuǎn)換RLCCLRCLK;DAT = 0,為讀出下一位數(shù)據(jù)作準(zhǔn)備DJNZSETBSET
19、BR6,TLCADCS;禁能TLC549,再次啟動 AD轉(zhuǎn)換CLKMOVADC,ARETDELAY:MOV R7,#250DJNZ R7,$RETEND實驗六、模數(shù)轉(zhuǎn)換、實驗?zāi)康?掌握模數(shù)轉(zhuǎn)換芯片2、掌握模數(shù)轉(zhuǎn)換芯片TLC5620的接口技術(shù)。TLC5620的編程方法。、實驗內(nèi)容編寫程序?qū)崿F(xiàn)下列要求:1、通過SW輸入8位數(shù)值,由TLC5620變?yōu)槟M電壓輸出,記錄數(shù)值與對應(yīng)的對應(yīng)關(guān)系。2、 利用TLC5620輸出一個從0V開始逐漸升至5V再降至0V ,周期為1秒的三角波。三、實驗線路將TLC5620的信號線接到相應(yīng)的端口,在OutA、OutB、OutC、OutD、輸出0-5V電壓接萬用表。D/A
20、 芯片 TLC5620LDAC接 GND;LOAD接 P3A0;裝載CLK接 P3A1;時鐘DAT接 P3A2;數(shù)據(jù)Vref接+5V;4 -4y. 參考四、實驗預(yù)習(xí)1、學(xué)習(xí)模數(shù)轉(zhuǎn)換的原理與編程2、提前編寫程序,寫出預(yù)習(xí)報告 五、實驗報告1、總結(jié)出實驗的詳細(xì)步驟。2、寫出調(diào)試正確的程序及框圖;+SCLBITP3.0SDABITP3.1LOADBITP3.2DACDATA30HNUMDATA31HORG0000HMOVSP,#60HCLRSCLCLRSDASETBLOADMOVP1,#0FFHMOVA,P1MOVDAC,AMOVNUM,#0LCALLDAC5620MAIN:WAIT:SJMP WA
21、ITDAC5620: MOV A,R1CLR SCLMOV A,NUMLCALL SENDADMOV A,R2CLR SCLMOV A,DACLCALL SENDDBCLR LOADSETB LOADRETSENDDB: MOV R7,#8LPDB:SETB SCLRLC AMOV SDA,CCLR SCLDJNZR7,L PDBRETSENDAD: MOV R7,#3SETB CRLC ALPAD:SETB SCLRLC AMOV C,ACC.3MOV SDA,CCLR SCLDJNZ R7,L PADRETEND實驗七、串行通訊編程一、實驗?zāi)康膯纹瑱C的串行通訊編程方法。二、實驗內(nèi)容編寫程序
22、,設(shè)置單片機與 PC機之間通訊波特率為4800BPS,要求單片機將PC機 發(fā)送來的數(shù)據(jù)在通過P1 口在LED上顯示,同時不斷將該數(shù)字傳送給 PC機。三、實驗原理實現(xiàn)串行通訊要求通訊雙方有共同的通訊協(xié)議,如波特率、編碼方式、楨格式、物 理媒質(zhì)等。在近板內(nèi)通訊直接用TTL電平,近距離的通訊中用RS232,中等距離用RS485 或 CAN。四、實驗步驟五、實驗預(yù)習(xí)1學(xué)習(xí)串行通訊的原理與編程2、提前編寫程序,寫出預(yù)習(xí)報告。六、實驗報告1總結(jié)出實驗的詳細(xì)步驟。2、寫出調(diào)試正確的程序及框圖。七、附加要求要求改為多機通訊,請編程實現(xiàn)。;+DAT DATA30HSOK BIT OOHORG 0000HLJMP
23、 MAINORG 0023HLJMP UARTORG 0050HMAIN:MOV IE,#10010000BMOV SP,#60HMOV TMOD,#21HMOV SCON,#50HMOV PCON,#80HMOV TH1,#-13;12MHZ/4800SETB TR1MOV DAT,#AWAIT:CLR SOKMOV SBUF,DA TJNB SOK,$LCALL DELAYSJMP WAITUART:PUSH ACCPUSH PSWJNB RI,NEXTMOV A,SBUFMOV DAT,AMOV P1,ANEXT:MOV C,TIMOV SOK,CCLR TIPOP PSWPOP ACC
24、RETIDELAY:MOV R6,#250DEL:MOV R7,#250DJNZ R7,$DJNZ R6,DELRETEND實驗八、電子鐘程序設(shè)計一、實驗?zāi)康?、掌握嵌入式系統(tǒng)的程序設(shè)計與調(diào)試。2、掌握鍵盤處理程序的設(shè)計。二、實驗內(nèi)容設(shè)計單片機程序,實現(xiàn)時、分、秒時鐘,在數(shù)碼管上顯示,并能用鍵盤對時鐘進(jìn)行 調(diào)整。三、實驗原理實時時鐘在測控應(yīng)用中很常見,可以用專用時鐘芯片實現(xiàn),也可以用機內(nèi)定時器編 程實現(xiàn),在本實驗中要求用定時器中斷實現(xiàn),在10毫秒定時的基礎(chǔ)上進(jìn)行擴展,依次實現(xiàn)秒、分、時的時間,在6個數(shù)碼管上進(jìn)行顯示。顯示掃描程序仍然要在定時中斷中 進(jìn)行調(diào)用,在顯示掃描程序負(fù)責(zé)將內(nèi)存中顯示緩沖區(qū)
25、的段碼數(shù)據(jù)依次送出顯示。對時間的修改,依靠鍵處理程序?qū)崿F(xiàn),可以定義功能鍵與數(shù)字鍵配合使用,數(shù)字鍵 為09,功能鍵為設(shè)時鍵、設(shè)分鍵、設(shè)秒健和確認(rèn)鍵。按相應(yīng)的功能鍵后進(jìn)入設(shè)定狀態(tài), 用鍵盤輸入數(shù)值,按確認(rèn)鍵將結(jié)果寫入,并返回時鐘顯示狀態(tài)。該程序的設(shè)計思想是,在定時中斷中完成數(shù)碼管掃描顯示,在主程序中完成鍵盤掃 描與鍵處理,與顯示配合實現(xiàn)時鐘的修改。四、實驗預(yù)習(xí)1、學(xué)習(xí)嵌入式軟件的程序結(jié)構(gòu)2、提前編寫程序,寫出預(yù)習(xí)報告五、實驗報告1總結(jié)出實驗的詳細(xì)步驟。2、寫出調(diào)試正確的程序及框圖六、附加要求在6個按鍵時如何設(shè)計鍵盤處理程序,定義 加1鍵、減1鍵、設(shè)時鍵、設(shè)分鍵、設(shè) 秒健和確認(rèn)鍵。;+SDABITP
26、1.0;I2C總線定義SCLBITP1.1KEYBITP1.2ACKBIT10H;應(yīng)答標(biāo)志位ZLG7290EQU70H;ZLG7290的器件地址MTDEQU40H;發(fā)送數(shù)據(jù)緩沖器MRDEQU49H;發(fā)送數(shù)據(jù)緩沖器SLADATA50H;器件的從地址SUBADATA51H;器件的子地址NUMBYTEDATA52H;讀/寫的字節(jié)數(shù)變量SECDATA55HMINDATA56HHOURDATA57HTIMDATA58HLEDBITP1.7ORG0000HLJMPMAINORG000BHAJMPIINT0ORG0030HMOVSP,#70HMOVTMOD,#61HMOVIE,#82HMOVTL0,#LOW
27、(-50000)MOVTH0,#HIGH(-50000)SETBTR0MOVTIM,#20MOVSEC,#20MOVMIN,#58MOVHOUR,#23MAIN:WAIT:JB KEYQISPLCALL SCANKEY;調(diào)用按鍵讀取程序LCALL KEYPROCDISP:MOVA,SECMOVB,#10DIVABMOVR0,#1MOVR1,ALCALL DISPLAYMOVR0,#0MOVR1,BLCALL DISPLAYMOVA,MINMOVB,#10DIVABMOVR0,#4MOVR1,ALCALL DISPLAYMOVR0,#3MOVR1,BLCALL DISPLAYMOVA,HOURM
28、OVB,#10DIVABMOVR0,#7MOVR1,ALCALL DISPLAYMOVR0,#6MOVR1,BLCALL DISPLAYSJMPWAITKEYPROC:MOVA,MRDKEY1:CJNEA,#8,KEY2INCSECRETIKEY2:CJNEA,#16,KEY3DECSECRETKEY3:CJNEA,#4,KEY4INCMINRETKEY4:CJNEDECRETA,#12,KEY5MINKEY5:CJNEA,#1,KEY6INCHOURRETKEY6:CJNEA,#9,KEY7DECHOURKEY7:RETIINT0:PUSHACCPUSHPSWMOVTL0,#LOW(-500
29、00)MOVTH0,#HIGH(-50000)DJNZTIM,EXITMOVTIM,#20CPLLEDINCSECMOVA,SECCJNEA,#60,EXITMOVSEC,#0INCMINMOVA,MINCJNEA,#60,EXITMOVMIN,#0INCHOURMOVA,HOURCJNEA,#24,EXITMOVHOUR,#0EXIT:POPPSWPOPACCRETI;包含VIIC軟件包;包含7290軟件包$INCLUDE(VI2C_ASM.INC)$INCLUDE(ZLG729ONC)END;+;ZLG7290.INC;+;發(fā)送命令子程序SENDCMD:MOV SLA,#ZLG7290MO
30、V SUBA,#07HMOV NUMBYTE,#02HLCALL IWRNBYTERET;指定器件地址;指定子地址;發(fā)送2字節(jié)數(shù)據(jù);調(diào)用寫n字節(jié)數(shù)據(jù)程序;鍵盤掃描,讀鍵值程序SCANKEY:MOV SLA,#ZLG7290MOV SUBA,#01HMOV NUMBYTE,#01HLCALL IRDNBYTERET;指定器件地址;指定子地址;讀1字節(jié)數(shù)據(jù);調(diào)用讀n字節(jié)數(shù)據(jù)程序DELAY:DEL:DJNZDJNZRETDISPLAY: MOVADDMOVMOVMOV R4,#100MOV R5,#100R5,$R4,DELA,#60HA,R0MTD,AMTD+1,R1LCALL SENDCMDLC
31、ALL DELAYRET;+;VI2C_ASM.INC;+ ;啟動I2C總線子程序START:SETB SDANOPNOPNOP;起始條件建立時間大于4.7usSETB SCLNOPNOPNOPNOPCLR SDANOPNOPNOPNOPCLR SCLNOPNOPRET;結(jié)束總線子程序STOP:CLR SDANOPNOPNOPSETB SCLNOPNOPNOPNOPSETB SDANOPNOPNOPRET;發(fā)送應(yīng)答信號子程序MACK:CLRSDANOPNOPNOPSETBSCLNOPNOPNOPNOPCLRSCLNOPNOPNOPRET;發(fā)送非應(yīng)答信號MNACK:SETB SDANOPNOPN
32、OPSETBSCLNOPNOP;鉗住總線,準(zhǔn)備發(fā)數(shù)據(jù);發(fā)送結(jié)束條件的時鐘信號;結(jié)束總線;將SDA置0;將SDA置1;保持?jǐn)?shù)據(jù)時間,即SCL為高時間大于4.7usNOPNOPCLR SCLNOPNOPRET;檢查應(yīng)答位子程序;返回值,ACK=1時表示有應(yīng)答CACK:SETB SDANOPNOPNOPSETB SCLCLR ACKNOPNOPNOPNOPMOV C,SDAJC CENDSETB ACK;判斷應(yīng)答位CEND:NOPNOPCLR SCLNOPNOPRET;發(fā)送字節(jié)子程序;字節(jié)數(shù)據(jù)放入ACC;每發(fā)送一字節(jié)要調(diào)用一次 CACK子程序,取應(yīng)答位WRBYTE:MOVR0,#08HWLP:RLC
33、JCAWR1;取數(shù)據(jù)位SJMPWR0;判斷數(shù)據(jù)位WLP1:DJNZNOPNOPRETR0,WLPWR1:SETBNOPNOPSDA;發(fā)送1NOPSETB SCLNOP;發(fā)送0NOPNOPNOPCLRSCLSJMPWLP1WR0:CLRNOPSDASETBNOPNOPNOPNOPSCLCLRSCLSJMPWLP1;讀取字節(jié)子程序;讀出的值在ACC;每取一字節(jié)要發(fā)送一個應(yīng)答/非應(yīng)答信號RDBYTE:MOVR0,#08HRLP:SETBSDANOPNOPNOPSETBSCL;時鐘線為高,接收數(shù)據(jù)位NOP;+1NOP;+1NOP;+1NOP;+1MOVC,SDA;讀取數(shù)據(jù)位MOVA,R2CLRSCL;
34、將SCL拉低,時間大于4.7usRLCA;進(jìn)行數(shù)據(jù)位的處理MOVR2,ANOP;+1NOP;+1NOP;+1NOP;+1NOP;+1NOP;+1DJNZR0,RLP;未夠8位,再來一次RET以下是用戶接口子程序;無子地址器件寫字節(jié)數(shù)據(jù);入口參數(shù):數(shù)據(jù)為ACC、器件從地址SLA;占用:A、R0、CYIWRBYTE: PUSHACCIWBLOOP: LCALLSTART;起動總線MOVA,SLALCALLWRBYTE;發(fā)送器件從地址LCALLCACKJNBACK,RETWRB;無應(yīng)答則跳轉(zhuǎn)POPACC;寫數(shù)據(jù)LCALL WRBYTELCALL CACKLCALL STOPRETRETWRB: PO
35、P ACCLCALL STOPNUMBYTERET;無子地址器件讀字節(jié)數(shù)據(jù);入口參數(shù):器件從地址SLA;出口參數(shù):數(shù)據(jù)為ACC;占用:A、R0、R2、CYIRDBYTE: LCALLSTARTMOVA,SLA;發(fā)送器件從地址INCALCALLWRBYTELCALLCACKJNBACK,RETRDBLCALLRDBYTE;進(jìn)行讀字節(jié)操作LCALLMNACK;發(fā)送非應(yīng)信號RETRDB:LCALLSTOP;結(jié)束總線RET;向器件指定子地址寫 N字節(jié)數(shù)據(jù);入口參數(shù):器件從地址SLA、器件子地址SUBA、發(fā)送數(shù)據(jù)緩沖區(qū) MTD、發(fā)送字節(jié)數(shù);占用: A、R0、R1、R3、CYIWRNBYTE: MOVA,NUMBYTEMOVR3,ALCALLSTART;起動總線MOVA,SLALCALLWRBYTE;發(fā)送器件從地址LCALLCACKJNBACK,RETWRN;無應(yīng)答則退出MOVA,SUBA;指定子地址LCALLLCALL
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《護(hù)理康復(fù)評定上》課件
- 2021屆天津市楊村一中、寶坻一中等四校高一下學(xué)期期末聯(lián)考化學(xué)試題
- 《綜合醫(yī)院評審概述》課件
- 小學(xué)四年級數(shù)學(xué)小數(shù)加減法計算題練習(xí)卷
- 《汽車車型解析》課件
- 電焊管道焊接技術(shù)
- 美食烹飪行業(yè)調(diào)味技巧培訓(xùn)實踐
- 物流行業(yè)倉儲管理心得總結(jié)
- 電影院服務(wù)員的服務(wù)技巧
- 印刷行業(yè)采購工作心得
- DL∕T 821-2017 金屬熔化焊對接接頭射線檢測技術(shù)和質(zhì)量分級
- DL∕ T 1195-2012 火電廠高壓變頻器運行與維護(hù)規(guī)范
- 小學(xué)五年級英語語法練習(xí)
- NB-T32004-2018光伏并網(wǎng)逆變器技術(shù)規(guī)范
- 領(lǐng)導(dǎo)與班子廉潔談話記錄(4篇)
- 衡陽市耒陽市2022-2023學(xué)年七年級上學(xué)期期末語文試題【帶答案】
- 文庫發(fā)布:strata手冊
- 2024-2030年中國大棚蔬菜種植行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 旋挖鉆孔灌注樁施工技術(shù)規(guī)程
- 船舶安全??繀f(xié)議書
- 幼師課例分析報告總結(jié)與反思
評論
0/150
提交評論