久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

電子科技大學微機實驗報告 實驗5

時間:2019-05-12 06:52:06下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《電子科技大學微機實驗報告 實驗5》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《電子科技大學微機實驗報告 實驗5》。

第一篇:電子科技大學微機實驗報告 實驗5

實驗五 基于ARM的模塊方式驅動程序實驗 【實驗目的】 1.掌握Linux 系統下設備驅動程序的作用與編寫技巧 2.掌握Linux 驅動程序模塊加載和卸載的方法 3.了解Linux 內核中的makefile和kconfig文件

【實驗內容】

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

【預備知識】

1.了解ARM9處理器結構和Linux 系統結構

2.熟練掌握C語言。

【實驗設備和工具】

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

? 軟件:PC機Linux操作系統+MINICOM+AMRLINUX 開發環境

【實驗原理】

?

linux設備驅動程序 ? 驅動的模塊式加載和卸載

? 編譯模塊

? 裝載和卸載模塊

? led 驅動的原理

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

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

驗是使用它的普通的I/O口的輸出功能,故需要對每個GPIO口進行配置。在內核中已經定義了對GPIO口進行配置的函數,我們只需要調用這些函數就可以完成對GPIO口的配置。

【實驗步驟】實驗程

序運行效果:

程序會提示:“pleaseenterthe led status”

輸入與希望顯示的led狀態對應的ledstatus值(輸入十進制值即可),觀察led 的顯示情況。例如:

? 輸入數字“3”,對應的二進制數字為00000011

故點亮LED2~LED7

? 輸入數字“4”,對應的二進制數字為00000100

故點亮LED0,LED1,LED3~LED7

【實驗結果和程序】

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(“led device openn”);

return 0;

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

