交通灯倒计时程序_第1页
交通灯倒计时程序_第2页
交通灯倒计时程序_第3页
交通灯倒计时程序_第4页
交通灯倒计时程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、;交通灯控制器实例;功能:使用6只LED模拟交通灯控制器 ;SOUTH_RED EQU P1.0 SOUTH_YELLOW EQU P1.1 SOUTH_GREEN EQU P1.2 EAST_RED EQU P1.3 EAST_YELLOW EQU P1.4 EAST_GREEN EQU P1.5 SECOND_FLAG BIT 00H TIME_COUNT0 DATA 30H TIME_COUNT1 DATA 31H STATUS_FLAG DATA 32H SECOND_COUNT DATA 33HORG 0000H;伪指令,指定程序从0000H开始存放LJMP MAIN;跳转指令,程序

2、跳转到MAIN处ORG 000BH;伪指令,指定程序从T0入口地址000BH开始存放LJMP T0_INT;跳转指令,程序跳转到T0_INT处ORG 0100HMAIN:MOV SP,#60H;给堆栈指针赋初值LCALL INIT;调用状态初始化子程序LCALL T0_INIT ;调用定时器中断初始化子程序LOOP:JNB SECOND_FLAGLOOP ;根据 SECOND_FLAG 值判断 0.5 秒是否到LCALL STATUS_CHANGE ;每0.5秒调用交通灯状态转换子程序CLR SECOND_FLAG ;清零 SECOND_FLAGSJMP LOOP;跳转,程序继续STATUS_

3、CHANGE:; 交通灯状态转换子程序;MOV A,STATUS_FLAG ;根据 STATUS_FLAG 值进行散转ADD A,STATUS_FLAGMOV DPTR,#STATUS_PROC_TABLEJMP A+DPTRSTATUS_PROC_TABLE:AJMP STATUS1AJMP STATUS2AJMP STATUS3AJMP STATUS4AJMP STATUS5AJMP STATUS6STATUS1:;散转子程序1;状态1:南北绿灯,东西红灯,持续20秒;然后转到状态2;DJNZ SECOND_COUNT,STATUS1_EXITMOV SECOND_COUNT,#6 ;20

4、秒定时到,转换到状态2MOV STATUS_FLAQ#01HSTATUS1_EXIT:RETSTATUS2:;散转子程序2;状态2:南北绿灯闪,东西红灯,持续3秒;然后转到状态3;DJNZ SECOND_COUNT,STATUS2_EXITMOV SECOND_COUNT,#4 ;3秒定时到,转换到状态3MOV STATUS_FLAQ#02HSETB SOUTH_RED ;南北红灯灭CLR SOUTH_YELLOW ;南北黄灯亮SETB SOUTH_GREEN ;南北绿灯灭CLR EAST_RED ;东西红灯亮SETB EAST_YELLOW ;东西黄灯灭SETB EAST_GREEN ;东西

5、绿灯灭RETSTATUS2_EXIT:CPL SOUTH_GREEN ;南北绿灯闪RETSTATUS3:;散转子程序3;状态3:南北黄灯,东西红灯,持续2秒;然后转到状态4;DJNZ SECOND_COUNT,STATUS3_EXITMOV SECOND_COUNT,#40 ;2秒定时到,转换到状态4MOV STATUS_FLAG#03HCLR SOUTH_RED ;南北红灯亮SETB SOUTH_YELLOW ;南北黄灯灭SETB SOUTH_GREEN ;南北绿灯灭SETB EAST_RED ;东西红灯灭SETB EAST_YELLOW ;东西黄灯灭CLR EAST_GREEN ;东西绿灯

6、亮STATUS3_EXIT:RETSTATUS4:; 散转子程序4;状态4:南北红灯,东西绿灯,持续20秒;然后转到状态5;DJNZ SECOND_COUNT,STATUS4_EXITMOV SECOND_COUNT,#6 ;20秒定时到,转换到状态5MOV STATUS_FLAG#04HSTATUS4_EXIT:RETSTATUS5:;散转子程序5;状态5:南北红灯,东西绿灯闪,持续3秒;然后转到状态6;DJNZ SECOND_COUNT,STATUS5_EXITMOV SECOND_COUNT,#4 ;3秒定时到,转换到状态6MOV STATUS_FLAG#05HCLR SOUTH_RED

7、 ;南北红灯亮SETB SOUTH_YELLOW ;南北黄灯灭SETB SOUTH_GREEN ;南北绿灯灭SETB EAST_RED ;东西红灯灭CLR EAST_YELLOW ;东西黄灯亮SETB EAST_GREEN ;东西绿灯灭RETSTATUS5_EXIT:CPL EAST_GREEN ;东西绿灯闪RETSTATUS6:散转子程序6;状态6:南北红灯,东西黄灯,持续2秒;然后转到状态1;DJNZ SECOND_COUNT,STATUS6_EXITMOV SECOND_COUNT,#40 ;2秒定时到,转换到状态1MOV STATUS_FLAQ#00HSETB SOUTH_RED ;南

8、北红灯灭SETB SOUTH_YELLOW ;南北黄灯灭CLR SOUTH_GREEN ;南北绿灯亮CLR EAST_RED ;东西红灯亮SETB EAST_YELLOW ;东西黄灯灭SETB EAST_GREEN ;东西绿灯灭STATUS6_EXIT:RETINIT:;状态初始化子程序;SETB SOUTH_RED ;南北红灯灭SETB SOUTH_YELLOW ;南北黄灯灭CLR SOUTH_GREEN ;南北绿灯亮CLR EAST_RED ;东西红灯亮SETB EAST_YELLOW ;东西黄灯灭SETB EAST_GREEN ;东西绿灯灭MOV TIME_COUNT0,#250 ;变量

9、 TIME_COUNT0 赋初值 250MOV TIME_COUNT1,#8 ;变量 TIME_COUNT1 赋初值 8MOV SECOND_COUNT,#40 变量 SECOND_COUNT 赋初值 40MOV STATUS_FLAQ#00H ;变量 STATUS_FLAG 赋初值 00HCLR SECOND_FLAG ;清零位变量 SECOND_FLAGRETT0_INT:; T0中断服务程序;每 0.5 秒置一 SECOND_FLAG;DJNZ TIME_COUNT0,T0_INT_EXITMOV TIME_COUNT0,#250DJNZ TIME_COUNT1,T0_INT_EXITM

10、OV TIME_COUNT1,#8SETB SECOND_FLAG ;定时 0.5 秒到,置一 SECOND_FLAG T0_INT_EXIT:RETIT0_INIT:; 定时器T0的初始化;MOV TMOD,#00000010B ;定时器T0工作在方式2MOV TL0,#06H;设定定时器T0的初始值MOV TH0,#06H;设定定时器T0的自动重装入值MOV TCON,#00010000B ;定时器 T0 使能SETB EA;中断允许总控制位使能SETB ET0 ;T0中断使能RETEND数码管倒计时的汇编程序:NUM DATA 10HORG 0000HSTART:MOVNUM,#9HMOVR1,#255HMOVR2,#250HLOOP:MOVA,NUMMOVDPTR,#TABLEMOVCA,A+DPTRMOVP1,ALCALLDELAYDJNZNUM,LOOP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论