微机原理实验报告

2022-03-28 版权声明 我要投稿

报告具有汇报性、陈述性的特点,只有按照报告的格式,正确编写报告,报告才能发挥出它的作用。那么在写报告的时候,应该如何写才能突出的重要性呢?以下是小编整理的《微机原理实验报告》仅供参考,大家一起来看看吧。

第一篇:微机原理实验报告

微机原理实验报告封面

重 重 庆 交 通 大 学 学

学 学 生 实 验 报 告

实验课程名称

开课实验室

学院

年级

专业班

学 学 生 姓 名

开 开 课 时 间

学年第

学期

总 总 成 绩

教师签名

批改日期

第二篇:微机原理实验报告

学号: 学生姓名: 打印日期: 评分: 评语:

实验报告

COURSE PAPER 8255控制开关状态显示

学院 :机电工程与自动化学院

一、实验目的;

(本课程设计是在完成《微机原理与接口技术使用教程》知识后进行的一次综合性训练。通过本课程设计,既可以巩固对所学知识的理解和掌握,又可以培养解决实际问题的本领,也能够提高运用文字图表表达设计思想和对Proteus与Emu8086应用的能力。

二、实验要求;

(1)功能要求:设定8255的PA口为开关量输入,PB口为开关量输出,要求能随时将PA口的开关状态通过PB口的数码管显示出来,如开关为0000,则数码管显示为0;若开关为1111,则数码管显示为F。

(2)具体参数:将8255A的端口A设置为方式0并作为输入口,读取开关量,PB口设置为方式0作为输出口。并设定A、B、C口和控制口的地址为60H、62H、64H、66H。LED为共阴极连接方式。

(3)用Proteus画出实现上述功能的8086和8255及LED相关连接的硬件电路,编写相关程序,结合emu8086,完成仿真调试,给出硬件电路图、程序代码和仿真结果图。

三、实验说明;

 利用前期实验建立组态控制  组态软件的操作界面和主要功能;  混料罐工程或交通灯工程工程组态

四、实验步骤; (1)硬件设计

8255A的四个端口地址为60H、62H、64H、66H。其二进制码分别为0110 0000H、0110 0010H、0110 0100H、0110 0110H。则可以判断,8255A的A0与A1端口应该与8086的A1和A2端口对应。8086的A

7、A

4、A

3、A0为0,A

6、A5为1时,8255A接受指令。为完成上述操作,可以使用138译码器。8255A的A端口作为输入口,连接四位开关;B端口作为输出口,连接一个共阴极的LED显示管。

(2)硬件电路图

(3)汇编语言设计 assume cs:code code segment start: MOV DX,066H MOV AL,90H OUT DX,AL

AA: MOV BX, OFFSET TABL MOV DX,060H IN AL,DX AND AL,0FH XLAT MOV DX,062H OUT DX,AL JMP AA

TABL: DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H

code ends end start (4)实验结果

五、实验心得;

通过对proteus及emu8086软件的应用,可以使我将从课堂与书本上学习到的知识,以模拟的方式,制作成成品。在本次课外项目中,我对于8255A的工作方式以及8086如何控制其他元器件输入输出数据有了清晰的认识。通过使用模拟软件,我有了更多的方式去深入了解课本上的知识。

第三篇:北京理工大学微机原理实验报告_8259A

实验一8259中断控制器实验

一、 实验内容

用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。 二,实验目的

(1)掌握8259的工作原理。

(2)掌握编写中断服务程序的方法。 (3)掌握初始化中断向量的方法。 三, 实验步骤 (1)连线

1. 单脉冲发生器输出P+与8259的IR0相连; 2. 8259的片选CS8259与CS0相连; 3. 8259的INT与8086的INT相连; 4. 8259的INTA与8086的INTA相连; 5. CS273与CS1相连;

6. 00与LED0相连,01与LED1相连,依次将CS273接口与LED相连;其它线均已连好如下图:

DDBUSDD0VccDD1DD2DD3DD4DD5DD6DD7CS825913274LS32VccINTINTAVccIORDIOWRA1111098765427132161726D0D1D2D3D4D5D6D7A0CSRDWRSP/ENINTINTA8259IR0IR1IR2IR3IR4IR5IR6IR71819202122232425IR0IR1IR2IR3IR4IR5IR6IR7CAS0CAS1CAS2121314 (2)编辑程序,编译链接后,单步运行,调试程序。

(3)调试通过后,在中断服务程序的NOP处设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处,观察寄存器AX的值。 四,实验源程序如下

CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H

;写ICW1,单片8259A,要写0CW4 MOV AX,13H

OUT DX,AX MOV DX,4A2H ;写ICW2 MOV AX,80H

;IR0的中断向量码为80H OUT DX,AX MOV AX,01

OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI MOV AX,0 ;写OCW1 OUT DX,AX;允许中断

;中断向量存放在(0000H:0200H)开始的四个单元里 MOV AX,0

MOV DS,AX MOV SI,200H

;中断类型号为80H MOV AX,OFFSET HINT ;中断服务程序的入口地址 MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI

;开中断,设置IF=1 JMP $

;原地跳转

HINT:

;中断服务程序 XOR CX,0FFH;CX取反

MOV DX,4B0H;CS273接口的地址,与8个LED灯相连 MOV AX,CX;输出高低电平控制LED灯的亮灭 OUT DX,AX MOV DX,4A0H ;OCW2的地址

MOV AX,20H ;一般EOI命令,全嵌套方式 OUT DX,AX IRET ;中断返回

CODE ENDS END START 五, 实验思考题 1. 将P0连线连接到IR1—IR7任意一个;重新编写程序。

将P0接到了IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。程序如下:

CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H

;写ICW1,单片8259A,要写ocw4 MOV AX,13H

OUT DX,AX MOV DX,4A2H ;写ICW2 MOV AX,81H

;IR1的中断向量码为81H OUT DX,AX MOV AX,01

OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI MOV AX,0 ;写OCW1 OUT DX,AX;允许中断

;中断向量存放在(0000H:0204H)开始的四个单元里 MOV AX,0

MOV DS,AX MOV SI,204H

;中断类型号为81H MOV AX,OFFSET HINT ;中断服务程序的入口地址 MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI

;开中断,设置IF=1 JMP $

;原地跳转

HINT:

;中断服务程序

XOR CX,0FFH;CX取反

MOV DX,4B0H;CS273的地址

MOV AX,CX;输出高低电平控制LED灯的亮灭 OUT DX,AX

MOV DX,4A0H ;OCW2的地址

MOV AX,20H ;一般EOI命令,全嵌套方式 OUT DX,AX IRET ;中断返回 CODE ENDS END START 实验现象:运行程序,触发脉冲发生器产生中断请求,相应二极管点亮。 2. 设置OCW1,屏蔽某个中断请求,运行程序观察现象。

将IR0重新接入LED0,设置OCW1为01H,屏蔽中断IR0,则IR0的中断无法得到响应。程序如下:

CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H

;ICW1的地址,写初始化命令字ICW1 MOV AX,13H ;上升沿触发,单片8259,要写ICW4 OUT DX,AX MOV DX,4A2H ;ICW2的地址,写中断向量码ICW2 MOV AX,80H

;IR0的中断向量码为80H OUT DX,AX MOV AX,01

;写中断结束控制字ICW4 OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI MOV AX,01H

;写中断屏蔽字OCW1 OUT DX,AX;屏蔽IR0中断

;中断向量存放在(0000H:0200H)开始的四个单元里 MOV AX,0

MOV DS,AX MOV SI,200H

;中断类型号为80H MOV AX,OFFSET HINT ;中断服务程序的入口地址 MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI

;开中断,设置IF=1 JMP $

;原地跳转

HINT:

;中断服务程序

XOR CX,0FFH;CX取反

MOV DX,4B0H;CS273的地址

MOV AX,CX;输出高低电平控制LED灯的亮灭 OUT DX,AX

MOV DX,4A0H ;OCW2的地址

MOV AX,20H ;一般EOI命令,全嵌套方式 OUT DX,AX IRET

;中断返回

CODE ENDS END START 实验现象:

每按单脉冲发生器一次产生一次中断申请,但连接的发光二极管一直不亮。 3.

设置OCW2,了解中断结束方式与设置优先权。 将IR0和IR1都连接到P+上,分别连接LED0和LED1到00和01。OCW2将 E0OCW2一般EOI命令,将IR0设置为最低中断优先级。程序如下:

CODE

SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H

;ICW1的地址 MOV AX,13H

;上升沿触发,单片8259,要写ICW4 OUT DX,AX MOV DX,4A2H ;ICW2的地址 MOV AX,80H ;中断向量码为80H,低3位自动写入 OUT DX,AX MOV AX,01

;写ICW4 OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI MOV AX,0

;写OCW1 OUT DX,AX;允许所有中断

;IR0的中断向量存放在(0000H:0200H)开始的四个单元里 MOV

AX,0

MOV

DS,AX MOV

SI,200H MOV

AX,OFFSET HINT1 MOV

DS:[SI],AX ADD

SI,2 MOV

AX,CS MOV

DS:[SI],AX STI

;开中断,设置IF=1 ;IR1的中断向量存放在(0000H:0204H)开始的四个单元里 MOV

AX,0

MOV

DS,AX MOV

SI,204H MOV

AX,OFFSET HINT2 MOV

DS:[SI],AX ADD SI,2 MOV

AX,CS MOV

DS:[SI],AX JMP $

;原地跳转

HINT1:;中断服务程序1 XOR CX,0F0H ;CX高4位取反 MOV DX,4B0H;CS273的地址

MOV AX,CX ;输出高低电平控制LED灯的亮灭 OUT DX,AX MOV DX,4A0H ;OCW2的地址

MOV AX,E0H ;一般EOI命令,IR0优先级最低 OUT DX,AX IRET

;中断返回

HINT2:

;中断服务程序2 XOR CX,00FH ;CX低4位取反 MOV DX,4B0H;CS273的地址

MOV AX,CX;输出高低电平控制LED灯的亮灭 OUT DX,AX MOV DX,4A0H ;OCW2的地址

MOV AX,E0H ;一般EOI命令,IR0优先级最低 OUT DX,AX IRET

;中断返回 CODE ENDS END START 实验现象:CS273的00与LED0相连,01与LED1相连,02与LED2相连,依次下去,直至07与LED7相连。每按单脉冲发生器一次产生一次中断申请,由于IR0的优先级比IR1低,故先响应IR1,后响应IR0,观察到低4位的LED灯先点亮或熄灭,高4位的LED灯后点亮或熄灭。 六, 实验心得

实验让我对8259A的内部寄存器的功能有了更深的认识,掌握了8259A的初始化步骤及其工作方式的选择,以及中断服务程序的编写。使用实验箱和编译软件,使我们在编程和动手操作方面都有了很大的提高,软硬件的结合,使我们更加透彻的理解了所学知识。

第四篇: 微机原理与接口技术实验总结

11107108

徐寒黎

一、 实验内容以及设计思路

1、①试编写一程序,比较两个字符串STRING

1、 STRING2 所含字符是否相同,若相同输出“MATCH”,若不相同输出 “NO MATCH”。 设计思路:定义一个数据段,在数据段中定义两个字符串作为STRING

1、 STRING2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以及少量语句:第一步将STRING1和STRING2都实现用键盘输入,方法是

MOV DX,OFFSET STRING2 MOV AH,0AH INT 21H 并且显示在显示器上,显示方法将0AH改成09H,语句与上面类似。 然后进行比较第一个单元, MOV AL,[STRING1+1] CMP AL,[STRING2+1] JNZ NOMATCH 若字符串长度不等,则直接跳转,输出输出 “NO MATCH”; 若长度相等再逐个比较 LEA SI,[STRING1+2] LEA DI,[STRING2+2] MOV CL,[STRING1+1] MOV CH,0 CLD REPE CMPSB JCXZ MATCH,意思是全部相同就跳转MATCH,输出“MATCH”;不然进入下面的NOMATCH。退出。

②试编写求级数1^3+2^3 +3^3 …..前几项和刚大于10000的程序。

设计思路:原先编写的程序,设定和为10000,结果是14。但要求高一点的话,可以自己设置,实现用键盘输入和的值。

一个难点是将输入的ASCII码字符串,转换成与之相同的十进制数的数值。 关键的思路部分是:从1开始求级数,将和的值存在AX里,要加下一项级数前,比如这时已经加到4,PUSH一下AX,然后将5乘三遍,将乘积MOV到BX里,再POP AX,然后将BX的值加到AX里,然后将AX与N比较,如果比N小就继续上述步骤,知道刚比N大就输出数字。

③试编写一程序,完成字符串中各字符出现频度的统计,统计结果在屏幕上输出。

设计思路:因为这个程序需要统计所有的字符,所以首先要定义一个存储区,用来存放26个字符以及每个字符出现的个数。用键盘控制输入字符串以后,将字符串的第一个字符与这二十六个字符逐个比较,若有相同,在存放相应次数的存储单元的值上加1。然后比较第二个字符,依次类推,将字符串里的字符全部比较完。将个数大于1的字符以及字符的个数都输出到屏幕上。退出语句。 缺点和不足:这样需要定义一个非常繁的存储区。可以根据输入的字符,然后进行比较和统计。

④设计一个动画程序。

设计思路:这个程序参考了网上的资料,没有什么新意,是小鸟的图形,可以用上下左右键进行移动,可以退出。

步骤:首先设置堆栈段,数据段,代码段,设置显示方式等一些属性,设置背景色,设置小鸟的初始位置以及写出小鸟图形的像素的点。功能性的语句是,用键盘接受一个输入,将其与1bh比较,用JZ语句跳转到退出。若不是便与48h比较,看是否为向上,是则跳转到相应语句,不是则继续与50h比较;,看是否向下,是则跳转到关于向下移动的相关语句,否则再与4bh比较,看是否向左,依次类推,根据键盘输入的上下左右跳转到不同的语句。再将小鸟的位置进行与上下左右键的输入相应的移动。

最后编写好退出语句。

2、硬件接口主要是了解8255与8253的功能,以及控制字。 ①I/O地址译码

只要对硬件概念清晰,很简单的。基本上没有什么创造性。 收获:熟悉实验箱结构,了解每部分元件和标注的意义。 掌握I/O地址译码电路的工作原理。 ②可编程定时器8253 1,对照实验电路图,将计数器0设置为方式0,即数初值设为N(N<0fh),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并用逻辑笔观察OUT0点平变化。

2,将计数器0、计数器1分别设置为方式3,计数初值设为1000用逻辑笔观察out1输出电平的变化。

收获:掌握8253的基本工作原理和编程方法

③并行接口8255 1,试验电路如图所示,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。 3,数码管静态显示:按下图接好电路,将8255A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接5V(选中),S0和dp接地(关闭)。编程从键盘输入一位十进制数(0-9),在七段数码管上显示。

4,数码管动态显示:按下图接好电路,七段数码管的连接不变,位码驱动输入端S

1、S0接8255 C口的PC1和PC0。编程在两个数码管上显示“56”。

动态显示时,先送“5”的段码送A口,再送02h到C口为位码;经一定延时后,送“6”的段码送A口,再送01h到C口为位码。循环完成,可以显示数码。 5,数码管动态显示(选做):同图接好电路,编程在两个数码管上显示循环显示“00-99”。 只要搞清楚各个口的地址,以及选择适当的控制字,其实很简单的。

收获:掌握8255的基本工作原理和编程方法,对方式0的认识加深了。

二、 试验中遇到的问题 1在编写程序时,我深深体会到,画程序框图的重要性,每一步跳转的条件一定要搞清楚,Y和N不能搞反了,否则就错了。

2实验2,里面涉及的寄存器很多,很容易就会用乱了,还是很需要注意的。 3比如那个小鸟动画的题目,当时在控制左右移动的时候,选择的起始位置的语句没写对位置,每次按一个移位的键以后,都从最初的初始位置向某个方向移动。

4硬件方面的,一开始没搞懂地址什么意思,所以连线时很懵懂,后来清楚了,发现就没什么了。

三、心得感受

微机原理与接口技术的课程实验历时大半个学期,通过自己编写、运行程序,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。

前四个简单程序设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。

后面几个实验是并行输入输出接口8255和计数器8253的功能的操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在自己的思考以及和同学的讨论中,终于迎刃而解。

第五篇:微机原理实验三子程序设计实验

实验三 子程序设计实验

一、实验目的

1.学习子程序的定义和调用方法。 2.掌握子程序的程序设计、编制及调用。

二、实验设备

TDN86/88教学实验系统一台

三、实验内容及步骤

1.求无符号字节序列中的最大值和最小值

设有一字节序列,其存储首址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下:

主程序STACK1SEGMENT STACK

开始DW 64 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1:JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

结束序列的字节个数→CX数据区首址→SI调用求最大最小值子程序 MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3

Y子程序CX=0?NSI、CX、BX入栈[SI]→BHBH→BLSI+1→SI[SI]→ALNAL﹤BHAL→BHMOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX

YAL﹥BLYCX-1→CXNNAL→BLCX=0?POP SI A4: RET CODE ENDS END START

实验步骤

(1) 输入源程序,进行编译、链接和加载。

YSI、CX、BX出栈RET

(2) 在调试区键入E0000:3000↙,输入8个字节的数据:D

9、0

7、8B、C

5、EB、0

4、9D、F9。

(3) 运行程序,查看结果,在调试区键入R AX↙,显示结果应为AX=F9 04,AH中为最大值,AL中为最小值。

2.数组求和

设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工作由子程序来实现。

程序:

STACK1 SEGMENT STACK DW 64 DUP(?) STACK1 ENDS CODE

SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H XOR AX,AX CALL branch A5: JMP A5 branch: JCXZ A4 PUSH SI

PUSH CX A1: ADD AL,[SI] INC SI A3: LOOP A1

POP CX POP SI A4: RET CODE

ENDS END START

8个01,总和为08

第六篇:微机原理红绿灯课程设计报告

实验报告 2009-09-02 18:16:02 阅读1337 评论2 字号:

大中小

要:

介绍了基于8255A的交通灯系统设计方案,重点论述了软件系统的编写方法。实际结果表明该系统方案切实可行。

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结

构软硬件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用8255A芯片实现了A、B口设置红、绿灯点亮时间的功能;红绿灯循环点亮,红绿灯变换之间,黄灯闪烁5秒

关键字: 交通灯、软件系统

设计内容 本次课程设计是交通灯实时控制器,主要是用发光二极管模拟十字路口的红绿灯,如下图所示。交通灯控制器的设计与实现主要是通过编写汇编语言程序利用8255的A口和B口对灯的亮与灭进行控制。由于实验室的仪器上只有16个发光二极管,所以还得弄清楚是每个发光二极管所代表的灯的颜色及方向。16个发光二级管,且从高到低依次为:D15D14D13D12D11D10D9D8 D7D6D5D4D3D2D1D0。在设计的过程中做了如下的规定:R表示红灯,G表示绿灯,Y表示黄灯,E表示方向东,W表示方向西,S表示方向南,N表示方向北,D15D14表示ER,D13D12表示SR,D11D10表示EG,D9D8表示SG,D7D6表示WR,D5D4表示NR,D3D2表示WG,D1D0表示NG,D15D14D11D10表示EY,D7D6D3D2表示WY,D13D12D9D8表示SY,D5D4D1D0

表示NY。 交通灯控制示意图 具体时间的分配和控制如下:

东西方向绿灯亮,南北方向红灯亮,时间20秒 东西方向黄灯闪烁,南北方向红灯亮,时间5秒 东西方向红灯亮,南北方向绿灯亮,时间20秒 东西方向红灯亮,南北方向黄灯闪烁,时间5秒

设计器材设备 微机、TD-PIT++实验箱

实验电路图 设计流程图

总体设计过程

1.根据选择题目的要求,结合所参考的资料,选择8255单元芯片以及LED显示单元电路。

1)