{

printk(“led 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, “led_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.設備驅動程序的功能是什么?答:設備驅動的功能就是將系統提供的調用映射到作用于實際硬件的和設備相關的操作上。

2.模塊化的最大優點是什么?答:可以在系統正在運行著的時候給內核增加模塊

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

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

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

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

【實驗結論】

本實驗實現了linux環境下的led燈驅動的添加。

第二篇:電子科技大學微機實驗報告 實驗4

實驗四基于ARM的嵌入式Linux開發環境建立 【實驗目的】 1.掌握嵌入式Linux 開發環境的基本流程。2.熟悉Linux 操作系統 3.熟悉嵌入式開發平臺

【實驗內容】

在PC機虛擬機下的Linux系統中建立基于ARM 的嵌入式Linux 開發環境。

1.學會網口的配置 2.Minicom端口的使用

【預備知識】

1.了解ARM9處理器結構 2.了解Linux 系統結構

3.了解ARM開發板使用常識

【實驗設備和工具】

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

軟件:PC機Linux 操作系統+MINICOM+AMRLINUX開發環境

【實驗原理】

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

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

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

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

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

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

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

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

2.NFS服務

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

統上的文件。

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

在本實驗中就是將PC機作為服務器,而將ARM開發板作為客戶機,這樣ARM開發板就可以遠程

訪問存放在在PC機上的數據,這樣可以縮短研發周期,更方便的調試程序。

【實驗步驟】

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

4.其他步驟詳見實驗指導書

【實驗結果和程序】

基于ARM 的嵌入式Linux開發環境建立完畢。

【思考題】

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

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

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

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

3.怎么在u-boot命令行下修改ARM 開發板的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開發板的新IP。

【實驗結論】

本實驗實現了基于ARM 的嵌入式Linux 開發環境建立

第三篇:電子科技大學實驗報告格式

九、實驗結論:

十、總結及心得體會:

十一、對本實驗過程及方法、手段的改進建議:

報告評分:

指導教師簽字: 電子科技大學

學生姓名:學

號:指導教師:日

期:實 驗 報 告

****年**月**日

一、實驗室名稱:

二、實驗項目名稱:

三、實驗原理:

四、實驗目的:

五、實驗內容:

六、實驗器材(設備、元器件):

七、實驗步驟:

八、實驗數據及結果分析:

第四篇:電子科技大學實驗報告格式

九、實驗結論:

十、總結及心得體會:

十一、對本實驗過程及方法、手段的改進建議:

報告評分:指導教師簽字:

電子科技大學

學生姓名:

學號:

指導教師:

日期:實 驗 報 告年月日

一、實驗室名稱:

二、實驗項目名稱:

三、實驗原理:

四、實驗目的:

五、實驗內容:

六、實驗器材(設備、元器件):

七、實驗步驟:

八、實驗數據及結果分析:

第五篇:北京科技大學微機原理實驗報告

微機原理及應用實驗報告

學院: 班級: 學號: 姓名:

微機實驗報告書(Ⅰ)學號:姓名:班級: 同組名單:實驗日期:

實驗題目:8253可編程定時器計數器

實驗目標:掌握8253的基本工作原理和編程方法 實驗步驟:

連接電路圖

如圖虛線連接電路,將計數器0設置為方式0,計數器初值為N(N<=0FH),用手動逐個輸入單脈沖,編程使計數值在屏幕上顯示,并同時用邏輯筆觀察OUT0電平變化(當輸入N+1個脈沖后OUT0變高電平)。程序框圖:

程序清單:

;*************************;;* 8253方式0計數器實驗 *;;*************************;IOPORT

EQU

0C800H-0280H

IO8253A EQU

IOPORT+283H

IO8253B EQU

IOPORT+280H

CODE SEGMENT

ASSUME

CS:CODE

START: MOV

AL,00010000B

;設置8253工作方式

MOV

DX,IO8253A

OUT

DX,AL

MOV

DX,IO8253B

;送計數初值為0FH

MOV

AL,0FH

OUT

DX,AL

LLL: IN

AL,DX

;讀計數初值

CALL

DISP

;調顯示子程序

PUSH

DX

MOV

AH,06H

MOV

DL,0FFH

INT

21H

POP

DX

JZ

LLL

;跳轉到LLL

MOV

AH,4CH

;退出

INT

21H

DISP PROC

NEAR

;顯示子程序

PUSH

DX

AND

AL,0FH

;首先取低四位

MOV

DL,AL

CMP

DL,9

;判斷是否<=9

JLE

NUM

;若是則為'0'-'9',ASCII碼加30H

ADD

DL,7

;否則為'A'-'F',ASCII碼加37H

NUM: ADD

DL,30H

MOV

AH,02H

;顯示

INT

21H

MOV

DL,0DH

;加回車符

INT

21H

MOV

DL,0AH

;加換行符

INT

21H

POP

DX

RET

;子程序返回

DISP ENDP

CODE ENDS

END

START 運行結果:

每輸入一個單脈沖,屏幕上的數值減1,從15減到0后(撥動16次后),檢測到OUT0輸出由低電平變為高電平。小結(體會與收獲):

通過預習和實驗,學會了 8253 芯片和微機接口原理和方法,掌握 8253 定時器/計數器的基本工作原理、工作方式和編程原理,熟悉了匯編代碼的編寫。實驗中,連接電路,利用代碼控制實驗電路,深對了課本理論的理解。

由于是第一次實驗,進程比較緩慢,所以僅進行了8253可編程定時器/計數器的一個實驗,下次實驗會熟練一些。

微機實驗報告書(Ⅱ)

學號:姓名:班級: 同組名單:實驗日期:

實驗題目:1.8253可編程定時器計數器

2.8255可編程并行接口(方式0)3.七段數碼管

實驗目標:1.掌握8253的基本工作原理和編程方法

2.掌握8255方式0的工作原理及使用方法 3.掌握數碼管顯示數字的原理

實驗步驟: 實驗一:

連接電路圖

按上圖連接電路,將計數器0、計數器1分別設置為方式3,計數初值設為1000,用邏輯筆觀察OUT1輸出電平的變化(頻率1HZ)。實驗二:

連接電路圖

1)實驗電路如圖,8255C口接邏輯電平開關K0~K7,A口接LED顯示電路L0~L7。

2)編程從8255C口輸入數據,再從A口輸出。實驗三:

連接電路圖

靜態顯示:按圖連接好電路,將8255的A口PA0~PA6分別與七段數碼管的段碼驅動輸入端a~g相連,位碼驅動輸入端S1接+5V(選中), S0、dp接地(關閉)。編程從鍵盤輸入一位十進制數字(0~9),在七段數碼管上顯示出來。程序框圖: 實驗一:

實驗二:

實驗三:

程序清單: 實驗一:

;*******************;* 8253分頻 *;******************* IOPORT EQU

0C800H-0280H

