Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305163
  • 博文数量: 65
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 284
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-21 15:10
文章分类
文章存档

2016年(3)

2015年(51)

2014年(8)

2013年(3)

分类: 嵌入式

2015-04-13 17:02:04

/******************************************************************************

交通灯控制程序说明文档

******************************************************************************/

1、  protues进行原理图绘制

2、  keil软件进行代码编写与调试

3、  Keil + protues进行仿真实验

4、  处理器采用Atmel公司的AT89C51,晶振频率12MHz,源代码用汇编语言编写

5、  主要控制思想:简单交通灯,只涉及东西南北四个方向车辆控制,不考虑转向问题,流程图

6、原理图

7、源代码
ORG 0000H


MOV P1, #00H
MOV P2, #00H   ;初始化,灯泡全灭
ST: CLR P2.1   ;南北黄灯灭
CLR P2.4
CLR P1.2   ;东西红灯灭
CLR P1.5
SETB P1.0   ;东西绿灯亮
SETB P1.3
SETB P2.2   ;南北红灯亮
SETB P2.5
LCALL DELAY0


CLR P1.0   ;东西绿灯灭黄灯亮
CLR P1.3
SETB P1.1   ;东西黄灯亮
SETB P1.4
LCALL DELAY1


CLR P1.1   ;东西黄灯灭
CLR P1.4
SETB P1.2   ;东西红灯亮
SETB P1.5
CLR P2.2   ;南北红灯灭
CLR P2.5
SETB P2.0   ;南北绿灯亮
SETB P2.3
LCALL DELAY0


CLR P2.0  ;南北绿灯灭
CLR P2.2
SETB P2.1  ;南北黄灯亮
SETB P2.4
LCALL DELAY1
LJMP ST ;跳转到开始,循环执行


DELAY0: MOV R0, #200 ;二级延时子程序,延时200*0.1 = 20s
DD0: LCALL DELAY ;调用一级延时子程序0.1s,
DJNZ R0, DD0 ;执行200次
RET


DELAY1: MOV R0, #20 ;二级延时子程序,延时20*0.1 = 2s
DD1: LCALL DELAY   ;调用一级延时子程序0.1s, 
DJNZ R0, DD1 ;执行20次
RET


DELAY: MOV R1, #200 ;一级延时子程序,延时200*250*2 = 100000us = 0.1s
D1: MOV R2, #250
D0: DJNZ R2, D0
DJNZ R1, D1
RET


END

阅读(1721) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~