电路元器件的选择 可编程并行通信接口芯片8255 2)

完成8255单元电路的设计及参数计算

8255的A口地址是:IOY0+00H*4

B口地址是:IOY0+01H*4 C口地址是:IOY0+02H*4 控制端口地址是:IOY0+03H*4

2.

软件流程图的设计 3.

电路接线图的设计 4.

软件的设计(程序见附录) 1)

芯片初始化,写8255的方式字 2)

延时,延时是通过设置指令的循环次数实现的 3)

东西方向绿灯亮,南北方向红灯亮,时间20秒 4)

东西方向黄灯闪烁,南北方向红灯亮,时间5秒 5)

东西方向红灯亮,南北方向绿灯亮,时间20秒 6)

东西方向红灯亮,南北方向黄灯闪烁,时间5秒

7) 判断是否有键按下 8)

返回到DOS 5.

进行软硬件调试

因采用了pc机和微机原理实验箱,硬件电路设计相对比较简单,利用微机实验箱上的8255并行口、发光二级管,便构成了交通灯控制系统。

心得体会

通过这次课程设计,加强了我的动手、思考和分析解决问题的能力。在整个设计过程中,我们按照老师给出的总体方案设计了一套电路原理和电路连接图。通过查阅各方面资料我们编写了程序代码,并通过了调试,最终证实了该系统