IO8253A EQU

IOPORT+283H

IO8253B EQU

IOPORT+280H

IO8253C EQU

IOPORT+281H

CODE SEGMENT

ASSUME

CS:CODE

START: MOV

DX,IO8253A;向8253寫控制字

MOV

AL,36H

;工作方式

OUT

DX,AL

MOV

AX,1000

;寫入循環計數初值1000

MOV

DX,IO8253B

OUT

DX,AL

;先寫入低字節

MOV

AL,AH

OUT

DX,AL

;后寫入高字節

MOV

DX,IO8253A

MOV

AL,76H

;設工作方式

OUT

DX,AL

MOV

AX,1000

;寫入循環計數初值1000

MOV

DX,IO8253C

OUT

DX,AL

;先寫低字節

MOV

AL,AH

OUT

DX,AL

;后寫高字節

MOV

AH,4CH

;程序退出

INT

21H

CODE ENDS

END

START

實驗二:

;*************************;;* 8255A的基本輸入輸出 *;;*************************;IOPORT EQU 0C800H‐280H IO8255A EQU IOPORT+288H IO8255B EQU IOPORT+ 28BH IO8255C EQU IOPORT+28AH CODE SEGMENT ASSUME CS:CODE START: MOV DX,IO8255B;對 8255 進行設定,A 輸出,C 輸入

MOV AL,10001001B

OUT DX,AL INPUT: MOV DX,IO8255C;從 C 輸入

IN AL,DX

MOV DX,IO8255A;從 A 輸出

OUT DX,AL

MOV DL,0FFH;判斷是否有按鍵

MOV AH,06H

INT 21H

JZ INPUT;若無,則繼續 C 輸入,A 輸出

MOV AH,4CH;否則,返回 DOS

INT 21H CODE ENDS END START 實驗三:

;************************************;;*鍵盤輸入數據(0-9)控制LED數碼管顯示*;;************************************;

DATA

SEGMENT

IOPORT

EQU

0C800H-280H IO8255A

EQU

IOPORT+288H IO8255B

EQU

IOPORT+28BH IO8255C

EQU

IOPORT+28AH

LED

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

MESG1

DB

0DH,0AH,'Input a num(0--9),other key is exit:',0DH,0AH,'$' DATA

ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV

AX,DATA

MOV

DS,AX

MOV

DX,IO8255B

;使 8255 的A口為輸出方式

MOV

AX,10000000B

OUT

DX,AL

SSS:

MOV

DX,OFFSET MESG1

;顯示提示信息

MOV

AH,09H

INT

21H

MOV

AH,01

;從鍵盤接收字符

INT

21H

CMP

AL,30H

;是否小于 0

JL

EXIT

;若是則退出

CMP

AL,39H

;是否大于9

JG

EXIT

;若是則退出

SUB

AL,30H

;將所得字符的 ASCII 碼減 30H

MOV

BX,OFFSET LED

;BX為數碼表的起始地址

XLAT

;求出相應的段碼

MOV

DX,IO8255A

;從 8255 的A口輸出

OUT

DX,AL

JMP

SSS

;轉 SSS EXIT:

MOV

AH,4CH

;返回

INT

21H CODE

ENDS

END

START;

運行結果: 實驗一:

8253通道0和通道1均工作在方式3,計數初值均為1000。通道0的時鐘輸入為1MHz標準脈沖,產生1000Hz的方波;通道1以通道0輸出的1000Hz方波脈沖為輸入,產生1Hz的方波。用邏輯筆發現,OUT1 輸出電平呈規律性高低變化(顯示燈閃爍),時間間隔為 1s,說明輸出頻率為 1Hz,實現計時器功能。實驗二:

當邏輯開關K0~K7中的一個或幾個打開時,對應的LED燈就會亮起來,即利用8255A實現了基本的輸入輸出控制。實驗三:

靜態顯示:當從鍵盤輸入0~9任一數字時,七段數碼管上便 會顯示相應的數字,按下其他按鍵則退出程序。小結(體會和收獲):

通過本次實驗,進一步了解了8253可編程定時器/計數器;鞏固了可編程并行接口8255的基本知識點,了解了該芯片的應用。通過編程實現,熟悉了8255方式控制字,了解了方式0和基本工作原理。通過這三次實驗的學習,對于可編程接口芯片有了更深的認識,掌握了基本的微機接口方法。

