8255A控制交通灯完整实验.docx
《8255A控制交通灯完整实验.docx》由会员分享,可在线阅读,更多相关《8255A控制交通灯完整实验.docx(8页珍藏版)》请在冰点文库上搜索。
8255A控制交通灯完整实验
8255A控制交通灯完整实验
二○一一~二○一二学年第二学期
信息科学与工程学院
课程设计报告书
课程名称:
微机原理课程设计
班级:
电子信息工程2009级6班
学号:
200904135150
姓名:
张强
指导教师:
徐守明
二○一二年二月二十日
8255A控制交通灯实验
一、实验流程图如下:
1、主程序流程图
2、中断服务程序(以外部中断0为例)
1、
2、的设计延时程序,需要知道时钟周期,状态周期,机器周期的概念以及循环程序设计的基本思路。
3、8255A编程,实验中应该先写控制字后写方式字。
这里需要指出的是,硬件连线时一定要严格按照8255A的控制字连线,也就是地址分配问题。
AT89S52的P2口在实验中做地址线,充当地址高8位,P0口既做地址线也做数据线,做地址线时充当地址低8位。
4、8255A选择A口时,不能直接把A0,A1接地,而应该用地址赋值语句给A0,A1赋值,使其同时为低电平,选中A口。
四、实验程序如下:
;*********8255PA口的次低三位是南北路口。
次高三位是东西路口*********
ORG0000H
LJMPSTART
ORG0003H;外部中断0的中断程序入口地址
LJMPKEY1;转外部中断0中断服务程序
ORG0013H;外部中断1的中断程序入口地址
LJMPKEY2;转外部中断1中断服务程序
START:
SETBIT0;INTO为边沿触发
SETBIT1
SETBEX0;启动T0
SETBEX1
SETBEA;开总中断
MOVDPTR,#03FFH
MOVA,#80H
MOVX@DPTR,A
S1:
MOVA,#10111101B
MOVDPTR,#00FFH
MOVX@DPTR,A;第一种状态:
东西红灯亮,南北绿灯亮
CALLDELAY5S;5秒延时
S2:
MOVA,#10111011B;第二种状态:
东西红灯亮,南北黄灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S;0.2秒延时
MOVA,#10111111B;东西红灯亮,南北黄灯灭,黄灯第一次闪烁
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#10111011B;第二种状态:
东西红灯亮,南北黄灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#10111111B;东西红灯亮,南北黄灯灭,黄灯第二次闪烁
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#10111011B;第二种状态:
东西红灯亮,南北黄灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#10111111B;东西红灯亮,南北黄灯灭,黄灯第次闪烁
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
S3:
MOVA,#11100111B;第三种状态:
东西绿灯亮,南北红灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY5S
S4:
MOVA,#11010111B;第四种状态:
东西黄灯亮,南北红灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#11110111B;东西黄灯灭,南北红灯亮,第一次闪烁
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#11010111B;第四种状态:
东西黄灯亮,南北红灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#11110111B;东西黄灯灭,南北红灯亮,第二次闪烁
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#11010111B;第四种状态:
东西黄灯亮,南北红灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
MOVA,#11110111B;东西黄灯灭,南北红灯亮,第三次闪烁
MOVDPTR,#00FFH
MOVX@DPTR,A
CALLDELAY1S
AJMPS1;跳转到状态S1状态,循环
DELAY5S:
;延时5秒
MOVR7,#100
L0:
MOVR6,#100
L1:
MOVR5,#248
L2:
DJNZR5,L2
DJNZR6,L1
DJNZR7,L0
RET
DELAY1S:
;延时0.5秒
MOVR4,#200
L3:
MOVR3,#248
L4:
DJNZR3,L4
DJNZR4,L3
RET
;*****************紧急处理1:
东西红灯亮,南北绿灯亮*****************************
KEY1:
PUSHPSW
MOVA,#10111101B;紧急处理1:
东西红灯亮,南北绿灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
MOVR7,#100;延时5S
LCALLL0
;POPPSW;注意这里不能把POP弹出堆栈段,弹出就不对
RETI;返回中断位置执行下一条指令
;*****************紧急处理2:
东西红灯亮,南北绿灯亮****************************
KEY2:
PUSHPSW
MOVA,#11100111B;紧急处理2:
东西红灯亮,南北绿灯亮
MOVDPTR,#00FFH
MOVX@DPTR,A
MOVR7,#100;延时5S
LCALLL0
;POPPSW
RETI;返回中断位置执行下一条指令
END