方案确实可行。 在设计过程中,了解了很多元器件的功能,并且对于其在电路中的使用有了更多的认识。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做,难免会遇到过各种各样的问题,同时也在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢

固。

这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能够真正掌握理论知识,从而提高自己的实际动手能力和独立思考的能力。

附录(程序代码)

IOY0 EQU 0E000H PORTA EQU IOY0+00H*4 PORTB EQU IOY0+01H*4 PORTK EQU IOY0+03H*4 STACK1 SEGMENT STACK DW 256 DUP(?)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE START: MOV AL, 80H MOV DX, PORTK ;8255工作在方式0,

A、B口均输出

OUT DX, AL MOV AL, 3CH MOV DX, PORTA ;A口东方向绿灯亮,

南方向红灯亮

OUT DX, AL MOV AL, 3CH MOV DX, PORTB ;B口西方向绿灯亮,

北方向红灯亮

OUT DX, AL CALL DELAY ;调用20s延时子程序

MOV CX, 5 START1: MOV AL, 0FCH MOV DX, PORTA ;A口东方向黄灯亮,

南方向红灯亮

OUT DX, AL MOV AL, 0FCH MOV DX, PORTB ;B口西方向黄灯亮,

北方向红灯亮

OUT DX, AL CALL DELAY1 ;调用0.5s延时子程序

