微机原理与接口技术交通灯设计.docx

上传人:b****7 文档编号:10210881 上传时间:2023-02-09 格式:DOCX 页数:12 大小:54.26KB
下载 相关 举报
微机原理与接口技术交通灯设计.docx_第1页
第1页 / 共12页
微机原理与接口技术交通灯设计.docx_第2页
第2页 / 共12页
微机原理与接口技术交通灯设计.docx_第3页
第3页 / 共12页
微机原理与接口技术交通灯设计.docx_第4页
第4页 / 共12页
微机原理与接口技术交通灯设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术交通灯设计.docx

《微机原理与接口技术交通灯设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术交通灯设计.docx(12页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术交通灯设计.docx

微机原理与接口技术交通灯设计

《微机原理与接口技术》课程设计

 

姓名:

*******

班级学号:

*******

任课老师:

*******

 

一、实验课题

《交通信号灯控制系统》

二、实验目的

在熟悉8086/8088指令系统的基础上,掌握8086/8088汇编语言程序设计方法;掌握8259可编程中断控制器,8255可编程并行接口、8253可编程定时/计数器的应用

三、实验要求

1、模拟交通信号灯(分A、B两组)的红、黄、绿灯(实验箱中的发光二极管)交替变换的过程。

2、在实验箱的LED显示器上显示当前剩余时间(每秒更新一次,倒计时)。

A组、B组之间时间关系如下:

A组

B组

绿灯

26秒

红灯

30秒

黄灯

4秒

红灯

30秒

绿灯

26秒

黄灯

4秒

 

四、实验设备

PC机一台、实验箱一个(8086、8259、8255、8253芯片及相关电路、发光二极管六只)及导线若干。

五、设计

1、设计思路

(1)分析问题——各端口应用——代码实现

(2)具体应用(8255的B口做灯信号的输出,A口做位选码的输出,C口做LED的输出。

(3)实验内容

1、系统中,8259采用初始化命令字ICW1、ICW2、ICW4和操作命令字OCW1,允许内部中断IRQ0和外部中断IRQ1

2、系统中,8255选用(10000000)方式选择字,A组工作0方式,A端口输出,PC3-PC7输出,B组0方式,B端口输出,PC3-PC0输出

3、系统中,8253选用(00110101)选择零号端口读写两个字节,工作方式2(频率发生器)二十进制

2、程序流程

 

 

3、电路原理图

 

 

 

 

 

4、设计代码

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

TIMERDB00H,30H;IRQ0中断次数,通行剩余时间(A道30秒,B道30秒)初始设为B道通行

TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段码,用于显示时间,顺序不可调换

DISOFFDB00H,00H,00H,00H;LED显示器缓冲区,数字(剩余时间)的个位和十位

RODDB00H;当前道路通行状态(00:

为A通行道;01为B通行)

LIGHTDB0D7H;信号灯的输出信号(11010111)

KK1DB00H;暂停开关KK1计数

LIGHTZTDB00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,0000H;数据段清零

MOVDS,AX

;填写中断向量表

MOVAX,OFFSETIRQ0;提取IRQ0的中断处理程序的偏移地址

ADDAX,2000H;加载时IP=2000H(绝对地址)

MOVSI,0020H;中断号0的矢量地址为(20H-23H)

MOV[SI],AX;填写中断处理程序的偏移地址写进中断向量表

MOVAX,0000H

MOVSI,0022H

MOV[SI],AX;填写中断处理程序的段地址写进中断向量表

MOVAX,OFFSETIRQ1

ADDAX,2000H

MOVSI,0024H;中断号1的矢量地址为(24H-27H)

MOV[SI],AX

MOVAX,0000H

MOVSI,0026H

MOV[SI],AX

;加载数据段

MOVAX,DATA

MOVDS,AX

;8259初始化

MOVAL,13H;8259初始化ICW1(00010011)单片方式需写ICW4

OUT20H,AL;端地址A0=0

MOVAL,08H;ICW2(00001000)中断向量号的高五位(000001)

OUT21H,AL

MOVAl,01H;ICW4(00000001)一般全嵌套,非缓冲,非自动中断结束,十六位机系统

OUT21H,AL;特征位:

D7-D5=000

MOVAL,0FCH;OCWl允许IRQ0、IRQ1中断

OUT21H,AL

;8255初始化

MOVAL,80H;(10000000)方式选择字,A组工作0方式,A端口输出,PC3-PC7输出,B组0方式,B端口输出,PC3-PC0输出

OUT63H,AL

;初始化8253

MOVAL,35H;(00110101)选择零号端口读写两个字节,工作方式2(频率发生器)二十进制

OUT43H,AL

MOVAX,380;定时(频率乘以时间)

OUT40H,AL;低字节

MOVAL,AH

OUT40H,AL;高字节

STI;开中断(允许CPU接收中断)

M:

CALLDISP2

CMPKK1,1

JZZT;调用时间显示函数

CMPTIMER+1,04H;判断是否到了最后4秒,到了则跳转

JZR1

CMPTIMER+1,00H;判断通行时间是否结束,到了则跳转

JZR2

JMPDISP1;如时间大于五秒,则直接按当前方式显示信号灯

R1:

CMPROD,00H;如到了最后五秒,则判断是A道通行否?

ROD=00H为A道

JZR12;如是A道通行,则改变状态

R11:

MOVLIGHT,7BH;(01111110)改变为A道红,B道黄

JMPDISP1;信号输出

R12:

MOVLIGHT,0B7H;(10110111)改变为A道黄,B道红

JMPDISP1

R2:

CMPROD,00H;改变通行状态

JZR22

R21:

MOVLIGHT,0D7H;如果当前B道通行结束,则切换为A道

MOVROD,00H

MOVTIMER+1,30H;A道通行时间30秒

JMPDISP1

R22:

MOVROD,01H;如果当前A道通行结束,则切换为B道ROD=01H为B道

MOVLIGHT,7DH

MOVTIMER+1,30H

JMPDISP1;B道通行时间30秒

ZT:

JMPM

DISP1:

;灯信号输出函数

MOVAL,LIGHT;将灯信号输出到8255的B口

OUT61H,AL

STI

JMPM

IRQ0:

PUSHAX;现场保护

PUSHCX

PUSHF

MOVAL,TIMER;取80次中断请求为一秒

INCAL

MOVTIMER,AL

CMPAL40H;1秒判断?

JNEM1;不到则跳转

MOVAL,00H;毫秒数清零

MOVTIMER,AL

MOVAL,TIMER+1;剩余时间减1

SUBAL,01H

DAS;调整为压缩BCD码

MOVTIMER+1,AL

M1:

MOVAL,20H;中断复位

OUT20H,AL

POPF

POPCX

POPAX

STI

IRET

IRQ1:

;暂停(恢复)

PUSHAX

PUSHF

MOVAL,KK1

CMPAL,00H;判断当前的状态:

00为通行,01为暂停

JNEM2

INCAL;改变当前状态

MOVKK1,AL

MOVAL,0FDH;(11111101)关IRQ0中断,开IRQ1中断

OUT21H,AL

MOVAL,LIGHT

MOVLIGHTZT,AL;///////////////////////////////////////////////////////////

MOVAL,77H;(01110111)大、小道均为红灯

OUT61H,AL

JMPM3

M2:

;恢复

MOVAL,00H

MOVKK1,AL

MOVAX,LIGHTZT;//////////////////////////////////////////////////////////////////

OUT61H,AL

MOVAL,0FCH;(11111100)开IRQ0、IRQ1中断

OUT21H,AL

STI

M3:

MOVAL,20H

OUT20H,AL

POPF

POPAX

STI

IRET

DISP2:

;时间显示函数

MOVAL,TIMER+1;AL=30HAX=?

30H

ANDAL,0FH;AX=0000H

MOVDISOFF+3,AL;DISOFF+3=00HDISOFFDB03H,00H,03H,00H

MOVDISOFF+1,AL;DISOFF+1=00H

MOVAL,TIMER+1;AL=30H

MOVCL,04H;CL=04H

SHRAL,CL;AL=03H

MOVDISOFF+2,AL;DISOFF+2=03H

MOVDISOFF,AL;DISOFF=03H

MOVSI,OFFSETDISOFF;缓冲区的偏移地址

MOVDL,0F7H;(11110111)将位选码初值送DL

MOVAL,DL;AL=0F7H

AGAIN:

OUT60H,AL;从A口输出位选码

MOVAL,[SI]

MOVBX,OFFSETTAB;七段码的偏移地址AX=0003HBX=TAB

ANDAX,00FFH

XLAT;MOVAL,BX+[AX];将显示七段码送AL

OUT62H,AL;将AL转换成七段码从B口输出

CALLDALLY;调用延时1ms子程序

INCSI;SI=SI+1

MOVAL,DL

TESTAL,01H;4位显示完否?

JZM4

RORAL,01H;DL循环右移一位

MOVDL,AL

JMPAGAIN

M4:

RET

DALLY:

;循环256次

MOVCX,0010H;延时子程序

T1:

MOVAX,0010H

T2:

DECAX

JNZT2

LOOPT1

RET

CODEENDS

ENDSTART

六、心得体会

这周关于交通灯的设计是对我来说就是一次挑战,虽然说代码并非是我自己写的,可以说我是参考别人的,但是理解所有的设计代码我确实也花了不少时间,我除了要熟悉8259、8255、8253这些芯片,还得将它们合理的利用起来,由于之前对汇编知识的掌握相当差,理解起来是相当的困难,但是庆幸的事,我向同学和老师咨询中吸收了不少知识。

虽然说之前在课上学了这些理论知识,但如果没在实践中利用,你根本就不会发现自己到底是不是真的掌握了,这次我算是明白了,很多一部分的知识还是需要我自己在课下去补充。

在学习中,我们总是存在着局限性,在实践中,我们也存在着被动性,这些都是需要我们改正的地方。

实践是建在理论知识的基础上,所以当你要做一个实验时,没有一定的理论知识是不够的,和合理的将二者结合。

每次实践也是一次经验的积累,人只有在积累经验中方能成长。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1