欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      2018東南大學(xué)自動化學(xué)院微機實驗6、7實驗報告

      時間:2019-05-14 16:10:45下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《2018東南大學(xué)自動化學(xué)院微機實驗6、7實驗報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《2018東南大學(xué)自動化學(xué)院微機實驗6、7實驗報告》。

      第一篇:2018東南大學(xué)自動化學(xué)院微機實驗6、7實驗報告

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      東南大學(xué)

      《微機系統(tǒng)與接口(含實驗)》

      實驗報告

      實驗六

      8255 并行輸入輸出

      實驗七

      串行通信

      名:

      學(xué)

      號:

      08

      業(yè):

      實 驗 室:

      金智樓516

      實驗時間: 2018年05月08日

      報告時間: 2018年06月03日

      評定成績:

      審閱教師:

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      一.實驗?zāi)康呐c內(nèi)容

      1.實驗?zāi)康模?/p>

      (1)掌握 8255 方式 0 的工作原理及使用方法,利用直接輸入輸出進(jìn)行控制顯示;(2)掌握 8 段數(shù)碼管的動態(tài)刷新顯示控制;

      (3)分析掌握 8255 工作方式1時的使用及編程,進(jìn)一步掌握中斷處理程序的編寫。(4)了解串行通信的基本原理,認(rèn)識串行收發(fā)過程;(5)掌握串行接口芯片 8251 的工作原理和編程方法。

      2.實驗內(nèi)容:

      (1)實驗六 8255 并行輸入輸出

      基本實驗內(nèi)容和要求 1)8255方式0:簡單輸入輸出

      實驗電路如圖3.7-1,8255C口輸入接邏輯電平開關(guān)K0~K7,編程A口輸出接LED顯示電路L0~L7;用指令從C口輸入數(shù)據(jù),再從A口輸出。注意實驗箱中的8255既引出了A、B、C口引腳排線,也提供了PA0-PA7,PB0-PB7,PC0-PC7的信號連接孔,成組開關(guān)、數(shù)碼管,8段LED顯示器也如此,可根據(jù)需要設(shè)計選用。

      推薦接線:

      8255/JP8(PC7---PC0)8255/JP6(PA7---PA0)8255/CS

      接邏輯開關(guān)/JP1(K7---K0)接LED顯示/JP2(L7---L0)接I/O譯碼/Y1(288H---28FH)2)編程將 A 口 L0-L7 控制成流水燈,流水間隔時間由軟件產(chǎn)生;流水方向由 K0 鍵在線控制,隨時 可切換;流水間隔時間也可由 K4~K7 鍵編碼控制,如 0000 對應(yīng)停止,0001 對應(yīng) 1 秒,1111 對應(yīng) 15 秒, 大鍵盤輸入 ESC 鍵退出。8段數(shù)碼管。

      3)8段數(shù)碼管靜態(tài)顯示:按圖 3.7-3 連接好電路,將 8255 的 A 口 PA0~PA6(JP6)分別與七段

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      數(shù)碼 管的段碼驅(qū)動輸入端 a~DP 相連(JP3),位碼驅(qū)動輸入端 S1 接+5V(選中),S0 接地(關(guān)閉)。編程從鍵盤 輸入一位十進(jìn)制數(shù)字(0~9),在七段數(shù)碼管上顯示出來。

      4)8段數(shù)碼管動態(tài)顯示:按圖 3.7-4 連接好電路,七段數(shù)碼管段碼連接不變,位碼驅(qū)動輸入端 S1、S0 接 8255 C 口的 PC1、PC0。編程在兩個數(shù)碼管上顯示“56”。(注意字符變換之間應(yīng)使段位全滅,避免顯 示“影子”)

      (2)實驗七 串行通信 基本實驗內(nèi)容和要求

      1)按圖 3.8-1 連接好電路,其中 8254 計數(shù)器用于產(chǎn)生 8251 的發(fā)送和接收時鐘,TXD 和 RXD 直接相連(注意: 實驗系統(tǒng)未采用 MC1488/1489 或 ICL232 等長線收發(fā)器,故有關(guān) RS232/422 等電平標(biāo)準(zhǔn)及轉(zhuǎn) 換內(nèi)容可自行參考相關(guān)資料);

      2)編寫測試程序,初始化 8251,實現(xiàn)連續(xù)發(fā)送固定字符,用示波器觀察發(fā)送波形,試用多種不同字符格式和字符。

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      3)編程實現(xiàn)從鍵盤輸入一個字符, 將其 ASCII 碼加 1 后發(fā)送出去,再接收回來在屏幕上顯示,實現(xiàn)自發(fā)自收。

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      二.基本實驗原理

      (1)實驗六 8255并行輸入輸出

      1)實驗箱上的七段數(shù)碼管為共陰型,段碼采用同相驅(qū)動,輸入端加高電平,選中的數(shù)碼管亮,位碼加反相驅(qū)動器,位碼輸入端高電平選中。

      2)七段數(shù)碼管的字型代碼表如表 3.7-1:

      3)參考流程圖(圖3.7-5,3.7-6)

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      (2)實驗七 串行通信

      編程提示

      1)圖 3.8-1 電路 8251 的控制口地址為 2B9H,數(shù)據(jù)口地址為 2B8H。

      2)8253 計數(shù)器的計數(shù)初值= 時鐘頻率 /(波特率× 波特率因子),這里的時鐘頻率接脈沖源1MHz,波特率若選 1200,波特率因子若選16,則計數(shù)器初值為52。

      4)收發(fā)采用查詢方式,參考流程圖(見圖 3.8-2)6

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      三.方案實現(xiàn)與測試

      1.實驗六 8255并行輸入輸出

      (1)8255方式0:簡單輸入輸出

      實驗電路如圖3.7-1,8255C口輸入接邏輯電平開關(guān)K0~K7,編程A口輸出接LED顯示電路L0~L7;用指令從C口輸入數(shù)據(jù),再從A口輸出。

      推薦接線:

      8255/JP8(PC7---PC0)8255/JP6(PA7---PA0)8255/CS

      接邏輯開關(guān)/JP1(K7---K0)接LED顯示/JP2(L7---L0)接I/O譯碼/Y1(288H---28FH)1)按照上圖所示電路搭接電路,接線圖如下:

      2)在純DOS或者桌面上的TPC集成開發(fā)環(huán)境中編譯運行如下代碼:

      8255 簡單輸入輸出(程序名:8255_io.asm)

      8255 控制寄存器端口地址 28BH A 口的地址 288H

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      C 口的地址 28AH ioport equ 3100h-0280h;tpc 卡中設(shè)備的 I/O 地址 io8255a equ ioport+288h io8255c equ ioport+28ah

      ;8255A 口地址;8255C 口地址

      io8255k equ ioport+28bh;8255 控制寄存器端口地址 stacks segment stack db 100 dup(?)stacks ends code segment assume cs:code,ss:stacks main proc far start: mov ax,stacks

      mov ss,ax mov dx,io8255k;設(shè) 8255 為 C 口輸入,A 口輸出 mov al,8bh out dx,al inout: mov dx,io8255c;從 C 口輸入一數(shù)據(jù)

      in al,dx mov dx,io8255a;從 A 口輸出剛才自 C 口所輸入的數(shù)據(jù) out dx,al mov dl,0ffh;判斷是否有按鍵 mov ah,06h int 21h jz inout;若無,則繼續(xù)自 C 口輸入,A 口輸出

      mov ah,4ch;否則返回 DOS 操作系統(tǒng) int 21h main endp code ends end start 3)實驗結(jié)果記錄如下圖所示:

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      (2)8段數(shù)碼管靜態(tài)顯示實驗

      1)按圖下圖連接好電路,將 8255 的 A 口 PA0~PA6(JP6)分別與七段數(shù)碼 管的段碼驅(qū)動輸入端 a~DP 相連(JP3),位碼驅(qū)動輸入端 S1 接+5V(選中),S0 接地(關(guān)閉)。

      2)在純DOS或者桌面上的TPC集成開發(fā)環(huán)境中編譯運行如下代碼:

      8255_led_s.asm源程序: data segment ioport io8255a io8255b equ 3100h-0280h equ 288h equ 28bh led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah,'Input a num(0--9h):',0dh,0ah,'$' data ends stacks segment stack

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      db 100 dup(?)stacks ends code segment assume cs:code,ds:data,ss:stacks start: mov ax,stacks

      mov ss,ax mov ax,data mov ds,ax mov dx,io8255b;使8255的A口為輸出方式 mov ax,80h out dx,al sss: mov dx,offset mesg1;顯示提示信息

      mov ah,09h int 21h mov ah,01;從鍵盤接收字符 int 21h cmp al,'0';是否小于0 jl exit;若是則退出 cmp al,'9';是否大于9 jg exit;若是則退出

      sub al,30h;將所得字符的ASCII碼減30H mov bx,offset led;bx為數(shù)碼表的起始地址 xlat;求出相應(yīng)的段碼 mov dx,io8255a;從8255的A口輸出 out dx,al jmp sss;轉(zhuǎn)SSS exit: mov ah,4ch;返回DOS int 21h code ends end start

      3)實驗現(xiàn)象記錄如下:

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      (3)8段數(shù)碼管動態(tài)顯示實驗

      1)按圖下圖所示電路搭接好電路,七段數(shù)碼管段碼連接不變,位碼驅(qū)動輸入端 S1、S0 接 8255 C 口的 PC1、PC0。編程在兩個數(shù)碼管上顯示“56”。(注意字符變換之間應(yīng)使段位全滅,避免顯示“影子”)

      2)在純DOS或者桌面上的TPC集成開發(fā)環(huán)境中編譯運行如下代碼:

      8255 動態(tài)顯示‘56’參考程序(程序名:8255_led_d.asm)data segment ioport equ 3100h-0280h io8255a equ ioport+288h io8255c equ ioport+28ah io8255k equ ioport+28bh

      ;tpc 卡中設(shè)備的 I/O 地址;8255A 口地址;8255C 口地址

      ;8255 控制寄存器端口地址

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段碼 buffer1 db 5,6 bz dw ? data ends stacks segment stack db 100 dup(?)

      ;存放要顯示的個位和十位

      ;位碼

      stacks ends code segment assume cs:code,ss:stacks,ds:data start: mov ax,stacks

      mov ss,ax mov ax,data mov ds,ax mov dx,io8255k;將 8255 設(shè)為 A 口輸出 mov al,80h out dx,al mov di,offset buffer1;設(shè) di 為顯示緩沖區(qū)

      loop2: mov bh,02 lll:

      mov al,0

      ;送全滅段碼

      mov dx,io8255a;自 8255A 口輸出 out dx,al mov byte ptr bz,bh push di dec di add di, bz mov bl,[di];bl 為要顯示的數(shù) pop di mov bh,0 mov si,offset led;置 LED 數(shù)碼表偏移地址為 SI add si,bx;求出對應(yīng)的 LED 數(shù)碼 mov al,byte ptr [si] mov dx,io8255a;自 8255A 口輸出 out dx,al mov al,byte ptr bz;使相應(yīng)的數(shù)碼管亮 mov dx,io8255c 13

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      out dx,al mov cx,3000 delay: loop delay;延時

      mov bh,byte ptr bz shr bh,1 jnz lll mov dx,0ffh mov ah,06 int 21h je loop2;有鍵按下則退出

      mov dx,io8255c mov al,0 out dx,al mov ah,4ch;返回 DOS 操作系統(tǒng) int 21h;關(guān)掉數(shù)碼管顯示

      code ends end start

      3)實驗結(jié)果記錄如下:

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      2.實驗七 串行通信

      基本實驗內(nèi)容和要求

      1)按圖 3.8-1 連接好電路,其中 8254 計數(shù)器用于產(chǎn)生 8251 的發(fā)送和接收時鐘,TXD 和 RXD 直接相連

      2)在純DOS或者桌面上的TPC集成開發(fā)環(huán)境中編譯運行如下代碼:

      參考程序:程序名:8251.asm data segment ioport equ 3100h-0280h io8253a equ ioport+280h io8253b equ ioport+283h io8251a equ ioport+2b8h io8251b equ ioport+2b9h mes2 dd mes1 data ends stacks segment stack db 100 dup(?)stacks ends code segment assume cs:code,ds:data,ss:stacks main proc far start: mov ax,stacks

      ;tpc 卡中設(shè)備的 io 地址;計數(shù)器 0 地址;8253 控制寄存器地址;8251 數(shù)據(jù)口地址;8251 控制口地址

      mes1 db 'you can play a key on the keybord!',0dh,0ah,24h mov ss,ax

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      mov ax,data mov ds,ax mov dx,io8253b;設(shè)置 8253 計數(shù)器 0 工作方式 mov al,16h out dx,al mov dx,io8253a mov al,52;給 8253 計數(shù)器 0 送初值 out dx,al mov dx,io8251b;初始化 8251 xor al,al mov cx,03;向 8251 控制端口送 3 個 0 loop delay mov al,40h;向 8251 控制端口送 40H,使其復(fù)位 call out1 mov al,4eh;設(shè)置為 1 個停止位,8 個數(shù)據(jù)位 call out1;波特率因子為 16 mov al,27h;向 8251 送控制字允許其發(fā)送和接收 call out1 lds dx,mes2;顯示提示信息 mov ah,09 int 21h in al,dx test al,01;發(fā)送是否準(zhǔn)備好 jz waiti mov ah,01;是,從鍵盤上讀一字符 int 21h cmp al,27;若為 ESC,結(jié)束 jz exit mov dx,io8251a inc al out dx,al;發(fā)送 mov cx,0F00h

      ;延時

      next: mov dx,io8251b in al,dx test al,02;檢查接收是否準(zhǔn)備好 jz next in al,dx;沒有,等待;準(zhǔn)備好,接收 delay: call out1 waiti: mov dx,io8251b s51: loop s51 mov dx,io8251a

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      inc al mov dl,al;如果需要處理,如加 1 mov ah,02;將接收到的字符顯示在屏幕上 int 21h jmp waiti int 21h

      ;向外發(fā)送一字節(jié)的子程序 exit: mov ah,4ch;退出 main endp out1 proc near

      out dx,al push cx mov cx,0F00h;延時

      pop cx ret gg: loop gg out1 endp code ends end start

      3)實驗現(xiàn)象:輸入1,回顯3,因為發(fā)時加1,接受時又加1。

      修改代碼,持續(xù)輸入55,用示波器觀察發(fā)送發(fā)送過程和波特率,刪掉源碼中接受和發(fā)送部分,在原發(fā)送部分加如下代碼:

      out2: mov al,55h mov dx,io8251a out dx,al mov cx,0f00h 實驗現(xiàn)象:

      每16次RCLK脈沖對應(yīng)一個數(shù)據(jù)位。

      《微機實驗及課程設(shè)計》實驗報告

      學(xué)號

      08

      四.提高與創(chuàng)新研究

      五.分析與總結(jié)

      通過這兩次實驗,我大致了解并掌握了 8255三種方式的工作原理及使用方法以及利用它直接輸入輸出進(jìn)行控制顯示的方法,掌握了8段數(shù)碼管的動態(tài)刷新顯示控制方法;進(jìn)一步掌握了中斷處理程序的編寫,了解串行通信的基本原理,深入認(rèn)識了串行收發(fā)過程,掌握了串行接口芯片 8251 的工作原理和編程方法,特別是對8255的A組控制,B組控制以及8255控制字有了更加深入的理解

      第二篇:【微機實驗】2018東南大學(xué)微型計算機原理及應(yīng)用實驗二

      實驗二 基本算術(shù)和邏輯運算

      學(xué)院:信息科學(xué)與工程學(xué)院

      姓名:周信元

      學(xué)號:04016523 實驗日期:2018.4.4

      一、實驗?zāi)康?/p>

      1.熟悉算術(shù)和邏輯運算指令的功能。

      2.進(jìn)一步了解標(biāo)志寄存器各標(biāo)志位的意義和指令執(zhí)行對它的影響。

      二、實驗任務(wù)

      1.采用單步執(zhí)行方式執(zhí)行下列各程序段,檢查各標(biāo)志位的情況。

      程序段1 MOV AX, 10101H MOV SI, 2000H ADD AL, 30H ADD AX, SI

      ;AX=1010H

      ;SI=2000H

      ;AX=1040H

      ;AX=3040H;BX=03FFH MOV BX, 03FFH ADD AX, BX

      ;AX=343FH;DS:[0020]=1000H;DS:[0020]=443FH MOV[0020],1000H ADD 0020, AX 程序段2: MOV AX, OA0AOIH ADO AX, OFFFFH

      ;AX=A0A0H;AX=A09FH MOV CX, OFFOOH ADD AX, CX SUB AX, AX INC AX

      ;CX=FF00H;AX=9F9FH

      ;AX=0000H

      ;AX=0001H

      ;CX=FFFFH OR CX, OOFFH AND CX, OFOFH M0V[0010],CX 程序段3: MOV BL, 25H MO[0010],04H MOV AL, [0010] MUL BL 程序段4: MOV BL, 04H

      ;CX=0F0FH;DS:[0010]=OFOFH

      ;BX=0025H;DS:[0010]=04H

      ;AX=0004H

      ;AX=0094H

      ;BX=0004H MOV WORD PTR L0010], 0080H;DS:[0010]=0080H MOV AX, [0010] DIV BL 程序段5: MOV AX, 00 DEC AX

      ;AX=0000H;AX=FFFFH

      ;AX=3FFEH

      ;AX=0080H;AX=0020H ADC AX, 3FFFH ADD AX, AX

      ;AX=7FFCH NOT AX SUB AX, 3

      ;AX=8003H;AX=8000H

      ;AX=FBFDH OR AX, OFEFDH AND AX, OAFCFH SHL AX, 1 RCL AX, 1 步驟

      ;AX=ABCDH;AX=579AH;AX=AF35H(1)進(jìn)入 Turbo Debugger,在CPU窗口下輸入程序段 2)將IP指針指向程序段開始處(3)按下F7鍵(單步)運行程序。

      (4)分析各條指令執(zhí)行后的結(jié)果與各標(biāo)志位在指令執(zhí)行后對它的影響

      2.將寄存器BⅨ作地址指針,自BX所指的內(nèi)存單元(0010HD)開始連續(xù)存放著三個無符號數(shù)(10H、04H、30H),。試編寫程序分別求它們的和與積,并將結(jié)果存放在這三個數(shù)之后的單元中。

      求和程序段

      MOV[0010],10H MOV[0011],04H MOV[0012],30H SUB AX, AX MOV BX, 0010H MOV AL, BXI ADD AL, [BX+1] ADD Al, [BX+2] MOV [BX+3], AL 結(jié)果[DS:0013]=44H 求積程序段

      MOV[0010],10H MOV[0011],04H MOV[0012],30H SUB AX, AX MOV A1,[0010] MOV BL, [0011 MUL BL MOV BL, [0012] MUL BL MOV [0013], AX 結(jié)果[DS:0013=0C00H 3.寫出完成下述功能的程序段(1)傳送15H到AL寄存器。(2)將L的內(nèi)容乘以2(3)傳送15H到L寄存器 4)AL的內(nèi)容乘以BL的內(nèi)容。最后結(jié)果(AX)=?

      MOV AL, 15H SHL AL, 1 MOV BL, 15H MUL BL 結(jié)果(AX)=0372H 4.寫出完成下述功能的程序段

      (1)從地址DS:0000H單元中,傳送一個數(shù)據(jù)58H到AL寄存器。(2)把AL寄存器的內(nèi)容右移兩位

      (3)再把L寄存器的內(nèi)容與字節(jié)單元DS:0001H中的數(shù)據(jù)12H相乘。(4)將乘積存入字單元DS:0002H中

      M0V[0000],58H MOV[0001],12H MOV AL, [0000] SHR AL, 02 MOV BL, [0001] MUL BL MOV [0002], AX 結(jié)果[0002]=018CH 5.假設(shè)下面的程序段用來清除數(shù)據(jù)段中相應(yīng)字存儲單元的內(nèi)容(即零送到這些存儲 單元中去),其偏移地址從0010H到0020H(1)將第4條比較指令語句填寫完整(劃線處)MOV SI, 0010H NEXT: MOV WORD PTR[SI].00 ADD SI, 0022H CMP SI, INE NEXT(2)假設(shè)要清除偏移地址從0020H到001字存儲單元中的內(nèi)容(即由高地址到 低地址清零),試編寫程序段。

      MOV SI, 0020H NEXT MOV WORD PTR[S1], 00 SUB SI, 2 CMP SI, 000EH JNE NEXT

      三,實驗設(shè)備

      IBM-TC/XT微機一臺

      四、實驗預(yù)習(xí)要求

      1.復(fù)習(xí)8086指令系統(tǒng)的算術(shù)和邏輯運算指令 2,按照題目要求在實驗前編寫好程序

      五、實驗報告要求

      1.整理出運行正確的各題源程序段和結(jié)果, 2.,簡要說明ADD指今和AND指令對標(biāo)志位的影響。

      1.見報告中加粗文字部分

      2.普通加法指令A(yù)DD,指令格式:ADD Reg/mem,Reg/mem/imm受影響標(biāo)志位:AF/CF/OF/PF/SF/ZF 邏輯與操作指令A(yù)ND,指令的格式: AND Reg/Mem, Reg/Mem/imm受影響的標(biāo)志位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)

      第三篇:微機實驗報告數(shù)模轉(zhuǎn)換器和模數(shù)轉(zhuǎn)換器實驗

      課程名稱

      微機接口與匯編語言

      實驗項目

      實驗五

      數(shù)/模轉(zhuǎn)換器和模/數(shù)轉(zhuǎn)換器實驗

      實驗儀器 TPC-USB通用微機接口實驗系統(tǒng)

      系 別 計算機學(xué)院

      專 業(yè)

      班級/學(xué)號

      學(xué)生姓名 實驗日期 2013.12.19 成 績 指導(dǎo)教師

      胡信裕

      實驗五 數(shù)/模轉(zhuǎn)換器和模/數(shù)轉(zhuǎn)換器實驗

      一、實驗?zāi)康?/p>

      1.了解數(shù)/模轉(zhuǎn)換器的基本原理,掌握DAC0832芯片的使用方法。2.了解模/數(shù)轉(zhuǎn)換器的基本原理,掌握ADC0809的使用方法。二.實驗設(shè)備

      1.PC微機系統(tǒng)一套

      2.TPC-USB通用微機接口實驗系統(tǒng) 一套 三.實驗要求

      1.實驗前要作好充分準(zhǔn)備,包括程序框圖、源程序清單、調(diào)試步驟、測試方法、對運行結(jié)果的分析等。

      2.熟悉與實驗有關(guān)的系統(tǒng)軟件(如編輯程序、匯編程序、連接程序和調(diào)試程序等)使用方法。在程序調(diào)試過程中,有意識地了解并掌握TPC-USB通用微機接口實驗系統(tǒng)的軟硬件環(huán)境及使用,掌握程序的調(diào)試及運行的方法技巧。3.實驗前仔細(xì)閱讀理解教材相關(guān)章節(jié)的相關(guān)內(nèi)容,實驗時必須攜帶教材及實驗講義。四.實驗內(nèi)容及步驟

      (一)數(shù)/模轉(zhuǎn)換器實驗

      1.實驗電路原理如圖:DAC0832采用單緩沖方式,具有單雙極性輸入端(圖中的Ua、Ub),編程產(chǎn)生以下鋸齒波(從Ua和Ub輸出,用示波器觀察)

      參考電路圖

      2.8位D/A轉(zhuǎn)換器DAC0832的口地址為290H,輸入數(shù)據(jù)與輸出電壓的關(guān)系為:

      (UREF表示參考電壓,N表示數(shù)數(shù)據(jù)),這里的參考電壓為PC機的+5V電源。

      3.產(chǎn)生鋸齒波只須將輸出到DAC0832的數(shù)據(jù)由0循環(huán)遞增。4.參考流程圖:

      參考流程圖

      (二)模/數(shù)轉(zhuǎn)換器

      1.實驗電路原理圖如圖。

      (一)的DAC的輸出Ua,送入ADC0809通道1(IN1)。

      連接參考電路圖

      2.編程采集IN1輸入的電壓,在屏幕上顯示出轉(zhuǎn)換后的數(shù)據(jù)(用16進(jìn)制數(shù))。3.ADC0809的IN0口地址為298H,IN1口地址為299H。4.IN0單極性輸入電壓與轉(zhuǎn)換后數(shù)字的關(guān)系為:

      其中Ui為輸入電壓,UREF為參考電壓,這里的參考電壓為PC機的+5V電源。

      4.一次A/D轉(zhuǎn)換的程序可以為

      MOV DX,口地址 OUT DX,AL

      ;啟動轉(zhuǎn)換

      ;延時

      IN AL,DX

      ;讀取轉(zhuǎn)換結(jié)果放在AL中

      五、實驗程序設(shè)計和調(diào)試運行

      1、程序設(shè)計

      實驗一:(生成的是鋸齒波)io0832a

      equ 290h(a)主程序

      參考流程圖

      (b)顯示子程序 code segment assume cs:code start: mov cl,0 mov dx,io0832a lll:

      mov al,cl out dx,al inc cl

      ;cl加1 inc cl inc cl inc cl inc cl inc cl inc cl push dx mov ah,06h

      ;判斷是否有鍵按下

      mov dl,0ffh int 21h pop dx jz lll

      ;若無則轉(zhuǎn)LLL mov ah,4ch

      ;返回

      int 21h code ends end start

      實驗二 :(生成正弦波)DATA SEGMENT IO0832A EQU 290H SIN DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH DB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96H DB 80H,66H,4EH,38H,25H,15H,09H,04H DB 00H,04H,09H,15H,25H,38H,4EH,66H

      ;正弦波數(shù)據(jù) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

      MOV DS,AX

      ;置正弦波數(shù)據(jù)的偏移地址為SI,LL:MOV SI,OFFSET SIN

      ;一組輸出32個數(shù)據(jù)

      MOV BH,32

      ;將數(shù)據(jù)輸出到D/A轉(zhuǎn)換器

      LLL:MOV AL,[SI]

      MOV DX,IO0832A

      OUT DX,AL

      MOV AH,06H

      MOV DL,0FFH

      INT 21H

      JNE EXIT

      MOV CX,1 DELAY:LOOP DELAY INC SI DEC BH JNZ LLL JMP LL EXIT:MOV AH,4CH INT 21H CODE ENDS END START

      2.實驗過程(步驟)和實驗結(jié)果說明

      (1)按圖連接實驗電路;

      (2)在TPC-IDE操作環(huán)境下,用文本編輯器編輯實驗源程序(EXP5.asm);(3)在IDE操作環(huán)境下,對源程序(EXP5.asm)進(jìn)行編譯和連接,生成生成鏈接文件(EXP5.obj)和可執(zhí)行文件(EXP5.exe);

      (4)運行IDE操作環(huán)境下的調(diào)試命令,調(diào)試可執(zhí)行文件(EXP5.exe);

      (5)運行IDE操作環(huán)境下的執(zhí)行命令,運行可執(zhí)行文件(EXP5.exe),結(jié)果顯示為:

      運行成功后,可以從示波器中看到相應(yīng)的波形,通過調(diào)節(jié)示波器,波形會更加明顯。

      實驗結(jié)果 鋸齒波:

      正弦波:

      六、實驗總結(jié)

      通過此次實驗,我了解了數(shù)/模和模/數(shù)轉(zhuǎn)換器的基本原理,以及掌握了DAC0832和ADC0809芯片的使用方法。在實驗過程中,對于填寫代碼空白這一項,感覺很鍛煉對于程序的閱讀和理解能力。當(dāng)然也遇到了一些障礙,通過請教老師和同學(xué),最后都順利解決,此次實驗收獲很大。

      第四篇:電子科技大學(xué)微機實驗報告 實驗4

      實驗四基于ARM的嵌入式Linux開發(fā)環(huán)境建立 【實驗?zāi)康摹?1.掌握嵌入式Linux 開發(fā)環(huán)境的基本流程。2.熟悉Linux 操作系統(tǒng) 3.熟悉嵌入式開發(fā)平臺

      【實驗內(nèi)容】

      在PC機虛擬機下的Linux系統(tǒng)中建立基于ARM 的嵌入式Linux 開發(fā)環(huán)境。

      1.學(xué)會網(wǎng)口的配置 2.Minicom端口的使用

      【預(yù)備知識】

      1.了解ARM9處理器結(jié)構(gòu) 2.了解Linux 系統(tǒng)結(jié)構(gòu)

      3.了解ARM開發(fā)板使用常識

      【實驗設(shè)備和工具】

      硬件:PC機Pentium100以上,ARM嵌入式開發(fā)平臺

      軟件:PC機Linux 操作系統(tǒng)+MINICOM+AMRLINUX開發(fā)環(huán)境

      【實驗原理】

      1.交叉編譯器在一種計算機環(huán)境中運行的編譯程序,能編譯出在另外一種環(huán)境下運行的代碼,我們就稱這種編譯器支持交叉編譯,這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。這里需要注意的是所謂平臺,實際上包含兩個概念:體系結(jié)構(gòu)

      (Architecture)、操作系統(tǒng)(OperatingSystem)。同一個體系結(jié)構(gòu)可以運行不同的操作系統(tǒng);同樣,同一個操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運行。舉例來說,我們常說的x86 Linux平臺實際上是Intelx86體系結(jié)構(gòu)和Linuxforx86操作系統(tǒng)的統(tǒng)稱;而x86WinNT平臺 實際上是Intelx86體系結(jié)構(gòu)和Windows NTforx86操作系統(tǒng)的簡稱。交叉編譯這個概念的出現(xiàn)和流行是和嵌入式系統(tǒng)的廣泛發(fā)展同步的。我們常用的計算機軟

      件,都需要通過編譯的方式,把使用高級計算機語言編寫的代碼(比如C代碼)編譯(compile)成計算機可以識別和執(zhí)行的二進(jìn)制代碼。比如,我們在Windows平臺上,可使用Visual C++ 開發(fā)環(huán)境,編寫程序并編譯成可執(zhí)行程序。這種方式下,我們使用PC平臺上的Windows工具開發(fā)針對Windows本身的可執(zhí)行程序,這種編譯過程稱為nativecompilation,中文可理解

      為本機編譯。然而,在進(jìn)行嵌入式系統(tǒng)的開發(fā)時,運行程序的目標(biāo)平臺通常具有有限的存儲空間和運算能力,比如常見的ARM平臺,其一般的靜態(tài)存儲空間大概是16到32MB,而CPU 的主頻大概在100MHz到500MHz之間。這種情況下,在ARM平臺上進(jìn)行本機編譯就不太可能了,這是因為一般的編譯工具鏈(compilationtoolchain)需要很大的存儲空間,并需要很強 的CPU運算能力。為了解決這個問題,交叉編譯工具就應(yīng)運而生了。通過交叉編譯工具,我們就可以在CPU能力很強、存儲空間足夠的主機平臺上(比如PC上)編譯出針對其他平臺的可執(zhí)行程序。

      要進(jìn)行交叉編譯,我們需要在主機平臺上安裝對應(yīng)的交叉編譯工具鏈(crosscompilation tool-chain),然后用這個交叉編譯工具鏈編譯我們的源代碼,最終生成可在目標(biāo)平臺上運行的代碼。常見的交叉編譯例子如下:

      1、在WindowsPC上,利用RVDS(ARM開發(fā)環(huán)境),使用armcc編譯器,則可編譯出針對ARMCPU的可執(zhí)行代碼。

      2、在LinuxPC上,利用arm-linux-gcc編譯器,可編譯出針對LinuxARM平臺的可執(zhí)行代碼。

      3、在Windows PC上,利用cygwin環(huán)境,運行arm-elf-gcc編譯器,可編譯出針對ARMCPU的可執(zhí)行代碼。

      2.NFS服務(wù)

      NFS是Net FileSystem的簡寫,即網(wǎng)絡(luò)文件系統(tǒng).網(wǎng)絡(luò)文件系統(tǒng)是FreeBSD支持的文件系統(tǒng)中的一種,也被稱為NFS.NFS允許一個系統(tǒng)在網(wǎng)絡(luò)上與它人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠(yuǎn)端系

      統(tǒng)上的文件。

      NFS至少有兩個主要部分:一臺服務(wù)器和一臺(或者更多)客戶機??蛻魴C遠(yuǎn)程訪問存放在服務(wù)器上的數(shù)據(jù)。為了正常工作,一些進(jìn)程需要被配置并運行。

      在本實驗中就是將PC機作為服務(wù)器,而將ARM開發(fā)板作為客戶機,這樣ARM開發(fā)板就可以遠(yuǎn)程

      訪問存放在在PC機上的數(shù)據(jù),這樣可以縮短研發(fā)周期,更方便的調(diào)試程序。

      【實驗步驟】

      1.雙擊桌面上VMWARE,打開Linux 虛擬機 2.點擊啟動虛擬機,啟動虛擬機 3.以root身份登陸虛擬機,密碼123456

      4.其他步驟詳見實驗指導(dǎo)書

      【實驗結(jié)果和程序】

      基于ARM 的嵌入式Linux開發(fā)環(huán)境建立完畢。

      【思考題】

      1.如何驗證交叉編譯器已安裝成功? 答:在終端輸入命令:cd/arm/rootfs/home/driver(文件夾里已有test_led.c文件)arm-linux-gcc–o test_ledtest_led.c

      若有可執(zhí)行文件test_led生成則表示交叉編譯器已安裝成功

      2.如果我們需要變更根文件系統(tǒng)的目錄,該如何設(shè)置使得ARM開發(fā)板可以成功掛載?答:修改/etc/exports 文件的內(nèi)容,將/arm/rootfs*(rw,sync,no_root_squash)改為/XX/XXX

      *(rw,sync,no_root_squash)(/XX/XXX為變更后點的文件目錄)

      3.怎么在u-boot命令行下修改ARM 開發(fā)板的IP?

      答:輸入setenvip=x.x.x.x:192.168.0.1:192.168.0.1:255.255.255.0:uestc:eth0:off

      Saveenv

      x,x,x,x為ARM開發(fā)板的新IP。

      【實驗結(jié)論】

      本實驗實現(xiàn)了基于ARM 的嵌入式Linux 開發(fā)環(huán)境建立

      第五篇:電子科技大學(xué)微機實驗報告 實驗5

      實驗五 基于ARM的模塊方式驅(qū)動程序?qū)嶒?【實驗?zāi)康摹?1.掌握Linux 系統(tǒng)下設(shè)備驅(qū)動程序的作用與編寫技巧 2.掌握Linux 驅(qū)動程序模塊加載和卸載的方法 3.了解Linux 內(nèi)核中的makefile和kconfig文件

      【實驗內(nèi)容】

      1.基于s3c2440 開發(fā)板編寫led 驅(qū)動程序。2.將編寫好的led驅(qū)動加入linux內(nèi)核中,修改makefile和kconfig文件,配置和編譯內(nèi)核。3.編寫關(guān)于led 的測試程序,交叉編譯后運行,控制led 燈的亮滅。

      【預(yù)備知識】

      1.了解ARM9處理器結(jié)構(gòu)和Linux 系統(tǒng)結(jié)構(gòu)

      2.熟練掌握C語言。

      【實驗設(shè)備和工具】

      ? 硬件:ARM嵌入式開發(fā)平臺,PC機Pentium100 以上。

      ? 軟件:PC機Linux操作系統(tǒng)+MINICOM+AMRLINUX 開發(fā)環(huán)境

      【實驗原理】

      ?

      linux設(shè)備驅(qū)動程序 ? 驅(qū)動的模塊式加載和卸載

      ? 編譯模塊

      ? 裝載和卸載模塊

      ? led 驅(qū)動的原理

      在本開發(fā)板上有八個led指示燈,從下往上分別為LED0-LED7。這八個led燈都是接的芯片上的gpio口(通用功能輸入輸出口)。在本實驗的開發(fā)板硬件設(shè)計中,當(dāng)led 燈對應(yīng)的gpio的電平為低時,led燈被點亮;當(dāng)led燈對應(yīng)的gpio的電平為高時,led燈滅。本驅(qū)動的作用就是通過設(shè)置對應(yīng)gpio口的電平來控制led 的亮滅。

      因為ARM 芯片內(nèi)的GPIO口都是復(fù)用的,即它可以被配置為多種不同的功能,本實

      驗是使用它的普通的I/O口的輸出功能,故需要對每個GPIO口進(jìn)行配置。在內(nèi)核中已經(jīng)定義了對GPIO口進(jìn)行配置的函數(shù),我們只需要調(diào)用這些函數(shù)就可以完成對GPIO口的配置。

      【實驗步驟】實驗程

      序運行效果:

      程序會提示:“pleaseenterthe led status”

      輸入與希望顯示的led狀態(tài)對應(yīng)的ledstatus值(輸入十進(jìn)制值即可),觀察led 的顯示情況。例如:

      ? 輸入數(shù)字“3”,對應(yīng)的二進(jìn)制數(shù)字為00000011

      故點亮LED2~LED7

      ? 輸入數(shù)字“4”,對應(yīng)的二進(jìn)制數(shù)字為00000100

      故點亮LED0,LED1,LED3~LED7

      【實驗結(jié)果和程序】

      C語言程序:

      #include #include #include #include #include #include #include #include #include #include #include #include #include#defineDEVICE_NAME “s3c2440-led”

      static intLedMajor=231;

      staticintLedMinor=0;

      static charledstatus=0xff;staticstructclass*s3c2440_class;staticstructcdev *s3c2440_led_cdev;

      /*

      ******************************************************************************* ************************

      ** Function name:Update_led()**Descriptions **Input :NONE **Output :NONE :update the led status

      ******************************************************************************* ************************

      */ staticvoid Update_led(void)

      {

      if(ledstatus&0x01)

      s3c2410_gpio_setpin(S3C2410_GPC7,1);//LED0滅

      else

      s3c2410_gpio_setpin(S3C2410_GPC7,0);//LED0亮

      if(ledstatus&0x02)

      s3c2410_gpio_setpin(S3C2410_GPC5,1);//LED1滅

      else

      s3c2410_gpio_setpin(S3C2410_GPC5,0);//LED1亮

      if(ledstatus&0x04)

      s3c2410_gpio_setpin(S3C2410_GPH9,1);//LED2滅

      else

      s3c2410_gpio_setpin(S3C2410_GPH9,0);//LED2亮

      if(ledstatus&0x08)

      s3c2410_gpio_setpin(S3C2410_GPB4,1);//LED3滅

      else

      s3c2410_gpio_setpin(S3C2410_GPB4,0);//LED3亮

      if(ledstatus&0x10)

      s3c2410_gpio_setpin(S3C2410_GPG5,1);//LED4滅

      else

      s3c2410_gpio_setpin(S3C2410_GPG5,0);//LED4亮

      if(ledstatus&0x20)

      s3c2410_gpio_setpin(S3C2410_GPG6,1);//LED5滅

      else

      s3c2410_gpio_setpin(S3C2410_GPG6,0);//LED5亮

      if(ledstatus&0x40)

      s3c2410_gpio_setpin(S3C2410_GPG7,1);//LED6滅elses3c2410_gpio_setpin(S3C2410_GPG7,0);//LED6亮

      if(ledstatus&0x80)

      s3c2410_gpio_setpin(S3C2410_GPG8,1);//LED7滅

      else

      s3c2410_gpio_setpin(S3C2410_GPG8,0);//LED7亮

      }

      staticssize_ts3c2440_Led_write(structfile*file,constchar*buffer,size_tcount,loff_t*ppos){

      copy_from_user(&ledstatus,buffer,sizeof(ledstatus));

      Update_led();

      printk(“write: led=0x%x,count=%dn”,ledstatus,count);returnsizeof(ledstatus);} staticints3c2440_Led_open(structinode*inode,struct file *filp)

      {

      printk(“l(fā)ed device openn”);

      return 0;

      } staticints3c2440_Led_release(structinode*inode,struct file*filp)

      {

      printk(“l(fā)ed device releasen”);

      return 0;} staticstructfile_operationss3c2440_fops={.owner=THIS_MODULE,.open=s3c2440_Led_open,.write=s3c2440_Led_write,.release=s3c2440_Led_release, };

      staticintinits3c2440_Led_init(void)

      {

      dev_ts3c2440_leds_devno;

      /*configure the gpiofor leds*/

      s3c2410_gpio_cfgpin(S3C2410_GPG5,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPG6,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPG7,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPG8,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPC7,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPC5,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPH9,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPB4,S3C2410_GPIO_OUTPUT);

      Update_led();/*registerthe devnumber*/ s3c2440_leds_devno=MKDEV(LedMajor,LedMinor);ret=register_chrdev_region(s3c2440_leds_devno, 1,DEVICE_NAME);

      /*registerthe chardevice*/

      s3c2440_led_cdev=cdev_alloc();if

      (s3c2440_led_cdev!= NULL)

      { cdev_init(s3c2440_led_cdev, &s3c2440_fops);s3c2440_led_cdev->owner=THIS_MODULE;if(cdev_add(s3c2440_led_cdev, s3c2440_leds_devno, 1))

      printk(KERN_NOTICE “Something wrong when addings3c2440_led_cdev!n”);

      else

      printk(“Success addings3c2440_led_cdev!n”);} /*create the device node in /dev*/ s3c2440_class =class_create(THIS_MODULE, “l(fā)ed_class”);class_device_create(s3c2440_class, NULL, s3c2440_leds_devno, NULL, DEVICE_NAME);

      printk(DEVICE_NAME “ initializedn”);

      return 0;

      }

      staticvoid exits3c2440_Led_exit(void)

      cdev_del(s3c2440_led_cdev);class_device_destroy(s3c2440_class, MKDEV(LedMajor,LedMinor));class_destroy(s3c2440_class);printk(DEVICE_NAME “ removedn”);

      }

      module_init(s3c2440_Led_init);

      module_exit(s3c2440_Led_exit);

      【思考題】

      1.設(shè)備驅(qū)動程序的功能是什么?答:設(shè)備驅(qū)動的功能就是將系統(tǒng)提供的調(diào)用映射到作用于實際硬件的和設(shè)備相關(guān)的操作上。

      2.模塊化的最大優(yōu)點是什么?答:可以在系統(tǒng)正在運行著的時候給內(nèi)核增加模塊

      提供的功能(也可以移除功能)。

      3.如果在驅(qū)動模塊中刪除module_exit(s3c2440_Led_exit);后會有什么影響?

      答:這個模塊將不能被移除。

      4.驅(qū)動代碼中調(diào)用的宏MKDEV 的作用是什么?答:獲取設(shè)備在設(shè)備表中的位置。輸入主設(shè)備號,從設(shè)備號,返回位置號。

      【實驗結(jié)論】

      本實驗實現(xiàn)了linux環(huán)境下的led燈驅(qū)動的添加。

      下載2018東南大學(xué)自動化學(xué)院微機實驗6、7實驗報告word格式文檔
      下載2018東南大學(xué)自動化學(xué)院微機實驗6、7實驗報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