MOV AL, 30H MOV DX, PORTA ;A口东方向黄灯灭,

南方向红灯亮

OUT DX, AL MOV AL, 30H MOV DX, PORTB ;B口西方向黄灯灭,

北方向红灯亮

OUT DX, AL CALL DELAY1 ;调用延时0.5s子程序

LOOP START1 ;CX≠0则循环

MOV AL, 0C3H MOV DX, PORTA ;A口东方向红灯亮,

南方向绿灯亮

OUT DX, AL MOV AL, 0C3H MOV DX, PORTB ;B口西方向红灯亮,

北方向绿灯亮

OUT DX, AL CALL DELAY ;调用20s延时子程序

MOV CX, 5 START2: MOV AL, 0F3H MOV DX, PORTA ;A口东方向红灯亮,

南方向黄灯亮

OUT DX, AL MOV AL, 0F3H MOV DX, PORTB ;B口西方向红灯亮,

北方向黄灯亮

OUT DX, AL CALL DELAY1 ;调用0.5s延时子程序

MOV AL, 0C0H MOV DX, PORTA ;A口东方向红灯亮,

南方向黄灯灭

OUT DX, AL MOV AL, 0C0H MOV DX, PORTB ;B口西方向红灯亮,

北方向黄灯灭

OUT DX, AL CALL DELAY1 ;调用0.5s延时子程序

LOOP START2 MOV AH, 1 INT 16H JZ START ;判断是否有键按下,无

按键则

QUIT: MOV AX, 4C00H 调回继续循环,有

则退出

INT 21H DELAY PROC NEAR ;20s延时子程序

PUSH CX PUSH DX PUSH BX

MOV BX, 3 MOV DX, 27880 LAB: MOV CX, 0FFFFH

LOOP $ DEC DX JNZ LAB DEC BX JNZ LAB POP BX

POP DX POP CX RET DELAY ENDP PROC NEAR ;0.5s延时子程序 PUSH CX PUSH DX MOV DX, 6970 LAB1: MOV CX, 0FFFFH DELAY1

LOOP $ DEC DX

JNZ LAB1 POP DX POP CX RET DELAY1 ENDP CODE ENDS END START

上一篇:问题汇报下一篇:未成年社会调查报告