在實驗過程中要細心,當編譯、鏈接或者運行的時候遇到錯誤的時候,要仔細檢查程序的輸入是否正確,很容易輸錯字母數字。

微機實驗報告書(Ⅲ)

學號:姓名:班級: 同組名單:實驗日期: 實驗題目:步進電機控制實驗

實驗目標:1.了解步進電機控制的基本原理

2.掌握控制步進電機轉動的編程方法

實驗步驟:

連接電路圖

1)按圖14連接線路,利用8255輸出脈沖序列,開關K0~K6控制步進電機轉速,K7控制步進電機轉向。8255 CS接288H~28FH。PA0~PA3接BA~BD;PC0~PC7接K0~K7。

2)編程:當K0~K6中某一開關為“1”(向上撥)時步進電機啟動。K7向上撥電機正轉,向下撥電機反轉。程序框圖:

程序清單:

;*******************************;;*

步進電機

*;;*******************************;

DATA

SEGMENT

IOPORT

EQU

0E400H-280H

IO8255A

EQU

IOPORT+288H

;8255A 輸出端口

IO8255B

EQU

IOPORT+ 28BH

;8255B 控制端口

IO8255C

EQU

IOPORT+ 28AH

;8255C 輸入端口

BUF

DB

0

MES

DB

'K0-K6 ARE SPEED CONTROL',0AH,0DH

DB

'K6 IS THE LOWEST SPEED ',0AH,0DH

DB

'K0 IS THE HIGHEST SPEED',0AH,0DH

DB

'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$'

DATA

ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DATA

START:

MOV

AX,CS

MOV

DS,AX

MOV

AX,DATA

MOV

DS,AX

MOV

DX,OFFSET MES

MOV

AH,09

INT

21H

MOV

DX,IO8255B

MOV

AL, 10001001B

OUT

DX,AL

;8255 C輸入, A 輸出

MOV

BUF,33H

OUT1:

MOV

AL,BUF

MOV

DX,IO8255A

OUT

DX,AL

PUSH

DX

MOV

AH,06H

MOV

DL,0FFH

INT

21H

POP

DX

JE

IN1

MOV

AH,4CH

INT

21H

IN1:

MOV

DX,IO8255C

IN

AL,DX

;輸入開關狀態

TEST

AL,01H

JNZ

K0

TEST

AL,02H

JNZ

K1

TEST

AL,04H

JNZ

K2

TEST

AL,08H

JNZ

K3

TEST

AL,10H

JNZ

K4

TEST

AL,20H

JNZ

TEST

JNZ

STOP:

MOV

MOV

JMP

K0:

MOV

SAM:

TEST

JZ

JMP

K1:

MOV

JMP

SAM

K2:

MOV

JMP

K3:

MOV

JMP

K4:

MOV

JMP

K5:

MOV

JMP

K6:

MOV

JMP

SAM

ZX0:

CALL

MOV

ROR

MOV

JMP

NX0:

CALL

MOV

ROL

MOV

JMP

DELAY

PROC

DELAY1:

MOV

DELAY2:

LOOP

K5

AL,40H K6

DX,IO8255C AL,0FFH

OUT1

BL,40H

AL,80H ZX0 NX0

BL,50H

BL,70H

SAM

BL,80H SAM

BL,0A0H SAM

BL,0C0H SAM

BL,0FFH

DELAY

AL,BUF

AL,1

BUF,AL OUT1

DELAY

AL,BUF

AL,1

BUF,AL OUT1

NEAR

CX,0FFFFH

DELAY2

DEC

BL

JNZ

DELAY1

RET

DELAY

ENDP

CODE

ENDS

END

START 運行結果:

當K0~K6中任意一開關向上撥時步進電機啟動,且K1速度最快,K6速度最慢;當K7向上撥電機正轉,向下撥電機反轉。當鍵盤中有任意鍵輸入的時候則程序終止。小結(收獲與體會):

實驗和理論是相互檢驗,相互補充和相互促進的,在實際動手動腦運用理論知識的時候,能更深入地領會概念,熟練運用,在此基礎上方能進行創新和自由發揮。通過本次實驗,我了解了步進電機控制的基本原理,掌握了控制步進電機轉動的編程方法。更加深入地了解了微機原理這門課程。

