- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
杭州电子科技大学单片机技术与应用实验报告
单片机技术与应用 实验报告
实验名称:外部中断实验(急救车与交通灯)
班
学
姓
级:
号:
名:
11061118
吕琳涛
指导老师:
谷雨
2013 年 5 月 20 日
第 1 页 共
页
杭州电子科技大学单片机技术与应用实验报告
1. 实验要求
由 以 74LS273 作 为 输 出 口 , 控 制 4 个 双 色 LED 灯 ( 可 发 红 , 绿 ,
黄 光 ) , 模 拟 交 通 灯 管 理 , 并 允 许 急 救 车 优 先 通 过 的 要 求 。 有 急 救 车 到
达 时 , 两 向 交 通 信 号 为 全 红 , 以 便 让 急 救 车 通 过 。 假 定 急 救 车 通 过 路 口 时 间 为 10 秒 , 急 救 车 通 过 后 , 交 通 灯 恢 复 中 断 前 状 态 。 本 实 验 以 按 键 为 中 断 申 请 , 表 示 有 急 救 车 通 过 。
2. 实验目的
学 习 外 部 中 断 技 术 的 基 本 使 用 方 法 。
学 习 中 断 处 理 程 序 的 编 程 方 法 。
程序说明:
在本次实验中,我们可以确定外部中断的作用是用于有救护车行驶过
来时对程序的进行的简单的控制。对于正常的红绿灯的亮灭我们可以参考
第一个实验中流水灯的设计理念。综上所述我们这一次的实验就是流水灯 与外部中断的结合。
通过对七种情况的罗列
1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 1 1 1 011 0 1 1 11 0 0 0 0 0 1 1 0 0 0 0 0 1 00 1
0 0 0 0 1 1 1 1
南北绿,东西红 南北红,东西绿 只亮东西红 只亮南北红 南北黄,东西红 南北红,东西黄 全红
我们可以利用 XBYTE[0xf200]这个函数对这几种情况进行读取与显示,
在不同情况进行显示的过程中我们用以前的 delay 函数进行时间上的规划 从而达到依次显示的效果。
0x0f 全红
0x96 南北绿,东西红 0x9f 只亮东西红
XBYTE[0xf200]=0x0f;
XBYTE[0xf200]=0x96;
XBYTE[0xf200]=0x9f;
第 2 页 共
页
杭州电子科技大学单片机技术与应用实验报告
0x06
0x69
0x6f
0x09
南北黄,东西红 南北红,东西绿 只亮南北红 南北红,东西黄
XBYTE[0xf200]=0x06;
XBYTE[0xf200]=0x69;
XBYTE[0xf200]=0x6f;
XBYTE[0xf200]=0x09;
在具体的实验代码编写过程中,我们会用到
EA=1;EX0=1;IT0=1;用于
设定外部中断 0 为跳变沿触发方式,默认为电平触发方式。 interrupt 0 函数 是处理有救护车驶过时的情况。
至此,程序编写完成,放入软件中进行编译和下载。
2. 上机调试说明
将程序编写成功后,我们就上机进行调试。
第 3 页 共
页
杭州电子科技大学单片机技术与应用实验报告
下载成功后,拨动 k7 这个拨动开关形成外部中断的信号,在单片机的
实验板上我们可以清楚地看到随着时间灯南北东西的一对一对的红黄绿的 交替闪烁。
然后以按键开光来表示救护车的通过,然后看见所有的灯都变成红色。 至此实验仿真过程结束。
3. 写出源程序清单及执行结果。
源程序:
#include reg52.h
#includeabsacc.h //可使用其中定义的宏来访问绝对地址
#include intrins.h
#define uchar unsigned char·
#define uint unsigned int
void delay(uint xms)
{
unsigned int i,j;
for(i=xms;i0;i--)
for(j=110;j0;j--);
}
void main()
{
EA=1;
EX0=1;
IT0=1; //设定外部中断 0 为跳变沿触发方式,默认为电平触发方式 IP=0x01; //外部中断 0 设置为高优先级中断
XBYTE[0xf200]=0x0f; //单片机端口 P1 输出 0xf200 绝对物理地址,全红 delay(5000); //延时 5s
while(1)
{
XBYTE[0xf200]=0x96; //南北绿,东西红
delay(5000); //持续 5s,之后为绿灯闪烁(绿转黄) XBYTE[0xf200]=0x9f;
delay(1000); //闪烁频率为 1s
XBYTE[0xf200]=0x96;
delay(1000);
XBYTE[0xf200]=0x9f;
原创力文档


文档评论(0)