下載電子科技大學微機實驗報告 實驗5word格式文檔
下載電子科技大學微機實驗報告 實驗5.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    電子科技大學數學實驗報告

    一、 選擇題:(每題3分,共30分) 1、若分式 有意義,則x的取值范圍是( A.B.C.D.x≠-1 ) 2、一射擊運動員在一次射擊練習中打出的成績如下表所示:這次成績的眾數是( ) A;6B;8C;10D;7 3、若一組......

    現代電子實驗報告 電子科技大學

    基于FPGA的現代電子實驗設計報告 ——數字式秒表設計(VHDL) 學院:物理電子學院 專業: 學號: 學生姓名: 指導教師: 實驗地點: 實驗時間: 劉曦 科研樓303 摘要: 通過使用VHDL語言......

    電子科技大學實驗報告(推薦閱讀)

    電子科技大學信息與軟件學院實 驗 報 告(實驗)課程名稱 學生姓名學生學號電子科技大學教務處制表電 子 科 技 大 學 實驗報告 學生姓名:學 號:指導教師: 實驗地點:實驗時間: 一、實......

    微機實驗報告

    自動化 學院 物聯網 專業 1 班 學號姓名 協作者 教師評定 實驗一 操作訓練及數碼轉換實驗 一、實驗目的 1)掌握80x86微機原理及接口技術教學實驗系統的操作,熟悉Wmd86聯級集成......

    微機實驗報告

    微機實驗報告 曾東明 實驗一 輸出字符‘A’ 一、實驗目的 1.通過這個簡單的例子熟悉在微機上建立、匯編、鏈接和運行8086/8088匯編語言程序的過程。 2.掌握字符的顯示方法。 3......

    電子科技大學 實驗報告 創新學分 實驗課(優秀范文5篇)

    電子科技大學學生姓名: 學號: 指導教師: 日期:實 驗 報告 一、實驗室名稱: 二、實驗項目名稱: 三、實驗原理:四、實驗目的:五、實驗內容:六、實驗器材(設備、元器件):七、實驗步驟:八、實......

    微機實驗報告數模轉換器和模數轉換器實驗5篇

    實驗報告 課程名稱 微機接口與匯編語言實驗項目 實驗五 數/模轉換器和模/數轉換器實驗 實驗儀器 TPC-USB通用微機接口實驗系統 系 別 計算機學院專 業 班級/學號 學生姓......

    計算機組成原理實驗報告 電子科技大學

    計算機專業類課程 實驗報 告 課程名稱:計算機組成原理 學院專業:計算機科學與工程 計算機科學與技術學生姓名:** 學號:20120600***** 指導教師:吳曉華 日期:2014年11月30日 實 驗......

主站蜘蛛池模板: 国产精品成人av在线观看| 亚洲最大av资源站无码av网址| 精品精品自在现拍国产2021| 亚洲综合久久久久久888| 欧美成aⅴ人高清ww| 国产网红主播精品一区| 少妇av一区二区三区无码| 欧美z0zo人禽交欧美人禽交| 国产一区二区三区精品av| 久久夜色精品国产噜噜麻豆| 久热这里只精品99国产6| 在线精品自偷自拍无码| 国产精品青草久久福利不卡| 乱人伦中文无码视频| 亚洲欧美精品综合在线观看| 亚洲日韩av片在线观看| 国产精品久久久久久久久人妻| 亚洲高清无码视频网站在线| 精品卡一卡二卡3卡高清乱码| 亚洲殴美国产日韩av| 夜夜爽夜夜叫夜夜高潮| 国产一在线精品一区在线观看| 少妇的肉体在线观看| 含紧一点h边做边走动免费视频| 亚洲av成人无码一二三在线观看| 国产精品久久久久av| 精品一二三区久久aaa片| 精品久久久无码人妻中文字幕| 久久精品无码一区二区三区不卡| 性欧美暴力猛交69hd| 欧美成人看片一区二区| 久久精品国产丝袜人妻| 高清破外女出血av毛片| 乱人妻人伦中文字幕| 无码人妻丰满熟妇区bbbbxxxx| 日日噜噜夜夜狠狠久久蜜桃| 无码av不卡免费播放| 无码gogo大胆啪啪艺术| 性欧美老人牲交xxxxx视频| 欧美群交射精内射颜射潮喷| 精品久久久久中文字幕app|